@roottale/cms-core 0.60.0 → 0.61.1
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/CHANGELOG.md +15 -0
- package/dist/index.cjs +67 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -1
- package/dist/index.d.ts +20 -1
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @roottale/cms-core
|
|
2
2
|
|
|
3
|
+
## 0.61.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- HTML 정화 후에도 이미지와 사진 설명의 좌우 자동 여백과 블록 배치를 유지해
|
|
8
|
+
에디터의 이미지 정렬이 미리보기와 HTML 기반 사이트에서 동일하게 표시되도록 합니다.
|
|
9
|
+
|
|
10
|
+
## 0.61.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- 공통 에디터의 글씨 크기·서식 초기화·줄간격·문단 간격·이미지 너비·정렬·사진 설명을
|
|
15
|
+
저장하고 공개 글에 출력합니다. ROOT-ADMIN에서 선택한 내용을 사이트 공통 블록으로
|
|
16
|
+
저장하고 독립 복사본으로 재사용할 수 있습니다.
|
|
17
|
+
|
|
3
18
|
## 0.60.0
|
|
4
19
|
|
|
5
20
|
## 0.59.0
|
package/dist/index.cjs
CHANGED
|
@@ -31,6 +31,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
BLOCK_NAME_PATTERN: () => BLOCK_NAME_PATTERN,
|
|
34
|
+
CMS_FONT_SIZES: () => CMS_FONT_SIZES,
|
|
35
|
+
CMS_IMAGE_WIDTHS: () => CMS_IMAGE_WIDTHS,
|
|
36
|
+
CMS_LINE_HEIGHTS: () => CMS_LINE_HEIGHTS,
|
|
37
|
+
CMS_PARAGRAPH_SPACINGS: () => CMS_PARAGRAPH_SPACINGS,
|
|
34
38
|
DEFAULT_SITE_PATTERN_PRESENTATION: () => DEFAULT_SITE_PATTERN_PRESENTATION,
|
|
35
39
|
EMPTY_SITE_PATTERN_PLACEMENTS: () => EMPTY_SITE_PATTERN_PLACEMENTS,
|
|
36
40
|
FIELD_BINDING_SOURCE: () => FIELD_BINDING_SOURCE,
|
|
@@ -54,6 +58,12 @@ __export(src_exports, {
|
|
|
54
58
|
blockSchema: () => blockSchema,
|
|
55
59
|
boundFieldValue: () => boundFieldValue,
|
|
56
60
|
chainResolvers: () => chainResolvers,
|
|
61
|
+
cmsFontSize: () => cmsFontSize,
|
|
62
|
+
cmsImageAlign: () => cmsImageAlign,
|
|
63
|
+
cmsImageStyle: () => cmsImageStyle,
|
|
64
|
+
cmsImageWidth: () => cmsImageWidth,
|
|
65
|
+
cmsLineHeight: () => cmsLineHeight,
|
|
66
|
+
cmsParagraphSpacing: () => cmsParagraphSpacing,
|
|
57
67
|
createFieldBindingResolver: () => createFieldBindingResolver,
|
|
58
68
|
emptyPatternSlots: () => emptyPatternSlots,
|
|
59
69
|
ensureImportedHtmlDocumentRoots: () => ensureImportedHtmlDocumentRoots,
|
|
@@ -1437,6 +1447,16 @@ var SANITIZE_OPTIONS = {
|
|
|
1437
1447
|
"*": [ROOTTALE_CLASS_RE]
|
|
1438
1448
|
},
|
|
1439
1449
|
allowedStyles: {
|
|
1450
|
+
img: {
|
|
1451
|
+
display: [/^block$/i],
|
|
1452
|
+
"margin-left": [CSS_LENGTH_RE, /^auto$/i],
|
|
1453
|
+
"margin-right": [CSS_LENGTH_RE, /^auto$/i]
|
|
1454
|
+
},
|
|
1455
|
+
figure: {
|
|
1456
|
+
display: [/^block$/i],
|
|
1457
|
+
"margin-left": [CSS_LENGTH_RE, /^auto$/i],
|
|
1458
|
+
"margin-right": [CSS_LENGTH_RE, /^auto$/i]
|
|
1459
|
+
},
|
|
1440
1460
|
"*": {
|
|
1441
1461
|
"aspect-ratio": [ASPECT_RATIO_RE],
|
|
1442
1462
|
background: [HEX_COLOR_RE],
|
|
@@ -1664,9 +1684,50 @@ function sitePatternPresentationAttributes(presentation) {
|
|
|
1664
1684
|
cssVariables
|
|
1665
1685
|
};
|
|
1666
1686
|
}
|
|
1687
|
+
|
|
1688
|
+
// src/editor-formatting.ts
|
|
1689
|
+
var CMS_FONT_SIZES = [14, 16, 18, 20, 24, 28, 32];
|
|
1690
|
+
var CMS_LINE_HEIGHTS = [1.2, 1.5, 1.8, 2, 2.4];
|
|
1691
|
+
var CMS_PARAGRAPH_SPACINGS = [0, 8, 16, 24, 32];
|
|
1692
|
+
var CMS_IMAGE_WIDTHS = [25, 50, 75, 100];
|
|
1693
|
+
function cmsFontSize(value) {
|
|
1694
|
+
if (typeof value !== "string") return null;
|
|
1695
|
+
return CMS_FONT_SIZES.some((size) => value === `${size}px`) ? value : null;
|
|
1696
|
+
}
|
|
1697
|
+
function cmsLineHeight(value) {
|
|
1698
|
+
if (typeof value !== "number" && typeof value !== "string") return null;
|
|
1699
|
+
return CMS_LINE_HEIGHTS.find((size) => String(size) === String(value)) ?? null;
|
|
1700
|
+
}
|
|
1701
|
+
function cmsParagraphSpacing(value) {
|
|
1702
|
+
if (typeof value !== "string") return null;
|
|
1703
|
+
return CMS_PARAGRAPH_SPACINGS.some((size) => value === `${size}px`) ? value : null;
|
|
1704
|
+
}
|
|
1705
|
+
function cmsImageWidth(value) {
|
|
1706
|
+
if (typeof value !== "string") return null;
|
|
1707
|
+
return CMS_IMAGE_WIDTHS.some((size) => value === `${size}%`) ? value : null;
|
|
1708
|
+
}
|
|
1709
|
+
function cmsImageAlign(value) {
|
|
1710
|
+
return value === "left" || value === "center" || value === "right" ? value : null;
|
|
1711
|
+
}
|
|
1712
|
+
function cmsImageStyle(attrs) {
|
|
1713
|
+
const width = cmsImageWidth(attrs.displayWidth);
|
|
1714
|
+
const align = cmsImageAlign(attrs.imageAlign);
|
|
1715
|
+
return {
|
|
1716
|
+
...width ? { width, maxWidth: "100%", height: "auto" } : {},
|
|
1717
|
+
...align ? {
|
|
1718
|
+
display: "block",
|
|
1719
|
+
marginLeft: align === "left" ? "0" : "auto",
|
|
1720
|
+
marginRight: align === "right" ? "0" : "auto"
|
|
1721
|
+
} : {}
|
|
1722
|
+
};
|
|
1723
|
+
}
|
|
1667
1724
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1668
1725
|
0 && (module.exports = {
|
|
1669
1726
|
BLOCK_NAME_PATTERN,
|
|
1727
|
+
CMS_FONT_SIZES,
|
|
1728
|
+
CMS_IMAGE_WIDTHS,
|
|
1729
|
+
CMS_LINE_HEIGHTS,
|
|
1730
|
+
CMS_PARAGRAPH_SPACINGS,
|
|
1670
1731
|
DEFAULT_SITE_PATTERN_PRESENTATION,
|
|
1671
1732
|
EMPTY_SITE_PATTERN_PLACEMENTS,
|
|
1672
1733
|
FIELD_BINDING_SOURCE,
|
|
@@ -1690,6 +1751,12 @@ function sitePatternPresentationAttributes(presentation) {
|
|
|
1690
1751
|
blockSchema,
|
|
1691
1752
|
boundFieldValue,
|
|
1692
1753
|
chainResolvers,
|
|
1754
|
+
cmsFontSize,
|
|
1755
|
+
cmsImageAlign,
|
|
1756
|
+
cmsImageStyle,
|
|
1757
|
+
cmsImageWidth,
|
|
1758
|
+
cmsLineHeight,
|
|
1759
|
+
cmsParagraphSpacing,
|
|
1693
1760
|
createFieldBindingResolver,
|
|
1694
1761
|
emptyPatternSlots,
|
|
1695
1762
|
ensureImportedHtmlDocumentRoots,
|