@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 +44 -19
- package/dist/index.d.mts +31 -17
- package/dist/index.d.ts +31 -17
- package/dist/index.js +1089 -687
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +769 -374
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +72 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1479,7 +1479,32 @@ const url = await uploader(imageFile);
|
|
|
1479
1479
|
|
|
1480
1480
|
## 변경 로그
|
|
1481
1481
|
|
|
1482
|
-
### v0.4.
|
|
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
|
-
|
|
929
|
-
|
|
930
|
-
|
|
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
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
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
|
-
|
|
929
|
-
|
|
930
|
-
|
|
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
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
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 };
|