@lumir-company/editor 0.4.19 → 0.4.22

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 CHANGED
@@ -1479,7 +1479,32 @@ const url = await uploader(imageFile);
1479
1479
 
1480
1480
  ## 변경 로그
1481
1481
 
1482
- ### v0.4.19
1482
+ ### v0.4.22 (2026-06-22)
1483
+
1484
+ - **글자 크기 1px 단위 조절** *(신규)*
1485
+ - 글자 크기 드롭다운(포매팅 툴바·플로팅 메뉴) 상단에 **−/+ 스테퍼 + 직접 입력** 추가 → 프리셋 사이 값(13·15·17·21px…)을 1px 단위로 지정 (`↑`/`↓` 키로도 증감)
1486
+ - 허용 범위 **8~96px**(범위 밖 입력은 자동 보정), 명시 크기가 없으면 14px 기준으로 증감. 스테퍼 클릭 시 드롭다운은 닫히지 않아 연속 조절 가능
1487
+ - 기존 프리셋(10·12·14·16·18·20·24·28px)·"기본" 리셋은 그대로 유지. 저장 JSON·하위호환(형제 키 직렬화)은 변경 없음
1488
+ - 공개 API에 `FONT_SIZE_MIN`/`FONT_SIZE_MAX`/`FONT_SIZE_DEFAULT_PX`/`FONT_SIZE_STEP` 및 `parseFontSizePx`/`clampFontSizePx`/`toFontSizeValue` 추가
1489
+ - **글자 크기 스타일을 동기 스펙(`createStyleSpec`)으로 변경**: 기존 React 스펙은 span 내용이 비동기 렌더되어, 크기 적용 직후 포매팅 툴바가 좌상단으로 튀는 문제가 있었음(선택 영역 DOM 좌표가 순간 (0,0)으로 측정됨). 동기 렌더로 바꿔 툴바가 선택 위치에 고정됨. HTML 직렬화(`data-style-type`/`data-value`)는 동일
1490
+
1491
+ ### v0.4.21 (2026-06-18)
1492
+
1493
+ - **Word/docx 표 붙여넣기 품질 개선** *(신규)*
1494
+ - **에디터 너비 자동 맞춤**: 에디터보다 넓은 표를 붙여넣으면 각 열 비율을 유지한 채 에디터 너비에 맞춰 축소(가로 스크롤 방지). 열 너비를 colgroup/셀(pt/px/%)에서 읽어 `columnWidths`로 적용
1495
+ - **셀 서식 보존 확대**: 기존(굵게·기울임·밑줄·취소선·글자색·배경색·텍스트 정렬)에 더해 **글자 크기**와 **세로 정렬**(middle/bottom)도 보존
1496
+ - 한계: 글자 크기는 셀 단위 균일 적용, 글꼴(font-family)·정확한 hex 색은 BlockNote 미지원(색은 10색 팔레트 근사)
1497
+
1498
+ ### v0.4.20 (2026-06-18)
1499
+
1500
+ - **2단 컬럼 구분선 — 생성 시 선택** *(신규)*
1501
+ - 슬래시 메뉴에서 `2단 컬럼` / `2단 컬럼 (구분선)` 중 골라 삽입 → 선택한 구분선 유무가 그 블록에 **고정**(문서에 `showDivider`로 저장·라운드트립). 구분선 있는/없는 컬럼을 섞어 사용 가능
1502
+ - v0.4.19의 전역 `columnDivider` prop과 별개로, **블록별**로 구분선을 지정
1503
+ - **표 셀에서 Ctrl/Cmd+A → 표 전체 선택** *(신규)*
1504
+ - 셀에 포커스(커서/선택) 시 Ctrl/Cmd+A로 표의 모든 셀을 한 번에 선택(일괄 색·정렬·삭제 등에 유용)
1505
+ - 이미 표 전체가 선택된 상태에서 다시 누르면 문서 전체로 단계적 확장. 표 밖에서는 기본 동작 유지
1506
+
1507
+ ### v0.4.19 (2026-06-17)
1483
1508
 
1484
1509
  - **2단 컬럼 중앙 세로 구분선 (`columnDivider` 옵션)** *(신규)*
1485
1510
  - `columnDivider` prop(기본 `false`)으로 2단(다단) 컬럼 사이 중앙에 세로 구분선 표시
@@ -1491,14 +1516,14 @@ const url = await uploader(imageFile);
1491
1516
  - 셀 focus 없이 표 hover만으로 동작(코어 hover 상태 기반), 기존 행/열 개별 리사이즈와 충돌 없음
1492
1517
  - `tableHandles` prop으로 게이트(행/열 리사이즈와 동일)
1493
1518
 
1494
- ### v0.4.18
1519
+ ### v0.4.18 (2026-06-17)
1495
1520
 
1496
1521
  - **표 열 삭제 버그 수정 (병합 셀 포함)**
1497
1522
  - 그립 메뉴로 첫 열/행 삭제 시, 그립 클릭으로 ProseMirror 선택이 표 밖으로 빠져 삭제가 무시되던 문제 수정(삭제 대상 표를 포커스 표 기준으로 결정적으로 탐색)
1498
1523
  - **세로 병합(rowspan) 인접 열**이 있을 때 첫 열이 삭제되지 않던 문제 수정 — 코어 prosemirror-tables가 행의 유일 셀을 지울 때 빈 셀을 남겨(`tableRow+` 스키마) `fixTables`가 원복하던 케이스. 열 삭제를 표 재구성 방식으로 변경해 colspan/rowspan 병합을 안전하게 처리
1499
1524
  - 병합 셀이 행 축소로 collapse될 때 **행 높이를 보존**(원래 차지하던 행 높이 합을 유지)
1500
1525
 
1501
- ### v0.4.17
1526
+ ### v0.4.17 (2026-06-16)
1502
1527
 
1503
1528
  - **표 행 높이(세로) 리사이즈**
1504
1529
  - 행 경계 hover → 드래그로 행 높이 조절(가로 열 리사이즈와 대칭). 드래그 중 셀 높이가 마우스를 따라 실시간 반영
@@ -1513,7 +1538,7 @@ const url = await uploader(imageFile);
1513
1538
  - 공식 `@blocknote/xl-multi-column`(AGPL) 대신 MIT 안전 자체 구현
1514
1539
  - *제한(후속 예정)*: 컬럼 안↔밖 DnD/3단 추가, 컬럼 너비 리사이즈, 다중 블록 드래그
1515
1540
 
1516
- ### v0.4.16
1541
+ ### v0.4.16 (2026-06-05)
1517
1542
 
1518
1543
  - **인라인 글자 크기 (Font Size)**
1519
1544
  - 포매팅 툴바·상단 고정 툴바(FloatingMenu)에 글자 크기 드롭다운 추가 (기본 + 10~28px 프리셋 8단계)
@@ -1524,7 +1549,7 @@ const url = await uploader(imageFile);
1524
1549
  - 일반 텍스트 선택 시 선택 팝업 툴바를 표시하지 않음 (상단 고정 툴바와 중복 + 상단 툴바에서 스타일 적용 직후 팝업이 잘못된 위치(0,0)에 재표시되던 문제 수정)
1525
1550
  - 테이블 셀 컨텍스트(셀 병합·세로 정렬·셀 배경)와 이미지/노드 선택(캡션·교체·다운로드 등)은 팝업에만 있는 도구이므로 기존대로 팝업 표시
1526
1551
 
1527
- ### v0.4.15
1552
+ ### v0.4.15 (2026-06-05)
1528
1553
 
1529
1554
  - **Notion 스타일 테이블 셀 색상·정렬·포커스 핸들**
1530
1555
  - 셀 focus 시 상(열)·좌(행)·우(셀) gutter/grip 표시, grip 클릭으로 행·열·셀 드롭다운 메뉴 (`LumirTableHandlesController`)
@@ -1533,25 +1558,25 @@ const url = await uploader(imageFile);
1533
1558
  - 상단 고정 툴바(FloatingMenu)의 정렬·배경색 버튼이 테이블 셀에 올바르게 적용되도록 수정
1534
1559
  - 행/열 grip 메뉴가 열려 범위 하이라이트 중일 때 셀 우측 grip 미노출 처리
1535
1560
 
1536
- ### v0.4.14
1561
+ ### v0.4.14 (2026-05-29)
1537
1562
 
1538
1563
  - **Excel/스프레드시트 셀 붙여넣기 → 편집 가능한 테이블**
1539
1564
  - Excel 복사 시 클립보드의 비트맵 이미지가 업로드되어 테이블이 무시되던 문제 수정
1540
1565
  - 클립보드 HTML에 `<table>`이 있으면 이미지보다 우선 파싱하여 실제 테이블 블록 생성
1541
1566
  - Excel 서식(셀 배경, 글자색, 정렬, 굵게/기울임/밑줄)을 BlockNote 속성으로 매핑
1542
1567
 
1543
- ### v0.4.13
1568
+ ### v0.4.13 (2026-04-03)
1544
1569
 
1545
1570
  - **@tiptap/core 외부화(externalize)**
1546
1571
  - 번들에 포함된 @tiptap/core 중복으로 발생하던 `proseMirrorPlugins` 런타임 에러 수정
1547
1572
  - `@tiptap/core`를 peerDependency로 전환하고 빌드에서 external 처리
1548
1573
 
1549
- ### v0.4.12
1574
+ ### v0.4.12 (2026-04-03)
1550
1575
 
1551
1576
  - **Numbered List & Bullet List font size 14px**
1552
1577
  - Numbered List & Bullet List의 font size 14px로 일반 텍스트 크기와 통일성 있게 변경
1553
1578
 
1554
- ### v0.4.10
1579
+ ### v0.4.10 (2026-03-18)
1555
1580
 
1556
1581
  - **동영상·이미지 업로드 진행률 표시**
1557
1582
  - S3 업로드 시 진행률이 0만 보이다가 100으로 바로 완료되던 문제 개선
@@ -1560,19 +1585,19 @@ const url = await uploader(imageFile);
1560
1585
  - README: `s3Upload.onProgress` 설명 및 업로드 진행률 표시 섹션 추가
1561
1586
  - README: `S3UploaderConfig`에 `onProgress`, `uploadTimeoutMs`, `maxRetries` 문서화
1562
1587
 
1563
- ### v0.4.9
1588
+ ### v0.4.9 (2026-03-17)
1564
1589
 
1565
1590
  - **업로드 용량·타임아웃 사용자 설정**
1566
1591
  - `maxImageFileSize`, `maxVideoFileSize` prop 추가 (미설정 시 기본 10MB/100MB)
1567
1592
  - `isImageFile(file, maxSize?)`, `isVideoFile(file, maxSize?)` 시그니처 확장
1568
1593
  - README: 용량 및 타임아웃 설정 예시 및 `s3Upload.uploadTimeoutMs` 안내 보강
1569
1594
 
1570
- ### v0.4.8
1595
+ ### v0.4.8 (2026-03)
1571
1596
 
1572
1597
  - README update (video & image upload)
1573
1598
  - 버전 배포
1574
1599
 
1575
- ### v0.4.6
1600
+ ### v0.4.6 (2026-03)
1576
1601
 
1577
1602
  - **README: S3 Presigned URL API**
1578
1603
  - Next.js App Router용 `app/api/s3/presigned/route.ts` 구현 예시 추가 (PutObjectCommand, getSignedUrl)
@@ -1580,13 +1605,13 @@ const url = await uploader(imageFile);
1580
1605
  - **README: 이미지·동영상 업로드 경로 분리**
1581
1606
  - `fileNameTransform`으로 이미지/동영상 prefix 분리 (`images/`, `videos/`) 예시 및 결과 경로 설명 추가
1582
1607
 
1583
- ### v0.4.5
1608
+ ### v0.4.5 (2026-03-06)
1584
1609
 
1585
1610
  - **README: 이미지·동영상 업로드**
1586
1611
  - 지원 형식/용량, 삽입 경로, 설정 방법(s3Upload / uploadFile), 저장 데이터 구조, 삭제 콜백, 에러 처리 정리
1587
1612
  - 동영상 블록은 직접 재생 가능한 파일 URL만 지원한다는 안내 추가 (YouTube/Vimeo 링크 미지원)
1588
1613
 
1589
- ### v0.4.4
1614
+ ### v0.4.4 (2026-03-05)
1590
1615
 
1591
1616
  - **Link Preview API 핸들러 내장**
1592
1617
  - `@lumir-company/editor/api/link-preview` 서브패스 export 추가
@@ -1600,7 +1625,7 @@ const url = await uploader(imageFile);
1600
1625
  - 내장 API 핸들러 export 목록 문서화
1601
1626
  - Props API 테이블에 `placeholder`, `linkPreview` 추가
1602
1627
 
1603
- ### v0.4.3
1628
+ ### v0.4.3 (2026-02-23)
1604
1629
 
1605
1630
  - **링크 프리뷰 기능 추가**
1606
1631
  - `linkPreview` prop으로 링크 미리보기 활성화 (카카오톡 스타일 OG 카드)
@@ -1633,7 +1658,7 @@ const url = await uploader(imageFile);
1633
1658
  - S3 삭제 API 구현 예시 추가
1634
1659
  - Props API 문서 업데이트
1635
1660
 
1636
- ### v0.4.2
1661
+ ### v0.4.2 (2026-02-23)
1637
1662
 
1638
1663
  - **코드 구조 리팩토링**
1639
1664
  - FloatingMenu 컴포넌트 분리 (Icons, 개별 버튼 컴포넌트)
@@ -1650,7 +1675,7 @@ const url = await uploader(imageFile);
1650
1675
  - `LumirErrorCode`, `LumirErrorDetails` 타입 export
1651
1676
  - `ColorItem` 타입 export
1652
1677
 
1653
- ### v0.4.1
1678
+ ### v0.4.1 (2026-01-15)
1654
1679
 
1655
1680
  - `preserveExtension` prop 추가 - 확장자 자동 붙이기 제어 (기본: true)
1656
1681
  - **중요**: 파일명 변환 시 확장자 위치 수정 (확장자가 항상 맨 뒤에 오도록)
@@ -1660,14 +1685,14 @@ const url = await uploader(imageFile);
1660
1685
  - 확장자 제거 사용 사례 문서화
1661
1686
  - README 예제 및 설명 개선
1662
1687
 
1663
- ### v0.4.0
1688
+ ### v0.4.0 (2026-01-15)
1664
1689
 
1665
1690
  - 파일명 변환 콜백 (`fileNameTransform`) 추가
1666
1691
  - UUID 자동 추가 옵션 (`appendUUID`) 추가
1667
1692
  - 여러 이미지 동시 업로드 시 중복 문제 해결
1668
1693
  - 문서 대폭 개선
1669
1694
 
1670
- ### v0.3.3
1695
+ ### v0.3.3 (2025-12-11)
1671
1696
 
1672
1697
  - 에디터 재생성 방지 최적화
1673
1698
  - 타입 정의 개선
package/dist/index.d.mts CHANGED
@@ -436,12 +436,20 @@ declare const schema: BlockNoteSchema<_blocknote_core.BlockSchemaFromSpecs<{
436
436
  config: {
437
437
  type: "columnList";
438
438
  content: "none";
439
- propSchema: {};
439
+ propSchema: {
440
+ showDivider: {
441
+ default: false;
442
+ };
443
+ };
440
444
  };
441
445
  implementation: _blocknote_core.TiptapBlockImplementation<{
442
446
  type: "columnList";
443
447
  content: "none";
444
- propSchema: {};
448
+ propSchema: {
449
+ showDivider: {
450
+ default: false;
451
+ };
452
+ };
445
453
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
446
454
  };
447
455
  column: {
@@ -924,13 +932,10 @@ declare const schema: BlockNoteSchema<_blocknote_core.BlockSchemaFromSpecs<{
924
932
  implementation: any;
925
933
  };
926
934
  }>, _blocknote_core.StyleSchemaFromSpecs<{
927
- fontSize: {
928
- config: {
929
- type: string;
930
- propSchema: "string";
931
- };
932
- implementation: _blocknote_core.StyleImplementation;
933
- };
935
+ fontSize: _blocknote_core.StyleSpec<{
936
+ type: string;
937
+ propSchema: "string";
938
+ }>;
934
939
  bold: {
935
940
  config: {
936
941
  type: string;
@@ -1072,16 +1077,25 @@ declare const FloatingMenu: React.FC<FloatingMenuProps>;
1072
1077
  * styles.fontSize 대신 형제 키 fontSize로 직렬화한다.
1073
1078
  * → src/utils/font-size-serialization.ts (liftFontSize/lowerFontSize) 참고.
1074
1079
  */
1075
- declare const FontSize: {
1076
- config: {
1077
- type: string;
1078
- propSchema: "string";
1079
- };
1080
- implementation: _blocknote_core.StyleImplementation;
1081
- };
1080
+ declare const FontSize: _blocknote_core.StyleSpec<{
1081
+ type: string;
1082
+ propSchema: "string";
1083
+ }>;
1082
1084
  /** 툴바 드롭다운에서 제공하는 프리셋 (본문 기본은 14px = "기본") */
1083
1085
  declare const FONT_SIZE_PRESETS: readonly ["10px", "12px", "14px", "16px", "18px", "20px", "24px", "28px"];
1084
1086
  type FontSizePreset = (typeof FONT_SIZE_PRESETS)[number];
1087
+ /** 글자 크기 1px 스테퍼의 허용 범위/기본값 (사용자 결정: 8~96px). */
1088
+ declare const FONT_SIZE_MIN = 8;
1089
+ declare const FONT_SIZE_MAX = 96;
1090
+ /** "기본"(명시 fontSize 없음)일 때 기준이 되는 본문 px. */
1091
+ declare const FONT_SIZE_DEFAULT_PX = 14;
1092
+ declare const FONT_SIZE_STEP = 1;
1093
+ /** "18px" → 18, "" / 파싱 실패 → 14(기본). */
1094
+ declare function parseFontSizePx(size: string): number;
1095
+ /** 8~96 범위로 보정 + 정수 반올림. */
1096
+ declare function clampFontSizePx(px: number): number;
1097
+ /** 숫자 → "Npx" (clamp 포함). */
1098
+ declare function toFontSizeValue(px: number): string;
1085
1099
 
1086
1100
  declare function FontSizeButton(): react_jsx_runtime.JSX.Element | null;
1087
1101
 
@@ -1107,4 +1121,4 @@ declare const BACKGROUND_COLORS: ColorItem[];
1107
1121
  */
1108
1122
  declare const getHexFromColorValue: (value: string, type: "text" | "background") => string;
1109
1123
 
1110
- export { BACKGROUND_COLORS, type ColorItem, ContentUtils, type DefaultPartialBlock, EditorConfig, type EditorType, FONT_SIZE_PRESETS, FloatingMenu, FontSize, FontSizeButton, type FontSizePreset, HtmlPreviewBlock, schema as HtmlPreviewSchema, type LinkMetadata, LinkPreviewBlock, LumirEditor, LumirEditorError, type LumirEditorProps, type LumirErrorCode, type LumirErrorDetails, type S3UploaderConfig, type SerializedStyledText, TEXT_COLORS, clearMetadataCache, cn, createS3Uploader, fetchLinkMetadata, getHexFromColorValue, liftFontSize, lowerFontSize };
1124
+ export { BACKGROUND_COLORS, type ColorItem, ContentUtils, type DefaultPartialBlock, EditorConfig, type EditorType, FONT_SIZE_DEFAULT_PX, FONT_SIZE_MAX, FONT_SIZE_MIN, FONT_SIZE_PRESETS, FONT_SIZE_STEP, FloatingMenu, FontSize, FontSizeButton, type FontSizePreset, HtmlPreviewBlock, schema as HtmlPreviewSchema, type LinkMetadata, LinkPreviewBlock, LumirEditor, LumirEditorError, type LumirEditorProps, type LumirErrorCode, type LumirErrorDetails, type S3UploaderConfig, type SerializedStyledText, TEXT_COLORS, clampFontSizePx, clearMetadataCache, cn, createS3Uploader, fetchLinkMetadata, getHexFromColorValue, liftFontSize, lowerFontSize, parseFontSizePx, toFontSizeValue };
package/dist/index.d.ts CHANGED
@@ -436,12 +436,20 @@ declare const schema: BlockNoteSchema<_blocknote_core.BlockSchemaFromSpecs<{
436
436
  config: {
437
437
  type: "columnList";
438
438
  content: "none";
439
- propSchema: {};
439
+ propSchema: {
440
+ showDivider: {
441
+ default: false;
442
+ };
443
+ };
440
444
  };
441
445
  implementation: _blocknote_core.TiptapBlockImplementation<{
442
446
  type: "columnList";
443
447
  content: "none";
444
- propSchema: {};
448
+ propSchema: {
449
+ showDivider: {
450
+ default: false;
451
+ };
452
+ };
445
453
  }, any, _blocknote_core.InlineContentSchema, _blocknote_core.StyleSchema>;
446
454
  };
447
455
  column: {
@@ -924,13 +932,10 @@ declare const schema: BlockNoteSchema<_blocknote_core.BlockSchemaFromSpecs<{
924
932
  implementation: any;
925
933
  };
926
934
  }>, _blocknote_core.StyleSchemaFromSpecs<{
927
- fontSize: {
928
- config: {
929
- type: string;
930
- propSchema: "string";
931
- };
932
- implementation: _blocknote_core.StyleImplementation;
933
- };
935
+ fontSize: _blocknote_core.StyleSpec<{
936
+ type: string;
937
+ propSchema: "string";
938
+ }>;
934
939
  bold: {
935
940
  config: {
936
941
  type: string;
@@ -1072,16 +1077,25 @@ declare const FloatingMenu: React.FC<FloatingMenuProps>;
1072
1077
  * styles.fontSize 대신 형제 키 fontSize로 직렬화한다.
1073
1078
  * → src/utils/font-size-serialization.ts (liftFontSize/lowerFontSize) 참고.
1074
1079
  */
1075
- declare const FontSize: {
1076
- config: {
1077
- type: string;
1078
- propSchema: "string";
1079
- };
1080
- implementation: _blocknote_core.StyleImplementation;
1081
- };
1080
+ declare const FontSize: _blocknote_core.StyleSpec<{
1081
+ type: string;
1082
+ propSchema: "string";
1083
+ }>;
1082
1084
  /** 툴바 드롭다운에서 제공하는 프리셋 (본문 기본은 14px = "기본") */
1083
1085
  declare const FONT_SIZE_PRESETS: readonly ["10px", "12px", "14px", "16px", "18px", "20px", "24px", "28px"];
1084
1086
  type FontSizePreset = (typeof FONT_SIZE_PRESETS)[number];
1087
+ /** 글자 크기 1px 스테퍼의 허용 범위/기본값 (사용자 결정: 8~96px). */
1088
+ declare const FONT_SIZE_MIN = 8;
1089
+ declare const FONT_SIZE_MAX = 96;
1090
+ /** "기본"(명시 fontSize 없음)일 때 기준이 되는 본문 px. */
1091
+ declare const FONT_SIZE_DEFAULT_PX = 14;
1092
+ declare const FONT_SIZE_STEP = 1;
1093
+ /** "18px" → 18, "" / 파싱 실패 → 14(기본). */
1094
+ declare function parseFontSizePx(size: string): number;
1095
+ /** 8~96 범위로 보정 + 정수 반올림. */
1096
+ declare function clampFontSizePx(px: number): number;
1097
+ /** 숫자 → "Npx" (clamp 포함). */
1098
+ declare function toFontSizeValue(px: number): string;
1085
1099
 
1086
1100
  declare function FontSizeButton(): react_jsx_runtime.JSX.Element | null;
1087
1101
 
@@ -1107,4 +1121,4 @@ declare const BACKGROUND_COLORS: ColorItem[];
1107
1121
  */
1108
1122
  declare const getHexFromColorValue: (value: string, type: "text" | "background") => string;
1109
1123
 
1110
- export { BACKGROUND_COLORS, type ColorItem, ContentUtils, type DefaultPartialBlock, EditorConfig, type EditorType, FONT_SIZE_PRESETS, FloatingMenu, FontSize, FontSizeButton, type FontSizePreset, HtmlPreviewBlock, schema as HtmlPreviewSchema, type LinkMetadata, LinkPreviewBlock, LumirEditor, LumirEditorError, type LumirEditorProps, type LumirErrorCode, type LumirErrorDetails, type S3UploaderConfig, type SerializedStyledText, TEXT_COLORS, clearMetadataCache, cn, createS3Uploader, fetchLinkMetadata, getHexFromColorValue, liftFontSize, lowerFontSize };
1124
+ export { BACKGROUND_COLORS, type ColorItem, ContentUtils, type DefaultPartialBlock, EditorConfig, type EditorType, FONT_SIZE_DEFAULT_PX, FONT_SIZE_MAX, FONT_SIZE_MIN, FONT_SIZE_PRESETS, FONT_SIZE_STEP, FloatingMenu, FontSize, FontSizeButton, type FontSizePreset, HtmlPreviewBlock, schema as HtmlPreviewSchema, type LinkMetadata, LinkPreviewBlock, LumirEditor, LumirEditorError, type LumirEditorProps, type LumirErrorCode, type LumirErrorDetails, type S3UploaderConfig, type SerializedStyledText, TEXT_COLORS, clampFontSizePx, clearMetadataCache, cn, createS3Uploader, fetchLinkMetadata, getHexFromColorValue, liftFontSize, lowerFontSize, parseFontSizePx, toFontSizeValue };