@tienne/gestalt 0.90.1 → 0.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/plugin/skills/architecture/SKILL.md +27 -2
- package/dist/schemas/architecture-ir.schema.json +20 -0
- package/dist/src/architecture/compare-layout.d.ts.map +1 -1
- package/dist/src/architecture/compare-layout.js +1 -0
- package/dist/src/architecture/compare-layout.js.map +1 -1
- package/dist/src/architecture/dataflow-layout.d.ts.map +1 -1
- package/dist/src/architecture/dataflow-layout.js +1 -0
- package/dist/src/architecture/dataflow-layout.js.map +1 -1
- package/dist/src/architecture/drilldown.d.ts.map +1 -1
- package/dist/src/architecture/drilldown.js +1 -0
- package/dist/src/architecture/drilldown.js.map +1 -1
- package/dist/src/architecture/html-client.d.ts +8 -0
- package/dist/src/architecture/html-client.d.ts.map +1 -1
- package/dist/src/architecture/html-client.js +312 -23
- package/dist/src/architecture/html-client.js.map +1 -1
- package/dist/src/architecture/html-renderer.d.ts.map +1 -1
- package/dist/src/architecture/html-renderer.js +240 -15
- package/dist/src/architecture/html-renderer.js.map +1 -1
- package/dist/src/architecture/html-theme.d.ts +2 -0
- package/dist/src/architecture/html-theme.d.ts.map +1 -1
- package/dist/src/architecture/html-theme.js +68 -1
- package/dist/src/architecture/html-theme.js.map +1 -1
- package/dist/src/architecture/ir-schema.d.ts +66 -26
- package/dist/src/architecture/ir-schema.d.ts.map +1 -1
- package/dist/src/architecture/ir-schema.js +9 -0
- package/dist/src/architecture/ir-schema.js.map +1 -1
- package/dist/src/architecture/kind-text.d.ts +10 -0
- package/dist/src/architecture/kind-text.d.ts.map +1 -1
- package/dist/src/architecture/kind-text.js +17 -0
- package/dist/src/architecture/kind-text.js.map +1 -1
- package/dist/src/architecture/layout.d.ts +5 -0
- package/dist/src/architecture/layout.d.ts.map +1 -1
- package/dist/src/architecture/layout.js +14 -3
- package/dist/src/architecture/layout.js.map +1 -1
- package/dist/src/architecture/merge.d.ts.map +1 -1
- package/dist/src/architecture/merge.js +9 -0
- package/dist/src/architecture/merge.js.map +1 -1
- package/dist/src/architecture/packs/data.d.ts +14 -0
- package/dist/src/architecture/packs/data.d.ts.map +1 -1
- package/dist/src/architecture/packs/data.js +11 -7
- package/dist/src/architecture/packs/data.js.map +1 -1
- package/dist/src/architecture/packs/generic.d.ts +7 -0
- package/dist/src/architecture/packs/generic.d.ts.map +1 -1
- package/dist/src/architecture/packs/generic.js +13 -6
- package/dist/src/architecture/packs/generic.js.map +1 -1
- package/dist/src/architecture/packs/harness.d.ts +10 -0
- package/dist/src/architecture/packs/harness.d.ts.map +1 -1
- package/dist/src/architecture/packs/harness.js +18 -6
- package/dist/src/architecture/packs/harness.js.map +1 -1
- package/dist/src/architecture/packs/index.d.ts +110 -0
- package/dist/src/architecture/packs/index.d.ts.map +1 -1
- package/dist/src/architecture/packs/infra.d.ts +10 -0
- package/dist/src/architecture/packs/infra.d.ts.map +1 -1
- package/dist/src/architecture/packs/infra.js +9 -4
- package/dist/src/architecture/packs/infra.js.map +1 -1
- package/dist/src/architecture/packs/knowledge.d.ts +8 -0
- package/dist/src/architecture/packs/knowledge.d.ts.map +1 -1
- package/dist/src/architecture/packs/knowledge.js +8 -4
- package/dist/src/architecture/packs/knowledge.js.map +1 -1
- package/dist/src/architecture/packs/process.d.ts +10 -0
- package/dist/src/architecture/packs/process.d.ts.map +1 -1
- package/dist/src/architecture/packs/process.js +14 -5
- package/dist/src/architecture/packs/process.js.map +1 -1
- package/dist/src/architecture/packs/types.d.ts +6 -0
- package/dist/src/architecture/packs/types.d.ts.map +1 -1
- package/dist/src/architecture/packs/web-product.d.ts +51 -0
- package/dist/src/architecture/packs/web-product.d.ts.map +1 -1
- package/dist/src/architecture/packs/web-product.js +94 -33
- package/dist/src/architecture/packs/web-product.js.map +1 -1
- package/dist/src/architecture/sequence-layout.d.ts.map +1 -1
- package/dist/src/architecture/sequence-layout.js +1 -0
- package/dist/src/architecture/sequence-layout.js.map +1 -1
- package/dist/src/architecture/sequence-views.d.ts +155 -0
- package/dist/src/architecture/sequence-views.d.ts.map +1 -0
- package/dist/src/architecture/sequence-views.js +407 -0
- package/dist/src/architecture/sequence-views.js.map +1 -0
- package/dist/src/architecture/types.d.ts +15 -0
- package/dist/src/architecture/types.d.ts.map +1 -1
- package/dist/src/architecture/types.js +4 -0
- package/dist/src/architecture/types.js.map +1 -1
- package/dist/src/architecture/validator.d.ts +9 -1
- package/dist/src/architecture/validator.d.ts.map +1 -1
- package/dist/src/architecture/validator.js +102 -1
- package/dist/src/architecture/validator.js.map +1 -1
- package/dist/src/mcp/tools/architecture-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/architecture-passthrough.js +3 -1
- package/dist/src/mcp/tools/architecture-passthrough.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
- package/plugin/skills/architecture/SKILL.md +27 -2
- package/schemas/architecture-ir.schema.json +20 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BAND_LINE_X, BAND_LINE_Y, BAND_TITLE_HALF, BAND_TITLE_X } from './canvas-geometry.js';
|
|
2
2
|
import { FOCUS_SOURCE } from './focus.js';
|
|
3
3
|
import { PRODUCT_COLORS } from './html-theme.js';
|
|
4
|
-
import { FRAME_PAD } from './layout.js';
|
|
4
|
+
import { FRAME_PAD, NODE_DESC_LINE } from './layout.js';
|
|
5
5
|
// component는 칩 글자를 노드의 displayKind에서, 색과 아이콘은 renderClass에서 가져온다. types.ts의 displayKindOf, chipTextOverride와 같은 규칙이다.
|
|
6
6
|
// 이 조각은 component를 쓸 수 있는 어휘에만 싣는다. 늘 실으면 component가 없는 그림의 바이트까지 바뀐다
|
|
7
7
|
const COMPONENT_DKIND = "n.kind === 'component' ? 'cx_' + (n.renderClass || 'service') : ";
|
|
@@ -150,7 +150,10 @@ const VIEW_CLICK = `var vm = e.target.closest('.link.seq-m');
|
|
|
150
150
|
const VIEW_KEY = `var vm = e.target.closest('.link.seq-m');
|
|
151
151
|
if (vm) { e.preventDefault(); activateMessage(vm); return; }
|
|
152
152
|
`;
|
|
153
|
-
|
|
153
|
+
// 순서도 보기 바가 화면 위를 덮으면 머리 카드는 그 바 아래에 붙인다
|
|
154
|
+
const STICK_FROM = '-view.y / view.k';
|
|
155
|
+
const SEQ_STICK_FROM = '(seqTop() - view.y) / view.k';
|
|
156
|
+
const viewFuncs = (sequences) => ` var messages = data.messages || {};
|
|
154
157
|
// 전체 레벨은 지도 위 카드 줄만큼 내려가 있다. 같은 이름으로 다시 선언해 그 거리를 더한 쪽이 쓰이게 한다
|
|
155
158
|
function cardCenter(c) {
|
|
156
159
|
var s = c.closest('.level');
|
|
@@ -162,7 +165,7 @@ const VIEW_FUNCS = ` var messages = data.messages || {};
|
|
|
162
165
|
if (!bar) return;
|
|
163
166
|
var top = parseFloat(bar.style.top);
|
|
164
167
|
var end = Number(active.getAttribute('data-h')) - top - bar.offsetHeight;
|
|
165
|
-
var dy = Math.min(Math.max(0,
|
|
168
|
+
var dy = Math.min(Math.max(0, ${sequences ? SEQ_STICK_FROM : STICK_FROM} - top), Math.max(0, end));
|
|
166
169
|
var t = dy > 0 ? 'translateY(' + dy + 'px)' : '';
|
|
167
170
|
bar.style.transform = t;
|
|
168
171
|
bar.classList.toggle('stuck', dy > 0);
|
|
@@ -198,6 +201,184 @@ const VIEW_POP = ` setupPop('views-btn', 'views');
|
|
|
198
201
|
var viewsPop = byId('views');
|
|
199
202
|
if (viewsPop) viewsPop.addEventListener('click', function (e) { if (e.target.closest('a')) closePops(false); });
|
|
200
203
|
`;
|
|
204
|
+
// 순서도 보기 조각. 순서도가 있는 그림에만 싣는다.
|
|
205
|
+
// 단계별 카드와 따라가기는 순서도 섹션 옆 형제 섹션(.seq-alt)이고 data-level-id가 없어 레벨 목록에 안 잡힌다.
|
|
206
|
+
// 보기는 레벨마다 페이지 메모리에만 둔다. 주소에 실으면 보기 전환이 뒤로가기 기록을 채운다
|
|
207
|
+
const SEQ_FUNCS = ` var seqBar = byId('seq-bar');
|
|
208
|
+
var seqSteps = byId('seq-steps');
|
|
209
|
+
var seqCap = seqBar.querySelector('.seq-cap');
|
|
210
|
+
var seqPlayBtn = seqBar.querySelector('.sw-play');
|
|
211
|
+
var seqSay = seqCap.querySelector('.sw-say');
|
|
212
|
+
var seqModeBtns = Array.prototype.slice.call(seqBar.querySelectorAll('button[data-seq-mode]'));
|
|
213
|
+
var seqAlts = Array.prototype.slice.call(doc.querySelectorAll('.seq-alt'));
|
|
214
|
+
var seqBase = null;
|
|
215
|
+
var seqMode = 'seq';
|
|
216
|
+
var seqModes = {};
|
|
217
|
+
var seqAt = {};
|
|
218
|
+
var seqN = 0;
|
|
219
|
+
var seqTimer = 0;
|
|
220
|
+
function seqNarrow() { return window.matchMedia('(max-width: 860px)').matches; }
|
|
221
|
+
function seqTop() { return seqBar.hidden ? 0 : seqBar.offsetTop + seqBar.offsetHeight; }
|
|
222
|
+
function seqInset() {
|
|
223
|
+
var r = { t: 0, r: 0, b: 0 };
|
|
224
|
+
if (seqBar.hidden) return r;
|
|
225
|
+
r.t = seqTop();
|
|
226
|
+
if (!seqSteps.hidden) {
|
|
227
|
+
if (seqNarrow()) r.b = seqSteps.offsetHeight + 16;
|
|
228
|
+
else r.r = seqSteps.offsetWidth + 16;
|
|
229
|
+
}
|
|
230
|
+
return r;
|
|
231
|
+
}
|
|
232
|
+
function seqBaseId() { return seqBase ? seqBase.getAttribute('data-level-id') : null; }
|
|
233
|
+
function seqAlt(mode) {
|
|
234
|
+
var id = seqBaseId();
|
|
235
|
+
for (var i = 0; i < seqAlts.length; i++) {
|
|
236
|
+
if (seqAlts[i].getAttribute('data-seq-of') === id && seqAlts[i].getAttribute('data-seq-mode') === mode) return seqAlts[i];
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
function seqList() {
|
|
241
|
+
var id = seqBaseId();
|
|
242
|
+
var lists = seqSteps.querySelectorAll('.ss-list');
|
|
243
|
+
for (var i = 0; i < lists.length; i++) if (lists[i].getAttribute('data-seq-of') === id) return lists[i];
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
function seqTotal() {
|
|
247
|
+
var walk = seqAlt('walk');
|
|
248
|
+
return walk ? walk.querySelectorAll('.w-step').length : 0;
|
|
249
|
+
}
|
|
250
|
+
function seqStop() {
|
|
251
|
+
if (seqTimer) clearInterval(seqTimer);
|
|
252
|
+
seqTimer = 0;
|
|
253
|
+
seqPlayBtn.setAttribute('aria-pressed', 'false');
|
|
254
|
+
seqSay.setAttribute('aria-live', 'polite');
|
|
255
|
+
}
|
|
256
|
+
// 보기 바가 두 줄로 접히면 목록이 그 아래에서 시작해야 안 겹친다. 창 폭이 바뀌면 다시 잰다
|
|
257
|
+
function seqPlaceSteps() {
|
|
258
|
+
seqSteps.style.top = !seqSteps.hidden && !seqNarrow() ? seqTop() + 8 + 'px' : '';
|
|
259
|
+
}
|
|
260
|
+
function seqLeave() {
|
|
261
|
+
seqStop();
|
|
262
|
+
seqAlts.forEach(function (s) { s.hidden = true; });
|
|
263
|
+
seqBar.hidden = true;
|
|
264
|
+
seqSteps.hidden = true;
|
|
265
|
+
seqBase = null;
|
|
266
|
+
}
|
|
267
|
+
function showStep(n) {
|
|
268
|
+
var walk = seqAlt('walk');
|
|
269
|
+
var total = seqTotal();
|
|
270
|
+
if (!walk || !total) return;
|
|
271
|
+
seqN = Math.max(1, Math.min(total, n));
|
|
272
|
+
seqAt[seqBaseId()] = seqN;
|
|
273
|
+
var on = null;
|
|
274
|
+
walk.querySelectorAll('.w-step').forEach(function (p) {
|
|
275
|
+
var hit = Number(p.getAttribute('data-n')) === seqN;
|
|
276
|
+
p.classList.toggle('on', hit);
|
|
277
|
+
if (hit) on = p;
|
|
278
|
+
});
|
|
279
|
+
var from = on.getAttribute('data-from');
|
|
280
|
+
var to = on.getAttribute('data-to');
|
|
281
|
+
walk.querySelectorAll('.node').forEach(function (c) {
|
|
282
|
+
var id = c.getAttribute('data-node-id');
|
|
283
|
+
c.classList.toggle('w-dim', id !== from && id !== to);
|
|
284
|
+
});
|
|
285
|
+
var item = null;
|
|
286
|
+
var list = seqList();
|
|
287
|
+
if (list) list.querySelectorAll('button[data-n]').forEach(function (b) {
|
|
288
|
+
if (Number(b.getAttribute('data-n')) === seqN) { b.setAttribute('aria-current', 'step'); item = b; }
|
|
289
|
+
else b.removeAttribute('aria-current');
|
|
290
|
+
});
|
|
291
|
+
seqCap.querySelector('.sw-n').textContent = seqN + ' / ' + total;
|
|
292
|
+
seqCap.querySelector('.sw-p').textContent = item ? item.getAttribute('data-phase') : '';
|
|
293
|
+
seqCap.querySelector('.sw-t').textContent = item ? item.getAttribute('data-say') : '';
|
|
294
|
+
var block = seqCap.querySelector('.sw-b');
|
|
295
|
+
block.textContent = item ? item.getAttribute('data-block') : '';
|
|
296
|
+
block.hidden = !block.textContent;
|
|
297
|
+
if (item) item.scrollIntoView({ block: 'nearest' });
|
|
298
|
+
}
|
|
299
|
+
function applySeqMode(mode, refit) {
|
|
300
|
+
if (!seqBase) return;
|
|
301
|
+
seqStop();
|
|
302
|
+
closeDrawer(false);
|
|
303
|
+
if (active) clearLit(active);
|
|
304
|
+
seqMode = mode;
|
|
305
|
+
seqModes[seqBaseId()] = mode;
|
|
306
|
+
seqBase.hidden = mode !== 'seq';
|
|
307
|
+
var alt = mode === 'seq' ? null : seqAlt(mode);
|
|
308
|
+
seqAlts.forEach(function (s) { s.hidden = s !== alt; });
|
|
309
|
+
active = alt || seqBase;
|
|
310
|
+
if (envPicker) applyEnv(active);
|
|
311
|
+
seqModeBtns.forEach(function (b) { b.setAttribute('aria-pressed', String(b.getAttribute('data-seq-mode') === mode)); });
|
|
312
|
+
var walking = mode === 'walk';
|
|
313
|
+
seqCap.hidden = !walking;
|
|
314
|
+
seqSteps.hidden = !walking;
|
|
315
|
+
var list = seqList();
|
|
316
|
+
seqSteps.querySelectorAll('.ss-list').forEach(function (l) { l.hidden = l !== list; });
|
|
317
|
+
seqPlaceSteps();
|
|
318
|
+
if (walking) showStep(seqAt[seqBaseId()] || 1);
|
|
319
|
+
syncFocusBtn();
|
|
320
|
+
if (refit) {
|
|
321
|
+
fit('smart');
|
|
322
|
+
runSearch(false);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
function syncSeqBar(id) {
|
|
326
|
+
seqStop();
|
|
327
|
+
var base = sectionOf(id);
|
|
328
|
+
var has = !!base && seqAlts.some(function (s) { return s.getAttribute('data-seq-of') === id; });
|
|
329
|
+
seqAlts.forEach(function (s) { s.hidden = true; });
|
|
330
|
+
seqBar.hidden = !has;
|
|
331
|
+
seqSteps.hidden = true;
|
|
332
|
+
seqBase = has ? base : null;
|
|
333
|
+
if (has) applySeqMode(seqModes[id] || 'seq', false);
|
|
334
|
+
}
|
|
335
|
+
function seqPlay() {
|
|
336
|
+
if (seqTimer) { seqStop(); return; }
|
|
337
|
+
if (seqN >= seqTotal()) showStep(1);
|
|
338
|
+
// 단추 이름은 '재생' 그대로 두고 눌림 상태로만 알린다. 이름까지 바꾸면 낭독기가 상태를 거꾸로 읽는다
|
|
339
|
+
seqPlayBtn.setAttribute('aria-pressed', 'true');
|
|
340
|
+
// 재생 중에 단계마다 읽어 주면 낭독이 밀려 쌓인다. 멈추면 seqStop이 되돌린다
|
|
341
|
+
seqSay.setAttribute('aria-live', 'off');
|
|
342
|
+
seqTimer = setInterval(function () {
|
|
343
|
+
// 마지막 단계는 재생을 먼저 끝내고 그린다. aria-live가 polite로 돌아온 뒤에 써야 낭독기가 읽는다
|
|
344
|
+
var next = seqN + 1;
|
|
345
|
+
if (next >= seqTotal()) { seqStop(); showStep(next); return; }
|
|
346
|
+
showStep(next);
|
|
347
|
+
}, 900);
|
|
348
|
+
}
|
|
349
|
+
seqBar.addEventListener('click', function (e) {
|
|
350
|
+
var b = e.target.closest('button');
|
|
351
|
+
if (!b) return;
|
|
352
|
+
var mode = b.getAttribute('data-seq-mode');
|
|
353
|
+
// 보기를 바꾼 뒤에도 키보드로 같은 바에서 이어 고를 수 있게 누른 단추에 포커스를 둔다
|
|
354
|
+
if (mode) { if (mode !== seqMode) { applySeqMode(mode, true); b.focus(); } return; }
|
|
355
|
+
if (b.classList.contains('sw-prev')) { seqStop(); showStep(seqN - 1); }
|
|
356
|
+
else if (b.classList.contains('sw-next')) { seqStop(); showStep(seqN + 1); }
|
|
357
|
+
else if (b.classList.contains('sw-play')) seqPlay();
|
|
358
|
+
});
|
|
359
|
+
seqSteps.addEventListener('click', function (e) {
|
|
360
|
+
var b = e.target.closest('button[data-n]');
|
|
361
|
+
if (!b) return;
|
|
362
|
+
seqStop();
|
|
363
|
+
showStep(Number(b.getAttribute('data-n')));
|
|
364
|
+
});
|
|
365
|
+
// 다른 탭에 가 있는 동안 단계가 혼자 넘어가 있지 않게 멈춘다
|
|
366
|
+
doc.addEventListener('visibilitychange', function () { if (doc.hidden) seqStop(); });
|
|
367
|
+
`;
|
|
368
|
+
const SEQ_FIT = `
|
|
369
|
+
var sq = seqInset();
|
|
370
|
+
W -= sq.r;
|
|
371
|
+
H -= sq.t + sq.b;`;
|
|
372
|
+
// ←, →는 따라가기 보기가 떠 있고 포커스가 보기 바, 단계 목록, 따라가기 지도 안이거나 아무 데도 없을 때만 단계를 넘긴다.
|
|
373
|
+
// 그 밖의 자리에서는 스크롤 같은 브라우저 기본 동작을 그대로 둔다
|
|
374
|
+
export const SEQ_KEYS = ` if ((e.key === 'ArrowLeft' || e.key === 'ArrowRight') && seqBase && seqMode === 'walk' && !seqBar.hidden &&
|
|
375
|
+
(t === doc.body || seqBar.contains(t) || seqSteps.contains(t) || !!(seqAlt('walk') && seqAlt('walk').contains(t)))) {
|
|
376
|
+
e.preventDefault();
|
|
377
|
+
seqStop();
|
|
378
|
+
showStep(seqN + (e.key === 'ArrowRight' ? 1 : -1));
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
`;
|
|
201
382
|
export const THEME_STORAGE_KEY = 'gestalt-architecture-theme';
|
|
202
383
|
const HINT_STORAGE_KEY = 'gestalt-architecture-hint';
|
|
203
384
|
// 첫 화면을 그리기 전에 저장한 테마를 걸어야 밝은 화면이 한 번 번쩍이지 않는다
|
|
@@ -226,8 +407,12 @@ export function renderClientScript(c) {
|
|
|
226
407
|
var MICRO_HOSTS = {};
|
|
227
408
|
(data.microHosts || []).forEach(function (id) { MICRO_HOSTS[id] = true; });
|
|
228
409
|
var KIND_TEXT = ${JSON.stringify(c.kindText)};
|
|
410
|
+
var KIND_ABOUT = ${JSON.stringify(c.kindAbout)};
|
|
229
411
|
var EVIDENCE_TEXT = ${JSON.stringify(c.evidenceText)};
|
|
230
412
|
var LANE_TITLE = ${JSON.stringify(c.laneTitles)};
|
|
413
|
+
var LANE_ABOUT = ${JSON.stringify(c.laneAbout)};
|
|
414
|
+
var STAGE_LANE_ABOUT = ${JSON.stringify(c.stageLaneAbout)};
|
|
415
|
+
var NODE_DESC_LINE = ${NODE_DESC_LINE};
|
|
231
416
|
var GUESS = ${JSON.stringify(c.inferredBadge)};
|
|
232
417
|
var PLATFORM_CHIP = ${JSON.stringify(c.platformChip)};
|
|
233
418
|
var PLATFORM_NAME = ${JSON.stringify(c.platformName)};
|
|
@@ -526,6 +711,86 @@ ${FOCUS_SOURCE}
|
|
|
526
711
|
panel.appendChild(body);
|
|
527
712
|
openDrawer();
|
|
528
713
|
}
|
|
714
|
+
// 환경 필터로 숨긴 카드는 화면에 없으니 목록에서도 뺀다
|
|
715
|
+
function connectionList(body, id, incoming) {
|
|
716
|
+
var list = data.edges.filter(function (e) {
|
|
717
|
+
var other = incoming ? e.from : e.to;
|
|
718
|
+
return (incoming ? e.to : e.from) === id && other !== id && !envHidden(other);
|
|
719
|
+
});
|
|
720
|
+
if (!list.length) return;
|
|
721
|
+
body.appendChild(el('h3', null, (incoming ? '들어오는 연결 ' : '나가는 연결 ') + list.length + '개'));
|
|
722
|
+
var otherOf = {};
|
|
723
|
+
list.forEach(function (e) { otherOf[e.id] = incoming ? e.from : e.to; });
|
|
724
|
+
refButtons(body, list.map(function (e) { return e.id; }), function (eid) { goToNode(otherOf[eid]); },
|
|
725
|
+
function (eid) { return 'i-' + dkind(nodes[otherOf[eid]]); },
|
|
726
|
+
function (eid) { return label(otherOf[eid]) + ' (' + kindText(edges[eid].kind) + ')'; });
|
|
727
|
+
}
|
|
728
|
+
// 선은 레벨 엣지에서 먼저 찾는다. 포함 선은 드릴다운이 만든 것이라 IR 엣지 표에 없다
|
|
729
|
+
function edgeOf(id) {
|
|
730
|
+
var level = levels[levelIdOf(active)];
|
|
731
|
+
return (level && level.edgeById[id]) || edges[id] || null;
|
|
732
|
+
}
|
|
733
|
+
function renderEdgePanel(g) {
|
|
734
|
+
var id = g.getAttribute('data-link-id');
|
|
735
|
+
var e = edgeOf(id);
|
|
736
|
+
if (!e) return;
|
|
737
|
+
var ir = edges[id];
|
|
738
|
+
active.querySelectorAll('.node.selected').forEach(function (x) { x.classList.remove('selected'); });
|
|
739
|
+
lightLink(active, g);
|
|
740
|
+
returnFocus = g;
|
|
741
|
+
selectedId = null;
|
|
742
|
+
syncFocusBtn();
|
|
743
|
+
panel.textContent = '';
|
|
744
|
+
panel.appendChild(panelHead('flow', 'u-link', kindText(e.kind), '', label(e.from) + ' → ' + label(e.to)));
|
|
745
|
+
var body = el('div', 'dr-body');
|
|
746
|
+
if (KIND_ABOUT[e.kind]) body.appendChild(el('p', 'desc', KIND_ABOUT[e.kind]));
|
|
747
|
+
var facts = el('ul', 'facts');
|
|
748
|
+
if (e.kind !== 'contains') factRow(facts, '선', e.lineStyle === 'dashed' ? '점선 (문서나 사람 말로만 확인)' : '실선 (코드나 스펙으로 확인)');
|
|
749
|
+
if (g.classList.contains('x-account')) factRow(facts, '계정', '계정을 넘는 연결이에요');
|
|
750
|
+
if (ir && ir.actions && ir.actions.length) factRow(facts, 'action', ir.actions.join(', '));
|
|
751
|
+
if (facts.childNodes.length) body.appendChild(facts);
|
|
752
|
+
body.appendChild(el('h3', null, '양 끝'));
|
|
753
|
+
refButtons(body, [e.from, e.to], goToNode, function (nid) { return 'i-' + dkind(nodes[nid]); }, label);
|
|
754
|
+
if (ir) evidenceList(body, ir.evidence);
|
|
755
|
+
else body.appendChild(el('p', 'desc', 'parent로 정한 포함 관계라 따로 근거가 없어요.'));
|
|
756
|
+
panel.appendChild(body);
|
|
757
|
+
openDrawer();
|
|
758
|
+
}
|
|
759
|
+
// 레인 제목과 rect.lane은 같은 순서로 그려진다. 포커스 화면과 환경 필터가 같은 짝짓기를 쓴다
|
|
760
|
+
function laneCards(t) {
|
|
761
|
+
var sec = t.parentNode;
|
|
762
|
+
var titles = Array.prototype.slice.call(sec.querySelectorAll('.lane-title'));
|
|
763
|
+
var r = sec.querySelectorAll('rect.lane')[titles.indexOf(t)];
|
|
764
|
+
if (!r) return [];
|
|
765
|
+
var x = parseFloat(r.getAttribute('x'));
|
|
766
|
+
var w = parseFloat(r.getAttribute('width'));
|
|
767
|
+
var ids = [];
|
|
768
|
+
sec.querySelectorAll('.node').forEach(function (c) {
|
|
769
|
+
var left = parseFloat(c.style.left);
|
|
770
|
+
if (left >= x && left < x + w && !c.classList.contains('env-off')) ids.push(c.getAttribute('data-node-id'));
|
|
771
|
+
});
|
|
772
|
+
return ids;
|
|
773
|
+
}
|
|
774
|
+
function laneAria(title, count) { return title + ' 레인, 카드 ' + count + '개'; }
|
|
775
|
+
function renderLanePanel(t) {
|
|
776
|
+
var laneId = t.getAttribute('data-lane-id') || '';
|
|
777
|
+
var title = t.firstChild ? t.firstChild.textContent : '';
|
|
778
|
+
var ids = laneCards(t);
|
|
779
|
+
active.querySelectorAll('.node.selected').forEach(function (x) { x.classList.remove('selected'); });
|
|
780
|
+
clearLit(active);
|
|
781
|
+
returnFocus = t;
|
|
782
|
+
selectedId = null;
|
|
783
|
+
syncFocusBtn();
|
|
784
|
+
panel.textContent = '';
|
|
785
|
+
panel.appendChild(panelHead('flow', 'u-legend', '레인', '', title));
|
|
786
|
+
var body = el('div', 'dr-body');
|
|
787
|
+
var about = laneId.indexOf('stage:') === 0 ? STAGE_LANE_ABOUT : LANE_ABOUT[laneId];
|
|
788
|
+
if (about) body.appendChild(el('p', 'desc', about));
|
|
789
|
+
body.appendChild(el('h3', null, '이 칸의 카드 ' + ids.length + '개'));
|
|
790
|
+
if (ids.length) refButtons(body, ids, focusCard, function (nid) { return 'i-' + dkind(nodes[nid]); }, label);
|
|
791
|
+
panel.appendChild(body);
|
|
792
|
+
openDrawer();
|
|
793
|
+
}
|
|
529
794
|
function renderPanel(id) {
|
|
530
795
|
if (isStep(id)) { renderStepPanel(id); return; }
|
|
531
796
|
var n = nodes[id];
|
|
@@ -573,6 +838,11 @@ ${FOCUS_SOURCE}
|
|
|
573
838
|
body.appendChild(actions);
|
|
574
839
|
}
|
|
575
840
|
if (n.description) body.appendChild(el('p', 'desc', n.description));
|
|
841
|
+
var about = KIND_ABOUT[dkind(n)];
|
|
842
|
+
if (about) {
|
|
843
|
+
body.appendChild(el('h3', null, '이 종류는'));
|
|
844
|
+
body.appendChild(el('p', 'desc', about));
|
|
845
|
+
}
|
|
576
846
|
renderFacts(n, body);${c.docs ? '\n renderDoc(n, body);' : ''}
|
|
577
847
|
if (flowsBySvc[id]) {
|
|
578
848
|
body.appendChild(el('h3', null, '흐름 ' + flowsBySvc[id].length + '개'));
|
|
@@ -582,6 +852,8 @@ ${FOCUS_SOURCE}
|
|
|
582
852
|
body.appendChild(el('h3', null, '이 항목이 나오는 흐름 단계 ' + stepsByRef[id].length + '개'));
|
|
583
853
|
refButtons(body, stepsByRef[id], goToNode, function () { return 'u-flow'; }, function (sid) { return stepFlow[sid].title + ' › ' + label(sid); });
|
|
584
854
|
}
|
|
855
|
+
connectionList(body, id, true);
|
|
856
|
+
connectionList(body, id, false);
|
|
585
857
|
body.appendChild(el('h3', null, '출처 ' + n.evidence.length + '개'));
|
|
586
858
|
var ul = el('ul', 'evidence');
|
|
587
859
|
n.evidence.forEach(function (ev) { ul.appendChild(renderEvidence(ev)); });
|
|
@@ -637,7 +909,7 @@ ${FOCUS_SOURCE}
|
|
|
637
909
|
var s = dims(active);
|
|
638
910
|
var W = stage.clientWidth;
|
|
639
911
|
var H = stage.clientHeight - (sheet.hidden ? 0 : sheet.offsetHeight + 16);
|
|
640
|
-
var M = 24
|
|
912
|
+
var M = 24;${c.sequences ? SEQ_FIT : ''}
|
|
641
913
|
var kw = (W - M * 2) / s.w;
|
|
642
914
|
var kh = (H - M * 2) / s.h;
|
|
643
915
|
var k = Math.min(kw, kh, 1);
|
|
@@ -648,7 +920,7 @@ ${FOCUS_SOURCE}
|
|
|
648
920
|
k = clampK(k);
|
|
649
921
|
view.k = k;
|
|
650
922
|
view.x = Math.max(M, (W - s.w * k) / 2);
|
|
651
|
-
view.y = top ? M : Math.max(M, (H - s.h * k) / 2);
|
|
923
|
+
view.y = ${c.sequences ? 'sq.t + (' : ''}top ? M : Math.max(M, (H - s.h * k) / 2)${c.sequences ? ')' : ''};
|
|
652
924
|
glide();
|
|
653
925
|
applyView();
|
|
654
926
|
}
|
|
@@ -857,7 +1129,7 @@ ${FOCUS_SOURCE}
|
|
|
857
1129
|
returnFocus = g;
|
|
858
1130
|
renderTransitionPanel(t);
|
|
859
1131
|
}
|
|
860
|
-
${c.views ?
|
|
1132
|
+
${c.views ? viewFuncs(!!c.sequences) : ''}${c.sequences ? SEQ_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('click', function (e) {
|
|
861
1133
|
if (suppressClick) { suppressClick = false; return; }
|
|
862
1134
|
var more = e.target.closest('.pb.more');
|
|
863
1135
|
if (more) { toggleProducts(more); return; }
|
|
@@ -873,6 +1145,10 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
873
1145
|
if (link) { activateBundle(link); return; }
|
|
874
1146
|
var ft = e.target.closest('.link.flow-t');
|
|
875
1147
|
if (ft) { activateTransition(ft); return; }
|
|
1148
|
+
var edge = e.target.closest('.link[data-link-id]');
|
|
1149
|
+
if (edge) { renderEdgePanel(edge); return; }
|
|
1150
|
+
var lane = e.target.closest('.lane-title[data-lane-id]');
|
|
1151
|
+
if (lane) { renderLanePanel(lane); return; }
|
|
876
1152
|
if (drawerOpen()) closeDrawer(false);
|
|
877
1153
|
});
|
|
878
1154
|
stage.addEventListener('dblclick', function (e) {
|
|
@@ -889,7 +1165,11 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
889
1165
|
var link = e.target.closest('.link.bundle');
|
|
890
1166
|
if (link) { e.preventDefault(); activateBundle(link); return; }
|
|
891
1167
|
var ft = e.target.closest('.link.flow-t');
|
|
892
|
-
if (ft) { e.preventDefault(); activateTransition(ft); }
|
|
1168
|
+
if (ft) { e.preventDefault(); activateTransition(ft); return; }
|
|
1169
|
+
var edge = e.target.closest('.link[data-link-id]');
|
|
1170
|
+
if (edge) { e.preventDefault(); renderEdgePanel(edge); return; }
|
|
1171
|
+
var lane = e.target.closest('.lane-title[data-lane-id]');
|
|
1172
|
+
if (lane) { e.preventDefault(); renderLanePanel(lane); }
|
|
893
1173
|
});
|
|
894
1174
|
|
|
895
1175
|
// 위치 표시
|
|
@@ -995,7 +1275,7 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
995
1275
|
if (active) active.querySelectorAll('.node.anchor').forEach(function (x) { x.classList.remove('anchor'); });
|
|
996
1276
|
renderCrumbs(trailItems(id));
|
|
997
1277
|
syncFlowBtn();
|
|
998
|
-
fit('smart');
|
|
1278
|
+
${c.sequences ? ' syncSeqBar(id);\n' : ''} fit('smart');
|
|
999
1279
|
runSearch(false);
|
|
1000
1280
|
}
|
|
1001
1281
|
|
|
@@ -1094,9 +1374,12 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
1094
1374
|
if (c < 800) return 'db_table';
|
|
1095
1375
|
return '';
|
|
1096
1376
|
}
|
|
1377
|
+
// types.ts의 hasCardDescription, layout.ts의 measureNode와 같은 판정이다
|
|
1378
|
+
function hasDesc(n) { return !!(n && n.description && n.description.trim()); }
|
|
1097
1379
|
function cardHeight(id) {
|
|
1098
1380
|
var f = services[id];
|
|
1099
|
-
|
|
1381
|
+
var base = (nodes[id] && nodes[id].displayName) || (f && (f.prodDomain || f.platforms.length > 0)) ? 60 : 48;
|
|
1382
|
+
return base + (hasDesc(nodes[id]) ? NODE_DESC_LINE : 0);
|
|
1100
1383
|
}
|
|
1101
1384
|
function platformChips(id, parent) {
|
|
1102
1385
|
var f = services[id];
|
|
@@ -1141,7 +1424,8 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
1141
1424
|
platformChips(id, l2);
|
|
1142
1425
|
d.appendChild(l2);
|
|
1143
1426
|
} else if (sub) d.appendChild(sub);
|
|
1144
|
-
|
|
1427
|
+
if (hasDesc(n)) d.appendChild(el('span', 'ds', n.description));
|
|
1428
|
+
d.title = (n && n.displayName ? n.displayName + (guess ? ' (' + GUESS + ')' : '') + '\\n' + n.label : label(id)) + (hasDesc(n) ? '\\n' + n.description : '');
|
|
1145
1429
|
d.setAttribute('aria-label', label(id) + ', ' + kindText(kind));
|
|
1146
1430
|
if (enterMap[id]) {
|
|
1147
1431
|
var more = el('span', 'go', '›');
|
|
@@ -1250,12 +1534,10 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
1250
1534
|
var xa = nodes[e.from] && nodes[e.to] && nodes[e.from].account && nodes[e.to].account && nodes[e.from].account !== nodes[e.to].account;
|
|
1251
1535
|
var g = svgEl('g', { 'class': (bundle ? 'link bundle' : 'link e-' + e.kind) + (xa ? ' x-account' : ''), 'data-from': e.from, 'data-to': e.to });
|
|
1252
1536
|
var name = bundle ? label(e.from) + ' → ' + label(e.to) + ' ' + e.count + '개'${c.mixedBundles ? MIXED_NOTE : ''} : kindText(e.kind) + ': ' + label(e.from) + ' → ' + label(e.to);
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
g.setAttribute('aria-label', name);
|
|
1258
|
-
}
|
|
1537
|
+
g.setAttribute(bundle ? 'data-bundle-id' : 'data-link-id', e.id);
|
|
1538
|
+
g.setAttribute('tabindex', '0');
|
|
1539
|
+
g.setAttribute('role', 'button');
|
|
1540
|
+
g.setAttribute('aria-label', name);
|
|
1259
1541
|
var t = svgEl('title', {});
|
|
1260
1542
|
t.textContent = name;
|
|
1261
1543
|
g.appendChild(t);
|
|
@@ -1283,6 +1565,12 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
1283
1565
|
if (!l.title) return;
|
|
1284
1566
|
var title = el('div', 'lane-title', l.title);
|
|
1285
1567
|
title.appendChild(el('span', 'n', String(l.count)));
|
|
1568
|
+
if (l.id) {
|
|
1569
|
+
title.setAttribute('data-lane-id', l.id);
|
|
1570
|
+
title.setAttribute('role', 'button');
|
|
1571
|
+
title.tabIndex = 0;
|
|
1572
|
+
title.setAttribute('aria-label', laneAria(l.title, l.count));
|
|
1573
|
+
}
|
|
1286
1574
|
title.style.left = l.x + 'px';
|
|
1287
1575
|
title.style.top = '22px';
|
|
1288
1576
|
title.style.width = l.width + 'px';
|
|
@@ -1348,7 +1636,7 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
1348
1636
|
pos: pos,
|
|
1349
1637
|
edges: list.map(function (e) { return { id: e.id, from: e.from, to: e.to, kind: e.kind, count: 1, lineStyle: e.lineStyle }; }),
|
|
1350
1638
|
lanes: lanes.map(function (l) {
|
|
1351
|
-
return { x: l.left - LANE_PAD, width: l.right - l.left + LANE_PAD * 2, title: LANE_TITLE[l.id] || '', count: l.count };
|
|
1639
|
+
return { x: l.left - LANE_PAD, width: l.right - l.left + LANE_PAD * 2, id: l.id, title: LANE_TITLE[l.id] || '', count: l.count };
|
|
1352
1640
|
}),
|
|
1353
1641
|
width: x + NODE_W + LANE_PAD + PAD_X,
|
|
1354
1642
|
height: PAD_TOP + maxH + PAD_BOTTOM,
|
|
@@ -1367,7 +1655,7 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
1367
1655
|
function drawPair(memberIds, title) {
|
|
1368
1656
|
closeDrawer(false);
|
|
1369
1657
|
sections.forEach(function (s) { s.hidden = true; });
|
|
1370
|
-
clearFocus();
|
|
1658
|
+
${c.sequences ? ' seqLeave();\n' : ''} clearFocus();
|
|
1371
1659
|
pair.hidden = false;
|
|
1372
1660
|
pair.textContent = '';
|
|
1373
1661
|
pair._cards = null;
|
|
@@ -1495,11 +1783,11 @@ ${c.views ? VIEW_FUNCS : ''}${c.docs ? DOC_FUNCS : ''} stage.addEventListener('
|
|
|
1495
1783
|
Object.keys(pos).forEach(function (id) { if (pos[id].x >= x && pos[id].x < x + w) n += 1; });
|
|
1496
1784
|
if (!n) return;
|
|
1497
1785
|
var t = titles[i];
|
|
1498
|
-
lanes.push({ x: x, width: w, title: t ? t.firstChild.textContent : '', count: n });
|
|
1786
|
+
lanes.push({ id: t ? t.getAttribute('data-lane-id') : null, x: x, width: w, title: t ? t.firstChild.textContent : '', count: n });
|
|
1499
1787
|
});
|
|
1500
1788
|
var cards = cardMap(src);
|
|
1501
1789
|
src.hidden = true;
|
|
1502
|
-
focusSec.textContent = '';
|
|
1790
|
+
${c.sequences ? ' seqLeave();\n' : ''} focusSec.textContent = '';
|
|
1503
1791
|
focusSec._cards = null;
|
|
1504
1792
|
focusSec._links = null;
|
|
1505
1793
|
focusSec.setAttribute('data-focus-level', levelId);
|
|
@@ -1708,7 +1996,7 @@ ${c.views ? VIEW_POP : ''} // 흐름 단추는 서비스 아래 레벨에서만
|
|
|
1708
1996
|
});
|
|
1709
1997
|
window.addEventListener('resize', function () {
|
|
1710
1998
|
pops.forEach(function (p) { if (!p.pop.hidden) placePop(p.btn, p.pop); });
|
|
1711
|
-
});
|
|
1999
|
+
${c.sequences ? ' seqPlaceSteps();\n' : ''} });
|
|
1712
2000
|
function goToNode(id) {
|
|
1713
2001
|
if (!id) return;
|
|
1714
2002
|
if (active && cardMap(active)[id]) { focusCard(id); return; }
|
|
@@ -1734,7 +2022,7 @@ ${c.views ? VIEW_POP : ''} // 흐름 단추는 서비스 아래 레벨에서만
|
|
|
1734
2022
|
|
|
1735
2023
|
doc.addEventListener('keydown', function (e) {
|
|
1736
2024
|
if (e.key === 'Escape') {
|
|
1737
|
-
if (!productMenu.hidden) { closeProducts(true); return; }
|
|
2025
|
+
${c.sequences ? ' seqStop();\n' : ''} if (!productMenu.hidden) { closeProducts(true); return; }
|
|
1738
2026
|
if (anyPop()) { closePops(true); return; }
|
|
1739
2027
|
if (drawerOpen()) { closeDrawer(true); return; }
|
|
1740
2028
|
releaseFocus();
|
|
@@ -1743,7 +2031,7 @@ ${c.views ? VIEW_POP : ''} // 흐름 단추는 서비스 아래 레벨에서만
|
|
|
1743
2031
|
var t = e.target;
|
|
1744
2032
|
if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable)) return;
|
|
1745
2033
|
if (e.metaKey || e.ctrlKey || e.altKey) return;
|
|
1746
|
-
if (e.key === '/') { e.preventDefault(); search.focus(); search.select(); }
|
|
2034
|
+
${c.sequences ? SEQ_KEYS : ''} if (e.key === '/') { e.preventDefault(); search.focus(); search.select(); }
|
|
1747
2035
|
else if (e.key === '+' || e.key === '=') zoomBy(1.25);
|
|
1748
2036
|
else if (e.key === '-' || e.key === '_') zoomBy(0.8);
|
|
1749
2037
|
else if (e.key === '0') fit('full');
|
|
@@ -1782,6 +2070,7 @@ ${c.views ? VIEW_POP : ''} // 흐름 단추는 서비스 아래 레벨에서만
|
|
|
1782
2070
|
t.classList.toggle('env-off', n === 0);
|
|
1783
2071
|
var count = t.querySelector('.n');
|
|
1784
2072
|
if (count) count.textContent = n;
|
|
2073
|
+
if (t.hasAttribute('data-lane-id')) t.setAttribute('aria-label', laneAria(t.firstChild.textContent, n));
|
|
1785
2074
|
});
|
|
1786
2075
|
}
|
|
1787
2076
|
// 고른 환경은 주소 해시 뒤 ?env=prod,dev로 싣는다. 주소를 보내면 받은 사람도 같은 환경으로 본다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-client.js","sourceRoot":"","sources":["../../../src/architecture/html-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"html-client.js","sourceRoot":"","sources":["../../../src/architecture/html-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-renderer.d.ts","sourceRoot":"","sources":["../../../src/architecture/html-renderer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"html-renderer.d.ts","sourceRoot":"","sources":["../../../src/architecture/html-renderer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA6BnG,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAgCrB,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEpF,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AA+ED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAetD;AA2VD,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEjE;AA06CD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,6BAA6B,GAClC,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,6BAA6B,GAClC,MAAM,CAsJR"}
|