@iyulab/chat-components 0.11.8 → 0.12.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/decorate.js +1 -1
  3. package/dist/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/decorateMetadata.js +1 -1
  4. package/dist/components/blocks/UCodeBlock.js +2 -2
  5. package/dist/components/blocks/UElementBlock.js +2 -2
  6. package/dist/components/blocks/UFileBlock.js +2 -2
  7. package/dist/components/blocks/UMarkedBlock.d.ts +7 -2
  8. package/dist/components/blocks/UMarkedBlock.js +12 -7
  9. package/dist/components/blocks/URefBlock.js +2 -2
  10. package/dist/components/blocks/UTableBlock.js +2 -2
  11. package/dist/components/blocks/UTableBlock.styles.js +10 -1
  12. package/dist/components/blocks/UTextBlock.js +2 -2
  13. package/dist/components/message/UMessage.js +2 -2
  14. package/dist/components/prompt/UPrompt.js +2 -2
  15. package/dist/components/references/URefCard.js +2 -2
  16. package/dist/components/references/URefCardGroup.js +2 -2
  17. package/dist/components/references/URefCardGroup.styles.js +5 -0
  18. package/dist/components/references/URefTag.js +2 -2
  19. package/dist/components-extra/UChartBlock.js +2 -2
  20. package/dist/components-extra/UChartBlock.styles.js +15 -1
  21. package/dist/components-extra/UImagesBlock.js +2 -2
  22. package/dist/components-extra/UMapBlock.js +2 -2
  23. package/dist/components-extra/UMapBlock.styles.js +11 -1
  24. package/dist/components-extra/UVideoBlock.js +2 -2
  25. package/dist/node_modules/katex/dist/katex.js +26367 -0
  26. package/dist/react/UCodeBlock.d.ts +1 -1
  27. package/dist/react/UCodeBlock.js +1 -1
  28. package/dist/react/UElementBlock.d.ts +1 -1
  29. package/dist/react/UElementBlock.js +1 -1
  30. package/dist/react/UFileBlock.d.ts +1 -1
  31. package/dist/react/UFileBlock.js +1 -1
  32. package/dist/react/UImagesBlock.d.ts +1 -1
  33. package/dist/react/UImagesBlock.js +1 -1
  34. package/dist/react/UMapBlock.d.ts +1 -1
  35. package/dist/react/UMapBlock.js +1 -1
  36. package/dist/react/UMarkedBlock.d.ts +1 -1
  37. package/dist/react/UMarkedBlock.js +1 -1
  38. package/dist/react/UMessage.d.ts +1 -1
  39. package/dist/react/UMessage.js +1 -1
  40. package/dist/react/UPrompt.d.ts +3 -3
  41. package/dist/react/UPrompt.js +1 -1
  42. package/dist/react/URefBlock.d.ts +1 -1
  43. package/dist/react/URefBlock.js +1 -1
  44. package/dist/react/URefCard.d.ts +1 -1
  45. package/dist/react/URefCard.js +1 -1
  46. package/dist/react/URefCardGroup.d.ts +1 -1
  47. package/dist/react/URefCardGroup.js +1 -1
  48. package/dist/react/URefTag.d.ts +1 -1
  49. package/dist/react/URefTag.js +1 -1
  50. package/dist/react/UTableBlock.d.ts +1 -1
  51. package/dist/react/UTableBlock.js +1 -1
  52. package/dist/react/UTextBlock.d.ts +1 -1
  53. package/dist/react/UTextBlock.js +1 -1
  54. package/dist/react/UVideoBlock.d.ts +1 -1
  55. package/dist/react/UVideoBlock.js +1 -1
  56. package/dist/utilities/HtmlPlaceholder.d.ts +18 -1
  57. package/dist/utilities/HtmlPlaceholder.js +59 -4
  58. package/dist/utilities/markedKatex.d.ts +10 -0
  59. package/dist/utilities/markedKatex.js +106 -0
  60. package/package.json +7 -8
  61. package/skills/iyulab-chat-components/references/components/chart-block.md +17 -0
  62. package/skills/iyulab-chat-components/references/components/code-block.md +12 -0
  63. package/skills/iyulab-chat-components/references/components/images-block.md +10 -0
  64. package/skills/iyulab-chat-components/references/components/map-block.md +15 -0
  65. package/skills/iyulab-chat-components/references/components/marked-block.md +8 -0
  66. package/skills/iyulab-chat-components/references/components/message.md +8 -0
  67. package/skills/iyulab-chat-components/references/components/prompt.md +11 -0
  68. package/skills/iyulab-chat-components/references/components/table-block.md +15 -0
  69. package/skills/iyulab-chat-components/references/components/video-block.md +10 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,84 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.12.0] - 2026-09-10
4
+
5
+ ### Changed
6
+
7
+ - **`@iyulab/components` moved from `dependencies` to `peerDependencies`.** It owns
8
+ process-global state — the custom element registry and module-level singletons — so two
9
+ copies in one install tree split that state with no error raised. Consumers already
10
+ installing `@iyulab/components` are unaffected; the declaration now says that this package
11
+ uses the copy they installed rather than fetching one of its own.
12
+
13
+ - **The KaTeX `marked` extension is now owned in-package**, replacing the third-party
14
+ `marked-katex-extension`, and `katex` moves to `^0.18.7`. No published version of that
15
+ extension satisfied both a `katex <0.19` peer range and compiled `.d.ts`/`.js` output, so
16
+ depending on it pinned `katex` to 0.17 and required an install-time override that does not
17
+ reach consumers of the published package at all. A browser regression pins the render
18
+ contract first — delimiter parsing, `displayMode` versus block placement, and the inputs that
19
+ must *not* be treated as maths (currency pairs, newlines inside inline maths) — so the
20
+ replacement is demonstrably equivalent rather than merely plausible. The `.katex` coupling
21
+ point is unchanged across both minors.
22
+
23
+ ### Fixed
24
+
25
+ - **A `max-height` on `u-chart-block` or `u-map-block` now actually constrains the block.** Both
26
+ laid their inner box out independently of the host — the chart viewport kept its content height
27
+ and the map's frame kept a flat 300px — so a height set on the component shrank the component
28
+ without shrinking what was inside it, and the surplus was clipped away by the block's own
29
+ `overflow: hidden` with no scrollbar left to reach it. Measured at 600px wide against a 120px
30
+ host: 248px of the chart and 180px of the map were unreachable. The toolbar and the chart area
31
+ (and the map frame) now divide the component's height by layout, so a constraint on the component
32
+ reaches them. The map's 300px is unchanged as the height you get when nothing constrains it.
33
+ - `u-images-block`, `u-video-block` and `u-message` deliberately do **not** follow such a
34
+ constraint: the first two derive height from width through `aspect-ratio`, and squeezing a
35
+ message bubble hides content that the conversation itself already scrolls. They overflow
36
+ visibly rather than clipping, and a browser regression now pins that distinction — not
37
+ following a constraint and silently clipping are different things.
38
+
39
+ - **A `max-height` on `u-table-block` now actually constrains the table.** The scrolling table area
40
+ carried a fixed 480px maximum of its own, so a height set on the component shrank the component
41
+ without shrinking the table inside it: the surplus was clipped away by the block's own
42
+ `overflow: hidden` with no scrollbar left to reach it. Measured with 40 rows and a 200px
43
+ `max-height`, 330px of rows became unreachable. The header row and the table area now divide the
44
+ component's height by layout, so a constraint on the component reaches the table and the rows
45
+ stay reachable by scrolling. The 480px default is unchanged: left unconstrained, a long table
46
+ still stops there rather than swallowing the conversation.
47
+
48
+ - **The reference carousel's navigation buttons presented a 16×16 pointer target**, below the
49
+ 24×24 CSS px minimum (WCAG 2.2 SC 2.5.8). Nothing visible changes: the buttons carry no
50
+ border or background, and the icon size is still set by `font-size`.
51
+
52
+ ## [0.11.9] - 2026-09-08
53
+
54
+ ### Fixed
55
+
56
+ - **Inline citation badges rendered as the literal placeholder text instead of a
57
+ `u-ref-tag`.** Any `u-marked-block` given a non-empty `refs` array was affected,
58
+ with no special content required, from `0.11.7` onward. The XSS hardening added
59
+ in that release escapes every raw HTML token, and the placeholder the component
60
+ splices into the markdown source was an HTML comment — which the markdown
61
+ parser classifies as exactly that. Escaping turned it into text that the restore
62
+ pass no longer recognised, so the marker survived into the DOM and appeared
63
+ mid-sentence.
64
+
65
+ The placeholder is now a private-use sentinel that markdown gives no meaning to,
66
+ so it tokenises as plain text and escaping is a no-op on it. This removes the
67
+ coupling between the sanitizer and the placeholder format rather than adding an
68
+ exemption to it: a future sanitizing hook cannot break the round trip again.
69
+ Exempting the comment form in the renderer would also have let author text
70
+ matching the internal format through unescaped.
71
+
72
+ **The hardening is unchanged.** Raw HTML written by an author is still escaped,
73
+ and a regression covers that alongside the round trip.
74
+
75
+ ### Changed
76
+
77
+ - **A `<!--ref:N-->` written by an author inside a code block is no longer
78
+ stripped.** It used to collide with the component's internal placeholder format
79
+ and was removed with it; now it is ordinary content, and a code block shows what
80
+ was written.
81
+
3
82
  ## [0.11.8] - 2026-09-07
4
83
 
5
84
  ### Fixed
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.148.0/helpers/esm/decorate.js
1
+ //#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorate.js
2
2
  function __decorate(decorators, target, key, desc) {
3
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.148.0/helpers/esm/decorateMetadata.js
1
+ //#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorateMetadata.js
2
2
  function __decorateMetadata(k, v) {
3
3
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4
4
  }
@@ -1,6 +1,6 @@
1
1
  import { styles } from "./UCodeBlock.styles.js";
2
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
3
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
2
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
3
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
4
4
  import { html } from "lit";
5
5
  import { customElement, property } from "lit/decorators.js";
6
6
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { UDataElement } from "../UDataElement.js";
4
4
  import { styles } from "./UElementBlock.styles.js";
5
5
  import { html, nothing } from "lit";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { messages } from "../../utilities/messages.js";
4
4
  import { styles } from "./UFileBlock.styles.js";
5
5
  import { html, nothing } from "lit";
@@ -64,11 +64,16 @@ export declare class UMarkedBlock extends UElement {
64
64
  private renderImage;
65
65
  /**
66
66
  * 인용/출처 참조객체가 있을때 ref 태그 HTML을 this.placeholder에 보관하고
67
- * 마크다운 문자열의 해당 위치에 주석 플레이스홀더를 삽입합니다.
67
+ * 마크다운 문자열의 해당 위치에 플레이스홀더 센티널을 삽입합니다.
68
68
  */
69
69
  private insertRefs;
70
70
  /**
71
- * 코드블록 내부의 <!--ref:idx--> 플레이스홀더와 그 외 refs 태그를 모두 제거하여 HTML이 코드로 렌더링되도록 합니다.
71
+ * 코드블록 내부의 플레이스홀더 센티널과 그 외 refs 태그를 모두 제거하여 HTML이 코드로
72
+ * 렌더링되도록 합니다.
73
+ *
74
+ * ⚠**작성자가 쓴 `<!--ref:N-->` 는 더 이상 지우지 않는다.** 종전에는 그것이 우리 내부
75
+ * 플레이스홀더의 형태와 같아 함께 지워졌지만, 이제 그 문자열은 **작성자의 콘텐츠일 뿐**
76
+ * 이므로 코드블록 안에서 적힌 그대로 보이는 것이 옳다.
72
77
  */
73
78
  private removeRefs;
74
79
  }
@@ -1,21 +1,21 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import "./UCodeBlock.js";
4
4
  import { escapeHtmlAttr, escapeHtmlHref, escapeHtmlText, stripZeroWidth } from "../../utilities/sanitizers.js";
5
5
  import { HtmlBuilder } from "../../utilities/HtmlBuilder.js";
6
6
  import { UElementBlock } from "./UElementBlock.js";
7
+ import { markedKatex } from "../../utilities/markedKatex.js";
7
8
  import "../references/URefTag.js";
8
9
  import { URefCard } from "../references/URefCard.js";
9
10
  import "../references/URefCardGroup.js";
10
11
  import { UTableBlock } from "./UTableBlock.js";
11
- import { HtmlPlaceholder } from "../../utilities/HtmlPlaceholder.js";
12
+ import { HtmlPlaceholder, stripRefPlaceholders } from "../../utilities/HtmlPlaceholder.js";
12
13
  import { styles } from "./UMarkedBlock.styles.js";
13
14
  import { nothing } from "lit";
14
15
  import { customElement, property, state } from "lit/decorators.js";
15
16
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
16
17
  import { UElement } from "@iyulab/components/dist/components/UElement.js";
17
18
  import { Marked, Parser } from "marked";
18
- import markedKatex from "marked-katex-extension";
19
19
  //#region src/components/blocks/UMarkedBlock.ts
20
20
  var UMarkedBlock = class UMarkedBlock extends UElement {
21
21
  constructor(..._args) {
@@ -135,7 +135,7 @@ var UMarkedBlock = class UMarkedBlock extends UElement {
135
135
  }
136
136
  /**
137
137
  * 인용/출처 참조객체가 있을때 ref 태그 HTML을 this.placeholder에 보관하고
138
- * 마크다운 문자열의 해당 위치에 주석 플레이스홀더를 삽입합니다.
138
+ * 마크다운 문자열의 해당 위치에 플레이스홀더 센티널을 삽입합니다.
139
139
  */
140
140
  insertRefs(value, refs) {
141
141
  const sorted = [...refs].sort((a, b) => b.endIndex - a.endIndex);
@@ -155,11 +155,16 @@ var UMarkedBlock = class UMarkedBlock extends UElement {
155
155
  return value;
156
156
  }
157
157
  /**
158
- * 코드블록 내부의 <!--ref:idx--> 플레이스홀더와 그 외 refs 태그를 모두 제거하여 HTML이 코드로 렌더링되도록 합니다.
158
+ * 코드블록 내부의 플레이스홀더 센티널과 그 외 refs 태그를 모두 제거하여 HTML이 코드로
159
+ * 렌더링되도록 합니다.
160
+ *
161
+ * ⚠**작성자가 쓴 `<!--ref:N-->` 는 더 이상 지우지 않는다.** 종전에는 그것이 우리 내부
162
+ * 플레이스홀더의 형태와 같아 함께 지워졌지만, 이제 그 문자열은 **작성자의 콘텐츠일 뿐**
163
+ * 이므로 코드블록 안에서 적힌 그대로 보이는 것이 옳다.
159
164
  */
160
165
  removeRefs(value) {
161
166
  value = value.replace(/<u-ref-tag\b[^>]*>[\s\S]*?<\/u-ref-tag>/gi, "");
162
- value = value.replace(/<!--ref:\d+-->/g, "");
167
+ value = stripRefPlaceholders(value);
163
168
  return value;
164
169
  }
165
170
  };
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import "../references/URefCard.js";
4
4
  import { styles } from "./URefBlock.styles.js";
5
5
  import { html } from "lit";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { UDataElement } from "../UDataElement.js";
4
4
  import { messages } from "../../utilities/messages.js";
5
5
  import { styles } from "./UTableBlock.styles.js";
@@ -1,8 +1,12 @@
1
1
  import { css } from "lit";
2
2
  //#region src/components/blocks/UTableBlock.styles.ts
3
3
  var styles = css`
4
+ /* 세로 flex 인 이유: 소비자가 호스트에 높이·max-height 를 주면 그 제약이 .table-wrapper 까지
5
+ 닿아야 한다. 종전에는 display:block + 래퍼의 max-height:480px 리터럴이라, 호스트를 200px 로
6
+ 줄이면 래퍼가 480 을 유지해 330px 이 overflow:hidden 에 잘리고 스크롤바도 없었다. */
4
7
  :host {
5
- display: block;
8
+ display: flex;
9
+ flex-direction: column;
6
10
  width: 100%;
7
11
  margin: 8px 0;
8
12
  border: 1px solid var(--u-border-color);
@@ -11,6 +15,7 @@ var styles = css`
11
15
  }
12
16
 
13
17
  .toolbar {
18
+ flex: none;
14
19
  display: flex;
15
20
  align-items: center;
16
21
  justify-content: space-between;
@@ -52,8 +57,12 @@ var styles = css`
52
57
  }
53
58
 
54
59
  .table-wrapper {
60
+ flex: 1 1 auto;
61
+ min-height: 0;
55
62
  overflow-x: auto;
56
63
  overflow-y: auto;
64
+ /* 제약이 없을 때의 기본 상한 — 채팅 스트림에서 긴 표가 화면을 삼키지 않게 한다.
65
+ «최대» 이므로 위 flex 수축을 막지 않는다(호스트 제약이 이긴다). */
57
66
  max-height: 480px;
58
67
  width: 100%;
59
68
  }
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { styles } from "./UTextBlock.styles.js";
4
4
  import { html } from "lit";
5
5
  import { customElement, property, query } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { styles } from "./UMessage.styles.js";
4
4
  import { html } from "lit";
5
5
  import { customElement, property } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { messages } from "../../utilities/messages.js";
4
4
  import "../blocks/UFileBlock.js";
5
5
  import { styles } from "./UPrompt.styles.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { UDataElement } from "../UDataElement.js";
4
4
  import { styles } from "./URefCard.styles.js";
5
5
  import { html } from "lit";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { messages } from "../../utilities/messages.js";
4
4
  import { URefCard } from "./URefCard.js";
5
5
  import { styles } from "./URefCardGroup.styles.js";
@@ -33,6 +33,11 @@ var styles = css`
33
33
  color: inherit;
34
34
  font-size: 16px;
35
35
  cursor: pointer;
36
+ /* WCAG 2.2 SC 2.5.8 — 실측 16x16 이라 포인터 타깃이 모자랐다. 배경도 테두리도 없는
37
+ 아이콘 버튼이라 상자를 키워도 **보이는 것은 그대로**다: 아이콘 치수는 위 font-size 가
38
+ 정하고 여기서 늘어나는 것은 잡히는 영역뿐이다. */
39
+ min-inline-size: 24px;
40
+ min-block-size: 24px;
36
41
  }
37
42
  .nav-button:hover u-icon {
38
43
  opacity: 0.6;
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { styles } from "./URefTag.styles.js";
4
4
  import { html } from "lit";
5
5
  import { customElement, property } from "lit/decorators.js";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { messages } from "../utilities/messages.js";
4
4
  import { styles } from "./UChartBlock.styles.js";
5
5
  import { html, nothing } from "lit";
@@ -1,9 +1,16 @@
1
1
  import { css } from "lit";
2
2
  //#region src/components-extra/UChartBlock.styles.ts
3
3
  var styles = css`
4
+ /* 🔴호스트를 «세로 flex» 로 둔다 — display:block 이면 사슬이 여기서 끊긴다.
5
+ 내부는 툴바(고정) + 뷰포트(가변) 구조인데, 호스트가 block 이면 그 둘이 호스트의
6
+ max-height 에 참여하지 못해 호스트만 줄고 뷰포트는 제 높이를 유지한다.
7
+ 그러면 overflow:hidden 에 잘리고 스크롤도 없어 도달할 수 없다 — 실측(자연 368):
8
+ 호스트 120 에서 뷰포트가 316 그대로였고 248px 이 잘렸다.
9
+ 계약은 tests/browser/extra-block-size-model.browser.test.ts 가 고정한다. */
4
10
  :host {
5
11
  margin: 0.75em auto;
6
- display: block;
12
+ display: flex;
13
+ flex-direction: column;
7
14
  width: 100%;
8
15
  background: var(--u-bg-color);
9
16
  border: 1px solid var(--u-border-color);
@@ -19,6 +26,8 @@ var styles = css`
19
26
  background-color: var(--u-neutral-100);
20
27
  border-bottom: 1px solid var(--u-border-color);
21
28
  gap: 8px;
29
+ /* 툴바는 줄어들지 않는다 — 제약이 들어오면 차트가 양보한다. */
30
+ flex: none;
22
31
  }
23
32
 
24
33
  .toolbar-left {
@@ -42,6 +51,11 @@ var styles = css`
42
51
  .viewport {
43
52
  position: relative;
44
53
  padding: 1em;
54
+ /* ⚠min-height:0 이 없으면 flex 아이템의 기본 min-height:auto 가 «줄어들지 않음» 이라
55
+ 위 사슬이 그대로 무효가 된다(이 리포가 여러 번 밟은 자리). */
56
+ flex: 1 1 auto;
57
+ min-height: 0;
58
+ overflow: auto;
45
59
  }
46
60
 
47
61
  .viewport:fullscreen {
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { messages } from "../utilities/messages.js";
4
4
  import { styles } from "./UImagesBlock.styles.js";
5
5
  import { html, nothing } from "lit";
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { styles } from "./UMapBlock.styles.js";
4
4
  import { html, nothing } from "lit";
5
5
  import { customElement, property } from "lit/decorators.js";
@@ -1,9 +1,14 @@
1
1
  import { css } from "lit";
2
2
  //#region src/components-extra/UMapBlock.styles.ts
3
3
  var styles = css`
4
+ /* 🔴호스트를 «세로 flex» 로 둔다 — display:block 이면 아래 iframe 의 300px 이
5
+ 호스트의 max-height 에 참여하지 못한다. 실측: 호스트 120 에서 지도가 300 그대로였고
6
+ 180px 이 overflow:hidden 에 잘렸다(스크롤도 없어 도달 불가).
7
+ 계약은 tests/browser/extra-block-size-model.browser.test.ts 가 고정한다. */
4
8
  :host {
5
9
  position: relative;
6
- display: block;
10
+ display: flex;
11
+ flex-direction: column;
7
12
  width: 100%;
8
13
  border-radius: 8px;
9
14
  overflow: hidden;
@@ -12,7 +17,12 @@ var styles = css`
12
17
 
13
18
  iframe {
14
19
  width: 100%;
20
+ /* ⚠이 300px 은 «고정» 이 아니라 «제약이 없을 때의 기본» 이다 — flex-basis 가 auto 라
21
+ 선언이 그대로 기본값이 되고, 호스트가 제약을 주면 flex 가 그것을 이긴다.
22
+ (이름과 값을 유지하고 의미만 재정의한 것은 u-widgets 의 차트 높이와 같은 처리다.) */
15
23
  height: 300px;
24
+ flex: 1 1 auto;
25
+ min-height: 0;
16
26
  display: block;
17
27
  border: none;
18
28
  }
@@ -1,5 +1,5 @@
1
- import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js";
2
- import __decorate from "../_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js";
1
+ import __decorateMetadata from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
+ import __decorate from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
3
  import { styles } from "./UVideoBlock.styles.js";
4
4
  import { html, nothing } from "lit";
5
5
  import { customElement, property } from "lit/decorators.js";