pds-dev-kit-web-test 2.7.631 → 2.7.632

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 (16) hide show
  1. package/dist/src/sub/DynamicLayout/CompositionRenderer/ComponentBlockMatcher.js +4 -2
  2. package/dist/src/sub/DynamicLayout/mock_section.json +2202 -0
  3. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/ComponentBlockMatcherWithCCB.js +4 -2
  4. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Image/Image.js +2 -5
  5. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Shape/Shape.d.ts +5 -0
  6. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Shape/Shape.js +228 -0
  7. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Shape/ShapeCore.d.ts +17 -0
  8. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Shape/ShapeCore.js +160 -0
  9. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Shape/ShapePahts.d.ts +49 -0
  10. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Shape/ShapePahts.js +60 -0
  11. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/types.d.ts +4 -0
  12. package/dist/src/sub/DynamicLayout/sections/CustomSection/util/parseProperties.d.ts +2 -2
  13. package/dist/src/sub/DynamicLayout/sections/CustomSection/util/types.d.ts +13 -1
  14. package/package.json +1 -1
  15. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Image/Shape.d.ts +0 -53
  16. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Image/Shape.js +0 -158
@@ -1,5 +1,5 @@
1
1
  import { CB_LAYOUT_PROP_KEYS } from './layoutPropParsers/types';
2
2
  import { CB_STYLE_PROP_KEYS } from './stylePropParsers/types';
3
- import type { Device, ParserResult, CB_TEXT_PROPERTIES_TYPE, CB_BTN_PROPERTIES_TYPE, CB_IMG_PROPERTIES_TYPE, CB_TWITTER_PROPERTIES_TYPE, CB_DIVIDER_PROPERTIES_TYPE, CB_YOUTUBE_PROPERTIES_TYPE, CB_RICHTEXT_PROPERTIES_TYPE, CB_EMBED_PROPERTIES_TYPE, CB_LIST_PROPERTIES_TYPE, CB_CONTENTSCAROUSEL_PROPERTIES_TYPE, CB_SLIDEBANNER_PROPERTIES_TYPE, CB_VIDEOPLAYER_PROPERTIES_TYPE } from './types';
3
+ import type { Device, ParserResult, CB_TEXT_PROPERTIES_TYPE, CB_BTN_PROPERTIES_TYPE, CB_IMG_PROPERTIES_TYPE, CB_TWITTER_PROPERTIES_TYPE, CB_DIVIDER_PROPERTIES_TYPE, CB_YOUTUBE_PROPERTIES_TYPE, CB_RICHTEXT_PROPERTIES_TYPE, CB_EMBED_PROPERTIES_TYPE, CB_LIST_PROPERTIES_TYPE, CB_CONTENTSCAROUSEL_PROPERTIES_TYPE, CB_SLIDEBANNER_PROPERTIES_TYPE, CB_VIDEOPLAYER_PROPERTIES_TYPE, CB_SHAPE_PROPERTIES_TYPE } from './types';
4
4
  export type specTypes = CB_LAYOUT_PROP_KEYS | CB_STYLE_PROP_KEYS;
5
- export default function parseProperties(properties: CB_TEXT_PROPERTIES_TYPE | CB_BTN_PROPERTIES_TYPE | CB_IMG_PROPERTIES_TYPE | CB_TWITTER_PROPERTIES_TYPE | CB_DIVIDER_PROPERTIES_TYPE | CB_YOUTUBE_PROPERTIES_TYPE | CB_RICHTEXT_PROPERTIES_TYPE | CB_EMBED_PROPERTIES_TYPE | CB_LIST_PROPERTIES_TYPE | CB_CONTENTSCAROUSEL_PROPERTIES_TYPE | CB_SLIDEBANNER_PROPERTIES_TYPE | CB_VIDEOPLAYER_PROPERTIES_TYPE, device: Device): ParserResult;
5
+ export default function parseProperties(properties: CB_TEXT_PROPERTIES_TYPE | CB_BTN_PROPERTIES_TYPE | CB_IMG_PROPERTIES_TYPE | CB_TWITTER_PROPERTIES_TYPE | CB_DIVIDER_PROPERTIES_TYPE | CB_YOUTUBE_PROPERTIES_TYPE | CB_RICHTEXT_PROPERTIES_TYPE | CB_EMBED_PROPERTIES_TYPE | CB_LIST_PROPERTIES_TYPE | CB_CONTENTSCAROUSEL_PROPERTIES_TYPE | CB_SLIDEBANNER_PROPERTIES_TYPE | CB_VIDEOPLAYER_PROPERTIES_TYPE | CB_SHAPE_PROPERTIES_TYPE, device: Device): ParserResult;
@@ -2,7 +2,7 @@ import type { CB_STYLE_PROP_CONTENTSCAROUSELBUTTON_SPECS, CB_STYLE_PROP_CONTENTS
2
2
  import type { CB_LAYOUT_PROP_HEIGHT, CB_LAYOUT_PROP_HEIGHTADJUSTMENT_SPECS, CB_STYLE_PROP_CONTENTSLISTDESIGN_SPECS, CB_STYLE_PROP_CONTENTSLISTPAGINATION_SPECS } from '../components/ComponentBlock/componentBlocks/ContentsList/types';
3
3
  import type { CB_STYLE_PROP_SLIDEBANNERBUTTON_SPECS, CB_STYLE_PROP_SLIDEBANNERDESIGN_SPECS, CB_STYLE_PROP_SLIDEBANNERPAGINATION_SPECS, CB_STYLE_PROP_SLIDEBANNERPLAYBACKMETHOD_SPECS, CB_STYLE_PROP_SLIDEBANNERPROGRESSBAR_SPECS } from '../components/ComponentBlock/componentBlocks/SlideBanner/types';
4
4
  import type { CB_TWITTER_STYLE_PROPS } from '../components/ComponentBlock/componentBlocks/Twitter/types';
5
- import type { CB_CONTENT_PROP_CONTENTSCAROUSEL, CB_CONTENT_PROP_SLIDEBANNER, CB_CONTENT_PROP_CLINK, CB_CONTENT_PROP_CODEBLOCK, CB_CONTENT_PROP_IMAGE, CB_CONTENT_PROP_TEXT, CB_CONTENT_PROP_TWITTER, CB_STYLE_PROP_COLOR_SPECS, CB_STYLE_PROP_TEXT_SPECS, CB_CONTENT_PROP_CONTENTSLIST, CB_CONTENT_PROP_VIDEO, CB_CONTENT_PROP_TEXTOPTION, CB_STYLE_PROP_TEXTOPTION } from '../components/ComponentBlock/componentBlocks/types';
5
+ import type { CB_CONTENT_PROP_CONTENTSCAROUSEL, CB_CONTENT_PROP_SLIDEBANNER, CB_CONTENT_PROP_CLINK, CB_CONTENT_PROP_CODEBLOCK, CB_CONTENT_PROP_IMAGE, CB_CONTENT_PROP_TEXT, CB_CONTENT_PROP_TWITTER, CB_STYLE_PROP_COLOR_SPECS, CB_STYLE_PROP_TEXT_SPECS, CB_CONTENT_PROP_CONTENTSLIST, CB_CONTENT_PROP_VIDEO, CB_CONTENT_PROP_TEXTOPTION, CB_STYLE_PROP_TEXTOPTION, CB_CONTENT_PROP_SHAPE_DESIGN } from '../components/ComponentBlock/componentBlocks/types';
6
6
  import type { CB_CONTENT_PROP_YOUTUBE_TYPE, CB_STYLE_PROP_BGCOLOR_SPECS } from '../components/ComponentBlock/componentBlocks/Youtube/types';
7
7
  import type { CB_CONTENT_PROP_VISIBILITY_SPECS } from './contentPropParsers/parseContentVisibility';
8
8
  import type { CB_EFFECT_PROP_ENTANIM_SPECS } from './effectPropParsers/parseEffectPropEntAnim';
@@ -70,6 +70,18 @@ export type CB_BTN_PROPERTIES_TYPE = CB_GENERAL_PROPERTIES_TYPE & {
70
70
  CB_LAYOUT_PROP_ARRANGE: CB_LAYOUT_PROP_ARRANGE_SPECS;
71
71
  CB_EFFECT_PROP_ENTANIM: CB_EFFECT_PROP_ENTANIM_SPECS;
72
72
  };
73
+ export type CB_SHAPE_PROPERTIES_TYPE = CB_GENERAL_PROPERTIES_TYPE & {
74
+ CB_CONTENT_PROP_SHAPE_DESIGN: CB_CONTENT_PROP_SHAPE_DESIGN;
75
+ CB_CONTENT_PROP_CLINK: CB_CONTENT_PROP_CLINK;
76
+ CB_CONTENT_PROP_VISIBILITY: CB_CONTENT_PROP_VISIBILITY_SPECS;
77
+ CB_STYLE_PROP_BORDER: CB_STYLE_PROP_BORDER_SPECS;
78
+ CB_STYLE_PROP_SHADOW: CB_STYLE_PROP_SHADOW_SPECS;
79
+ CB_STYLE_PROP_OPACITY: CB_STYLE_PROP_TEXT_OPACITY_SPECS;
80
+ CB_STYLE_PROP_BGCOLOR: CB_STYLE_PROP_BGCOLOR_SPECS;
81
+ CB_LAYOUT_PROP_PADDING: CB_LAYOUT_PROP_PADDING_SPECS;
82
+ CB_LAYOUT_PROP_ARRANGE: CB_LAYOUT_PROP_ARRANGE_SPECS;
83
+ CB_EFFECT_PROP_ENTANIM: CB_EFFECT_PROP_ENTANIM_SPECS;
84
+ };
73
85
  export type CB_IMG_PROPERTIES_TYPE = CB_GENERAL_PROPERTIES_TYPE & {
74
86
  CB_CONTENT_PROP_CLINK: CB_CONTENT_PROP_CLINK;
75
87
  CB_CONTENT_PROP_IMAGE: CB_CONTENT_PROP_IMAGE;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pds-dev-kit-web-test",
3
- "version": "2.7.631",
3
+ "version": "2.7.632",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -1,53 +0,0 @@
1
- import React from 'react';
2
- import { CSSProperties } from 'styled-components';
3
- declare const ALL_SQS_SHAPES: {
4
- SQUARE: string;
5
- CIRCLE: string;
6
- ROUNDED_SQUARE: string;
7
- OVAL: string;
8
- PILL: string;
9
- ARCH: string;
10
- UPSIDE_DOWN_ARCH: string;
11
- SIDEWAYS_ARCH_LEFT: string;
12
- SIDEWAYS_ARCH_RIGHT: string;
13
- DOUBLE_ARCH: string;
14
- TRIANGLE: string;
15
- DIAMOND: string;
16
- PENTAGON: string;
17
- HEXAGON: string;
18
- OCTAGON: string;
19
- TRAPEZOID: string;
20
- PARALLELOGRAM: string;
21
- RHOMBUS: string;
22
- STAR_4: string;
23
- STAR_5: string;
24
- STAR_8: string;
25
- STAR_12: string;
26
- BURST_1: string;
27
- BURST_2: string;
28
- LEAF_1: string;
29
- LEAF_2: string;
30
- BLOB_1: string;
31
- BLOB_2: string;
32
- BLOB_3: string;
33
- WAVE: string;
34
- TICKET: string;
35
- SHIELD: string;
36
- TV: string;
37
- CROSS: string;
38
- HEART: string;
39
- };
40
- export type ShapeType = keyof typeof ALL_SQS_SHAPES;
41
- interface ShapeImageProps {
42
- src: string;
43
- shape?: ShapeType;
44
- normalStyle: CSSProperties;
45
- hoverStyle: CSSProperties;
46
- focalPoint?: {
47
- x: number;
48
- y: number;
49
- };
50
- className?: string;
51
- }
52
- declare const ShapeImage: React.FC<ShapeImageProps>;
53
- export default ShapeImage;
@@ -1,158 +0,0 @@
1
- "use strict";
2
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
- return cooked;
5
- };
6
- var __assign = (this && this.__assign) || function () {
7
- __assign = Object.assign || function(t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i];
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
- t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
16
- };
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
22
- }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- var jsx_runtime_1 = require("react/jsx-runtime");
42
- var react_1 = require("react");
43
- var styled_components_1 = __importStar(require("styled-components"));
44
- // 1. Squarespace Fluid Engine의 모든 핵심 Shape Paths
45
- var ALL_SQS_SHAPES = {
46
- // --- BASIC ---
47
- SQUARE: 'M0,0 L100,0 L100,100 L0,100 Z',
48
- CIRCLE: 'M50,0A50,50,0,1,1,50,100A50,50,0,1,1,50,0',
49
- ROUNDED_SQUARE: 'M0,20 Q0,0 20,0 L80,0 Q100,0 100,20 L100,80 Q100,100 80,100 L20,100 Q0,100 0,80 Z',
50
- OVAL: 'M50,0C22.4,0,0,22.4,0,50s22.4,50,50,50s50-22.4,50-50S77.6,0,50,0z',
51
- PILL: 'M0,50 C0,22.4 22.4,0 50,0 L50,0 C77.6,0 100,22.4 100,50 L100,50 C100,77.6 77.6,100 50,100 L50,100 C22.4,100 0,77.6 0,50 Z',
52
- // --- ARCHES & CURVES ---
53
- ARCH: 'M0,100 L0,50 C0,22.4 22.4,0 50,0 C77.6,0 100,22.4 100,50 L100,100 Z',
54
- UPSIDE_DOWN_ARCH: 'M100,0 L100,50 C100,77.6 77.6,100 50,100 C22.4,100 0,77.6 0,50 L0,0 Z',
55
- SIDEWAYS_ARCH_LEFT: 'M100,0 L50,0 C22.4,0 0,22.4 0,50 C0,77.6 22.4,100 50,100 L100,100 Z',
56
- SIDEWAYS_ARCH_RIGHT: 'M0,0 L50,0 C77.6,0 100,22.4 100,50 C100,77.6 77.6,100 50,100 L0,100 Z',
57
- DOUBLE_ARCH: 'M0,50 C0,22.4 22.4,0 50,0 S100,22.4 100,50 S77.6,100 50,100 S0,77.6 0,50 Z',
58
- // --- POLYGONS ---
59
- TRIANGLE: 'M50,0 L100,100 L0,100 Z',
60
- DIAMOND: 'M50,0 L100,50 L50,100 L0,50 Z',
61
- PENTAGON: 'M50,0 L100,38 L81,100 L19,100 L0,38 Z',
62
- HEXAGON: 'M25,0 L75,0 L100,50 L75,100 L25,100 L0,50 Z',
63
- OCTAGON: 'M30,0 L70,0 L100,30 L100,70 L70,100 L30,100 L0,70 L0,30 Z',
64
- TRAPEZOID: 'M20,0 L80,0 L100,100 L0,100 Z',
65
- PARALLELOGRAM: 'M20,0 L100,0 L80,100 L0,100 Z',
66
- RHOMBUS: 'M30,0 L100,0 L70,100 L0,100 Z',
67
- // --- STARS & BURSTS ---
68
- STAR_4: 'M50,0 L60,40 L100,50 L60,60 L50,100 L40,60 L0,50 L40,40 Z',
69
- STAR_5: 'M50,0 L61,35 L98,35 L68,57 L79,91 L50,70 L21,91 L32,57 L2,35 L39,35 Z',
70
- STAR_8: 'M50,0 L58,33 L85,15 L75,45 L100,50 L75,55 L85,85 L58,67 L50,100 L42,67 L15,85 L25,55 L0,50 L25,45 L15,15 L42,33 Z',
71
- STAR_12: 'M50,0 L54,20 L73,12 L65,30 L85,30 L72,43 L85,57 L65,57 L73,75 L54,67 L50,85 L46,67 L27,75 L35,57 L15,57 L28,43 L15,30 L35,30 L27,12 L46,20 Z',
72
- BURST_1: 'M50,0 L60,10 L80,0 L80,20 L100,20 L90,40 L100,60 L80,60 L80,80 L60,70 L50,80 L40,70 L20,80 L20,60 L0,60 L10,40 L0,20 L20,20 L20,0 L40,10 Z',
73
- BURST_2: 'M50,5 L65,0 L75,15 L95,10 L90,30 L100,50 L90,70 L100,90 L75,85 L65,100 L50,95 L35,100 L25,85 L5,90 L10,70 L0,50 L10,30 L5,10 L25,15 L35,0 Z',
74
- // --- ORGANIC & ABSTRACT ---
75
- LEAF_1: 'M0,100 C0,100 0,0 100,0 C100,0 100,100 0,100 Z',
76
- LEAF_2: 'M50,0 C100,0 100,50 100,100 C100,100 50,100 0,100 C0,50 0,0 50,0 Z',
77
- BLOB_1: 'M85,30 C95,50 85,80 60,90 C35,100 10,80 5,50 C0,20 30,0 60,5 C80,10 75,10 85,30 Z',
78
- BLOB_2: 'M90,40 C100,60 80,90 50,95 C20,100 0,80 0,50 C0,20 30,0 60,0 C80,0 80,20 90,40 Z',
79
- BLOB_3: 'M50,0 C80,0 100,20 100,50 S80,100 50,100 S0,80 0,50 S20,0 50,0',
80
- WAVE: 'M0,20 Q25,0 50,20 T100,20 L100,100 L0,100 Z',
81
- // --- SPECIAL FRAMES ---
82
- TICKET: 'M0,20 Q0,0 20,0 L80,0 Q100,0 100,20 L100,40 Q85,50 100,60 L100,80 Q100,100 80,100 L20,100 Q0,100 0,80 L0,60 Q15,50 0,40 Z',
83
- SHIELD: 'M0,0 L100,0 L100,60 C100,85 50,100 50,100 C50,100 0,85 0,60 Z',
84
- TV: 'M10,0 Q0,0 0,10 L0,90 Q0,100 10,100 L90,100 Q100,100 100,90 L100,10 Q100,0 90,0 Z M15,15 L85,15 L85,85 L15,85 Z',
85
- CROSS: 'M35,0 L65,0 L65,35 L100,35 L100,65 L65,65 L65,100 L35,100 L35,65 L0,65 L0,35 L35,35 Z',
86
- HEART: 'M50,30 C50,10 20,10 20,40 C20,70 50,90 50,90 C50,90 80,70 80,40 C80,10 50,10 50,30 Z'
87
- };
88
- var S_ImageContainer = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n height: 100%;\n position: relative;\n width: 100%;\n\n ", ";\n\n ", "\n\n & img {\n height: 100%;\n object-fit: ", ";\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n ", "\n width: 100%;\n }\n\n /* Hover \uC2DC \uADF8\uB9BC\uC790 \uBC0F \uC2A4\uD0C0\uC77C \uBCC0\uD654 */\n &:hover {\n ", ";\n ", "\n }\n"], ["\n height: 100%;\n position: relative;\n width: 100%;\n\n ", ";\n\n ", "\n\n & img {\n height: 100%;\n object-fit: ", ";\n transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n ", "\n width: 100%;\n }\n\n /* Hover \uC2DC \uADF8\uB9BC\uC790 \uBC0F \uC2A4\uD0C0\uC77C \uBCC0\uD654 */\n &:hover {\n ", ";\n ", "\n }\n"])), function (_a) {
89
- var normalStyle = _a.normalStyle;
90
- return (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n "], ["\n ", "\n "])), normalStyle);
91
- }, function (_a) {
92
- var hasShape = _a.hasShape, normalStyle = _a.normalStyle;
93
- var rawShadow = normalStyle.boxShadow || normalStyle.shadow;
94
- if (hasShape && rawShadow) {
95
- return (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n box-shadow: none !important;\n /* \uC218\uC815\uB41C drop-shadow \uC801\uC6A9 */\n filter: ", ";\n "], ["\n box-shadow: none !important;\n /* \uC218\uC815\uB41C drop-shadow \uC801\uC6A9 */\n filter: ", ";\n "])), formatDropShadow(rawShadow));
96
- }
97
- }, function (_a) {
98
- var normalStyle = _a.normalStyle;
99
- return normalStyle.backgroundSize === 'contain' ? 'contain' : 'cover';
100
- }, function (_a) {
101
- var hasShape = _a.hasShape, maskId = _a.maskId;
102
- return hasShape && (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n -webkit-clip-path: url(#", ");\n clip-path: url(#", ");\n "], ["\n -webkit-clip-path: url(#", ");\n clip-path: url(#", ");\n "])), maskId, maskId);
103
- }, function (_a) {
104
- var hoverStyle = _a.hoverStyle;
105
- return (0, styled_components_1.css)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n ", "\n "], ["\n ", "\n "])), hoverStyle);
106
- }, function (_a) {
107
- var hasShape = _a.hasShape, hoverStyle = _a.hoverStyle;
108
- return hasShape &&
109
- (hoverStyle.boxShadow || hoverStyle.shadow) && (0, styled_components_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n filter: drop-shadow(", ");\n "], ["\n filter: drop-shadow(", ");\n "])), hoverStyle.boxShadow || hoverStyle.shadow);
110
- });
111
- var S_ShapeSelect = styled_components_1.default.div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n position: absolute;\n right: 8px;\n top: 8px;\n z-index: 2;\n\n select {\n appearance: none;\n background: rgba(0, 0, 0, 0.6);\n border: 1px solid rgba(255, 255, 255, 0.4);\n border-radius: 6px;\n color: #fff;\n font-size: 12px;\n outline: none;\n padding: 4px 8px;\n }\n"], ["\n position: absolute;\n right: 8px;\n top: 8px;\n z-index: 2;\n\n select {\n appearance: none;\n background: rgba(0, 0, 0, 0.6);\n border: 1px solid rgba(255, 255, 255, 0.4);\n border-radius: 6px;\n color: #fff;\n font-size: 12px;\n outline: none;\n padding: 4px 8px;\n }\n"])));
112
- var ShapeImage = function (_a) {
113
- var src = _a.src, shape = _a.shape, normalStyle = _a.normalStyle, hoverStyle = _a.hoverStyle, _b = _a.focalPoint, focalPoint = _b === void 0 ? { x: 0.5, y: 0.5 } : _b, className = _a.className;
114
- // 컴포넌트 인스턴스마다 고유한 마스크 ID 생성
115
- var maskId = (0, react_1.useMemo)(function () { return "sqs-mask-".concat(Math.random().toString(36).substr(2, 9)); }, []);
116
- var _c = (0, react_1.useState)(shape !== null && shape !== void 0 ? shape : ''), selectedShape = _c[0], setSelectedShape = _c[1];
117
- (0, react_1.useEffect)(function () {
118
- setSelectedShape(shape !== null && shape !== void 0 ? shape : '');
119
- }, [shape]);
120
- var effectiveShape = selectedShape || undefined;
121
- var shapeOptions = Object.keys(ALL_SQS_SHAPES);
122
- // 1. 테두리 스타일 추출 로직 (e.g., "2px solid red" -> {width: 2, color: 'red'})
123
- var getBorderStyle = function (style) {
124
- var _a, _b;
125
- var width = (_a = parseInt(style.borderWidth, 10)) !== null && _a !== void 0 ? _a : 0;
126
- var color = (_b = style.borderColor) !== null && _b !== void 0 ? _b : 'transparent';
127
- return { width: width, color: color };
128
- };
129
- var normalBorder = getBorderStyle(normalStyle);
130
- return ((0, jsx_runtime_1.jsxs)("div", __assign({ style: { position: 'relative', width: '100%', height: '100%' } }, { children: [(0, jsx_runtime_1.jsx)(S_ShapeSelect, { children: (0, jsx_runtime_1.jsxs)("select", __assign({ value: selectedShape, onChange: function (event) { return setSelectedShape(event.target.value); } }, { children: [(0, jsx_runtime_1.jsx)("option", __assign({ value: "" }, { children: "None" })), shapeOptions.map(function (option) { return ((0, jsx_runtime_1.jsx)("option", __assign({ value: option }, { children: option.replace(/_/g, ' ') }), option)); })] })) }), (0, jsx_runtime_1.jsxs)(S_ImageContainer, __assign({ normalStyle: normalStyle, hoverStyle: hoverStyle, maskId: maskId, hasShape: !!effectiveShape, className: className }, { children: [effectiveShape && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("svg", __assign({ width: "0", height: "0", style: { position: 'absolute' } }, { children: (0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsx)("clipPath", __assign({ id: maskId, clipPathUnits: "objectBoundingBox" }, { children: (0, jsx_runtime_1.jsx)("path", { d: ALL_SQS_SHAPES[effectiveShape], transform: "scale(0.01)" }) })) }) })), normalBorder.width > 0 && ((0, jsx_runtime_1.jsx)("svg", __assign({ viewBox: "0 0 100 100", preserveAspectRatio: "none", style: {
131
- position: 'absolute',
132
- top: 0,
133
- left: 0,
134
- width: '100%',
135
- height: '100%',
136
- pointerEvents: 'none',
137
- zIndex: 1
138
- } }, { children: (0, jsx_runtime_1.jsx)("path", { d: ALL_SQS_SHAPES[effectiveShape], fill: "none", stroke: normalBorder.color, strokeWidth: normalBorder.width, vectorEffect: "non-scaling-stroke" }) })))] })), (0, jsx_runtime_1.jsx)("img", { src: src, alt: "content", style: {
139
- objectPosition: "".concat(focalPoint.x * 100, "% ").concat(focalPoint.y * 100, "%")
140
- } })] }))] })));
141
- };
142
- // boxShadow 문자열에서 spread-radius를 제거하는 유틸리티 함수
143
- var formatDropShadow = function (shadowValue) {
144
- if (!shadowValue || shadowValue === 'none')
145
- return 'none';
146
- // 공백으로 나눈 뒤 숫자+단위(px 등) 패턴인 것들 중 4번째 숫자를 찾아 제거
147
- var parts = shadowValue.split(/\s+/);
148
- // 보통 [x, y, blur, spread, color] 순서임
149
- // 숫자가 4개인 경우 4번째(index 3)가 spread이므로 이를 제외하고 다시 합침
150
- var filteredParts = parts.filter(function (part, index) {
151
- var isDimension = /^-?\d+(\.\d+)?(px|em|rem|vh|vw|%)?$/.test(part);
152
- // 첫 3개의 치수(x, y, blur)는 유지하고 4번째 치수(spread)는 버림
153
- return !isDimension || index < 3;
154
- });
155
- return "drop-shadow(".concat(filteredParts.join(' '), ")");
156
- };
157
- exports.default = ShapeImage;
158
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;