@ncds/ui-admin 1.6.3 → 1.6.4-alpha.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.
Files changed (262) hide show
  1. package/mcp/bin/server.d.ts +1 -0
  2. package/mcp/bin/server.js +67 -0
  3. package/mcp/bin/server.mjs +14 -0
  4. package/mcp/bin/tools/getComponentHtml.d.ts +3 -0
  5. package/mcp/bin/tools/getComponentHtml.js +30 -0
  6. package/mcp/bin/tools/getComponentProps.d.ts +3 -0
  7. package/mcp/bin/tools/getComponentProps.js +16 -0
  8. package/mcp/bin/tools/listComponents.d.ts +3 -0
  9. package/mcp/bin/tools/listComponents.js +15 -0
  10. package/mcp/bin/tools/ping.d.ts +11 -0
  11. package/mcp/bin/tools/ping.js +30 -0
  12. package/mcp/bin/tools/searchComponent.d.ts +3 -0
  13. package/mcp/bin/tools/searchComponent.js +20 -0
  14. package/mcp/bin/tools/validateHtml.d.ts +10 -0
  15. package/mcp/bin/tools/validateHtml.js +142 -0
  16. package/mcp/bin/types.d.ts +28 -0
  17. package/mcp/bin/types.js +5 -0
  18. package/mcp/bin/utils/dataLoader.d.ts +11 -0
  19. package/mcp/bin/utils/dataLoader.js +68 -0
  20. package/mcp/bin/utils/logger.d.ts +18 -0
  21. package/mcp/bin/utils/logger.js +27 -0
  22. package/mcp/bin/utils/response.d.ts +23 -0
  23. package/mcp/bin/utils/response.js +31 -0
  24. package/mcp/bin/version.d.ts +1 -0
  25. package/mcp/bin/version.js +4 -0
  26. package/mcp/data/.gitkeep +0 -0
  27. package/mcp/data/_meta.json +7 -0
  28. package/mcp/data/badge-group.json +73 -0
  29. package/mcp/data/badge.json +86 -0
  30. package/mcp/data/bread-crumb.json +22 -0
  31. package/mcp/data/breadcrumb.json +31 -0
  32. package/mcp/data/button-group.json +65 -0
  33. package/mcp/data/button.json +114 -0
  34. package/mcp/data/carousel-arrow.json +59 -0
  35. package/mcp/data/carousel-number-group.json +57 -0
  36. package/mcp/data/carousel.json +22 -0
  37. package/mcp/data/checkbox.json +31 -0
  38. package/mcp/data/combobox.json +114 -0
  39. package/mcp/data/date-picker.json +77 -0
  40. package/mcp/data/divider.json +56 -0
  41. package/mcp/data/dot.json +55 -0
  42. package/mcp/data/dropdown.json +81 -0
  43. package/mcp/data/empty-state.json +34 -0
  44. package/mcp/data/featured-icon.json +83 -0
  45. package/mcp/data/file-input.json +76 -0
  46. package/mcp/data/horizontal-tab.json +71 -0
  47. package/mcp/data/image-file-input.json +97 -0
  48. package/mcp/data/input.json +104 -0
  49. package/mcp/data/modal.json +85 -0
  50. package/mcp/data/notification.json +116 -0
  51. package/mcp/data/number-input.json +128 -0
  52. package/mcp/data/pagination.json +65 -0
  53. package/mcp/data/password-input.json +47 -0
  54. package/mcp/data/progress-bar.json +51 -0
  55. package/mcp/data/progress-circle.json +54 -0
  56. package/mcp/data/radio.json +31 -0
  57. package/mcp/data/range-date-picker-with-buttons.json +64 -0
  58. package/mcp/data/range-date-picker.json +55 -0
  59. package/mcp/data/select-dropdown.json +32 -0
  60. package/mcp/data/select.json +64 -0
  61. package/mcp/data/selectbox.json +129 -0
  62. package/mcp/data/slider.json +57 -0
  63. package/mcp/data/spinner.json +54 -0
  64. package/mcp/data/switch.json +71 -0
  65. package/mcp/data/tab.json +122 -0
  66. package/mcp/data/tag.json +66 -0
  67. package/mcp/data/textarea.json +88 -0
  68. package/mcp/data/toggle.json +59 -0
  69. package/mcp/data/tooltip.json +123 -0
  70. package/mcp/data/vertical-tab.json +64 -0
  71. package/mcp/templates/.mcp.json.example +8 -0
  72. package/mcp/templates/README.md +31 -0
  73. package/package.json +26 -3
  74. package/dist/cjs/assets/scripts/comboBox.js +0 -280
  75. package/dist/cjs/assets/scripts/datePicker.js +0 -706
  76. package/dist/cjs/assets/scripts/featuredIcon.js +0 -95
  77. package/dist/cjs/assets/scripts/fileInput/FileInput.js +0 -183
  78. package/dist/cjs/assets/scripts/fileInput/FileInputModel.js +0 -246
  79. package/dist/cjs/assets/scripts/fileInput/FileInputView.js +0 -455
  80. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +0 -35
  81. package/dist/cjs/assets/scripts/fileInput/const/index.js +0 -27
  82. package/dist/cjs/assets/scripts/fileInput/const/types.js +0 -13
  83. package/dist/cjs/assets/scripts/fileInput/index.js +0 -44
  84. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +0 -187
  85. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -255
  86. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +0 -354
  87. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +0 -41
  88. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +0 -27
  89. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +0 -13
  90. package/dist/cjs/assets/scripts/imageFileInput/index.js +0 -44
  91. package/dist/cjs/assets/scripts/index.js +0 -30
  92. package/dist/cjs/assets/scripts/modal/Modal.js +0 -116
  93. package/dist/cjs/assets/scripts/modal/ModalActions.js +0 -128
  94. package/dist/cjs/assets/scripts/modal/ModalContent.js +0 -46
  95. package/dist/cjs/assets/scripts/modal/ModalHeader.js +0 -115
  96. package/dist/cjs/assets/scripts/modal/const/classNames.js +0 -41
  97. package/dist/cjs/assets/scripts/modal/const/index.js +0 -27
  98. package/dist/cjs/assets/scripts/modal/const/types.js +0 -5
  99. package/dist/cjs/assets/scripts/modal/index.js +0 -61
  100. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +0 -35
  101. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +0 -180
  102. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +0 -120
  103. package/dist/cjs/assets/scripts/notification/MessageNotification.js +0 -146
  104. package/dist/cjs/assets/scripts/notification/Notification.js +0 -116
  105. package/dist/cjs/assets/scripts/notification/const/classNames.js +0 -50
  106. package/dist/cjs/assets/scripts/notification/const/icons.js +0 -45
  107. package/dist/cjs/assets/scripts/notification/const/index.js +0 -87
  108. package/dist/cjs/assets/scripts/notification/const/sizes.js +0 -54
  109. package/dist/cjs/assets/scripts/notification/const/types.js +0 -14
  110. package/dist/cjs/assets/scripts/notification/index.js +0 -92
  111. package/dist/cjs/assets/scripts/notification/utils.js +0 -92
  112. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +0 -272
  113. package/dist/cjs/assets/scripts/progress-bar/index.js +0 -12
  114. package/dist/cjs/assets/scripts/selectBox.js +0 -319
  115. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +0 -46
  116. package/dist/cjs/assets/scripts/tab.js +0 -40
  117. package/dist/cjs/assets/scripts/tag/Tag.js +0 -268
  118. package/dist/cjs/assets/scripts/tag/const/classNames.js +0 -24
  119. package/dist/cjs/assets/scripts/tag/const/index.js +0 -38
  120. package/dist/cjs/assets/scripts/tag/const/sizes.js +0 -13
  121. package/dist/cjs/assets/scripts/tag/const/types.js +0 -5
  122. package/dist/cjs/assets/scripts/tag/index.js +0 -44
  123. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +0 -380
  124. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +0 -84
  125. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +0 -29
  126. package/dist/cjs/assets/scripts/tooltip/const/constants.js +0 -56
  127. package/dist/cjs/assets/scripts/tooltip/const/icons.js +0 -15
  128. package/dist/cjs/assets/scripts/tooltip/const/index.js +0 -123
  129. package/dist/cjs/assets/scripts/tooltip/const/templates.js +0 -49
  130. package/dist/cjs/assets/scripts/tooltip/const/types.js +0 -5
  131. package/dist/cjs/assets/scripts/tooltip/index.js +0 -57
  132. package/dist/cjs/assets/scripts/tooltip/utils.js +0 -41
  133. package/dist/cjs/assets/scripts/utils/unifiedBox/DOMRenderer.js +0 -384
  134. package/dist/cjs/assets/scripts/utils/unifiedBox/DropdownModel.js +0 -368
  135. package/dist/cjs/assets/scripts/utils/unifiedBox/UnifiedBoxController.js +0 -681
  136. package/dist/cjs/assets/scripts/utils/unifiedBox/UnifiedBoxManager.js +0 -711
  137. package/dist/esm/assets/scripts/comboBox.js +0 -275
  138. package/dist/esm/assets/scripts/datePicker.js +0 -699
  139. package/dist/esm/assets/scripts/featuredIcon.js +0 -90
  140. package/dist/esm/assets/scripts/fileInput/FileInput.js +0 -178
  141. package/dist/esm/assets/scripts/fileInput/FileInputModel.js +0 -241
  142. package/dist/esm/assets/scripts/fileInput/FileInputView.js +0 -450
  143. package/dist/esm/assets/scripts/fileInput/const/classNames.js +0 -25
  144. package/dist/esm/assets/scripts/fileInput/const/index.js +0 -2
  145. package/dist/esm/assets/scripts/fileInput/const/types.js +0 -7
  146. package/dist/esm/assets/scripts/fileInput/index.js +0 -9
  147. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +0 -182
  148. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -250
  149. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +0 -349
  150. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +0 -30
  151. package/dist/esm/assets/scripts/imageFileInput/const/index.js +0 -2
  152. package/dist/esm/assets/scripts/imageFileInput/const/types.js +0 -7
  153. package/dist/esm/assets/scripts/imageFileInput/index.js +0 -9
  154. package/dist/esm/assets/scripts/index.js +0 -28
  155. package/dist/esm/assets/scripts/modal/Modal.js +0 -110
  156. package/dist/esm/assets/scripts/modal/ModalActions.js +0 -123
  157. package/dist/esm/assets/scripts/modal/ModalContent.js +0 -41
  158. package/dist/esm/assets/scripts/modal/ModalHeader.js +0 -110
  159. package/dist/esm/assets/scripts/modal/const/classNames.js +0 -31
  160. package/dist/esm/assets/scripts/modal/const/index.js +0 -2
  161. package/dist/esm/assets/scripts/modal/const/types.js +0 -1
  162. package/dist/esm/assets/scripts/modal/index.js +0 -15
  163. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +0 -28
  164. package/dist/esm/assets/scripts/notification/FloatingNotification.js +0 -176
  165. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +0 -115
  166. package/dist/esm/assets/scripts/notification/MessageNotification.js +0 -141
  167. package/dist/esm/assets/scripts/notification/Notification.js +0 -111
  168. package/dist/esm/assets/scripts/notification/const/classNames.js +0 -44
  169. package/dist/esm/assets/scripts/notification/const/icons.js +0 -39
  170. package/dist/esm/assets/scripts/notification/const/index.js +0 -4
  171. package/dist/esm/assets/scripts/notification/const/sizes.js +0 -48
  172. package/dist/esm/assets/scripts/notification/const/types.js +0 -8
  173. package/dist/esm/assets/scripts/notification/index.js +0 -11
  174. package/dist/esm/assets/scripts/notification/utils.js +0 -79
  175. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +0 -267
  176. package/dist/esm/assets/scripts/progress-bar/index.js +0 -1
  177. package/dist/esm/assets/scripts/selectBox.js +0 -314
  178. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +0 -38
  179. package/dist/esm/assets/scripts/tab.js +0 -35
  180. package/dist/esm/assets/scripts/tag/Tag.js +0 -263
  181. package/dist/esm/assets/scripts/tag/const/classNames.js +0 -16
  182. package/dist/esm/assets/scripts/tag/const/index.js +0 -3
  183. package/dist/esm/assets/scripts/tag/const/sizes.js +0 -7
  184. package/dist/esm/assets/scripts/tag/const/types.js +0 -1
  185. package/dist/esm/assets/scripts/tag/index.js +0 -9
  186. package/dist/esm/assets/scripts/tooltip/Tooltip.js +0 -375
  187. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +0 -79
  188. package/dist/esm/assets/scripts/tooltip/const/classNames.js +0 -23
  189. package/dist/esm/assets/scripts/tooltip/const/constants.js +0 -50
  190. package/dist/esm/assets/scripts/tooltip/const/icons.js +0 -9
  191. package/dist/esm/assets/scripts/tooltip/const/index.js +0 -4
  192. package/dist/esm/assets/scripts/tooltip/const/templates.js +0 -42
  193. package/dist/esm/assets/scripts/tooltip/const/types.js +0 -1
  194. package/dist/esm/assets/scripts/tooltip/index.js +0 -10
  195. package/dist/esm/assets/scripts/tooltip/utils.js +0 -35
  196. package/dist/esm/assets/scripts/utils/unifiedBox/DOMRenderer.js +0 -379
  197. package/dist/esm/assets/scripts/utils/unifiedBox/DropdownModel.js +0 -363
  198. package/dist/esm/assets/scripts/utils/unifiedBox/UnifiedBoxController.js +0 -676
  199. package/dist/esm/assets/scripts/utils/unifiedBox/UnifiedBoxManager.js +0 -706
  200. package/dist/types/assets/scripts/comboBox.d.ts +0 -91
  201. package/dist/types/assets/scripts/datePicker.d.ts +0 -87
  202. package/dist/types/assets/scripts/featuredIcon.d.ts +0 -23
  203. package/dist/types/assets/scripts/fileInput/FileInput.d.ts +0 -67
  204. package/dist/types/assets/scripts/fileInput/FileInputModel.d.ts +0 -70
  205. package/dist/types/assets/scripts/fileInput/FileInputView.d.ts +0 -77
  206. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +0 -17
  207. package/dist/types/assets/scripts/fileInput/const/index.d.ts +0 -3
  208. package/dist/types/assets/scripts/fileInput/const/types.d.ts +0 -132
  209. package/dist/types/assets/scripts/fileInput/index.d.ts +0 -4
  210. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -64
  211. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -74
  212. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -80
  213. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +0 -20
  214. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +0 -3
  215. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +0 -126
  216. package/dist/types/assets/scripts/imageFileInput/index.d.ts +0 -4
  217. package/dist/types/assets/scripts/index.d.ts +0 -33
  218. package/dist/types/assets/scripts/modal/Modal.d.ts +0 -28
  219. package/dist/types/assets/scripts/modal/ModalActions.d.ts +0 -19
  220. package/dist/types/assets/scripts/modal/ModalContent.d.ts +0 -14
  221. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +0 -16
  222. package/dist/types/assets/scripts/modal/const/classNames.d.ts +0 -23
  223. package/dist/types/assets/scripts/modal/const/index.d.ts +0 -3
  224. package/dist/types/assets/scripts/modal/const/types.d.ts +0 -62
  225. package/dist/types/assets/scripts/modal/index.d.ts +0 -8
  226. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +0 -11
  227. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +0 -25
  228. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +0 -22
  229. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +0 -23
  230. package/dist/types/assets/scripts/notification/Notification.d.ts +0 -22
  231. package/dist/types/assets/scripts/notification/const/classNames.d.ts +0 -44
  232. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -26
  233. package/dist/types/assets/scripts/notification/const/index.d.ts +0 -6
  234. package/dist/types/assets/scripts/notification/const/sizes.d.ts +0 -33
  235. package/dist/types/assets/scripts/notification/const/types.d.ts +0 -20
  236. package/dist/types/assets/scripts/notification/index.d.ts +0 -8
  237. package/dist/types/assets/scripts/notification/utils.d.ts +0 -9
  238. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +0 -68
  239. package/dist/types/assets/scripts/progress-bar/index.d.ts +0 -2
  240. package/dist/types/assets/scripts/selectBox.d.ts +0 -77
  241. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -6
  242. package/dist/types/assets/scripts/tab.d.ts +0 -8
  243. package/dist/types/assets/scripts/tag/Tag.d.ts +0 -28
  244. package/dist/types/assets/scripts/tag/const/classNames.d.ts +0 -12
  245. package/dist/types/assets/scripts/tag/const/index.d.ts +0 -4
  246. package/dist/types/assets/scripts/tag/const/sizes.d.ts +0 -8
  247. package/dist/types/assets/scripts/tag/const/types.d.ts +0 -34
  248. package/dist/types/assets/scripts/tag/index.d.ts +0 -4
  249. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +0 -55
  250. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -22
  251. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +0 -18
  252. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +0 -34
  253. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +0 -5
  254. package/dist/types/assets/scripts/tooltip/const/index.d.ts +0 -6
  255. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +0 -17
  256. package/dist/types/assets/scripts/tooltip/const/types.d.ts +0 -15
  257. package/dist/types/assets/scripts/tooltip/index.d.ts +0 -7
  258. package/dist/types/assets/scripts/tooltip/utils.d.ts +0 -3
  259. package/dist/types/assets/scripts/utils/unifiedBox/DOMRenderer.d.ts +0 -108
  260. package/dist/types/assets/scripts/utils/unifiedBox/DropdownModel.d.ts +0 -158
  261. package/dist/types/assets/scripts/utils/unifiedBox/UnifiedBoxController.d.ts +0 -171
  262. package/dist/types/assets/scripts/utils/unifiedBox/UnifiedBoxManager.d.ts +0 -99
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.FeaturedIcon = void 0;
7
- var __assign = void 0 && (void 0).__assign || function () {
8
- __assign = Object.assign || function (t) {
9
- for (var s, i = 1, n = arguments.length; i < n; i++) {
10
- s = arguments[i];
11
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
12
- }
13
- return t;
14
- };
15
- return __assign.apply(this, arguments);
16
- };
17
- // React 컴포넌트와 동일하게 구성
18
- var iconSizeMap = {
19
- sm: 16,
20
- md: 20,
21
- lg: 24,
22
- xl: 28
23
- };
24
- var FeaturedIcon = exports.FeaturedIcon = /** @class */function () {
25
- function FeaturedIcon(options) {
26
- this.options = __assign({
27
- theme: 'light-circle',
28
- color: 'neutral',
29
- size: 'md',
30
- className: ''
31
- }, options);
32
- this.element = this.createElement();
33
- }
34
- // svgString ( ICON SVG ) 을 받아서 요소를 생성
35
- FeaturedIcon.prototype.createElement = function () {
36
- var _a = this.options,
37
- theme = _a.theme,
38
- color = _a.color,
39
- size = _a.size,
40
- className = _a.className,
41
- svgString = _a.svgString;
42
- // React FeaturedIcon과 동일한 클래스 구조
43
- var classes = ['ncua-featured-icon', "ncua-featured-icon--".concat(theme), "ncua-featured-icon--".concat(color), "ncua-featured-icon--".concat(size)];
44
- if (className) {
45
- classes.push(className);
46
- }
47
- var div = document.createElement('div');
48
- div.className = classes.join(' ');
49
- // outline-circle 테마일 때 추가 요소들 (React 컴포넌트와 동일)
50
- if (theme === 'outline-circle') {
51
- var innerOutline = document.createElement('div');
52
- innerOutline.className = 'ncua-featured-icon__outline ncua-featured-icon__outline--inner';
53
- div.appendChild(innerOutline);
54
- var outerOutline = document.createElement('div');
55
- outerOutline.className = 'ncua-featured-icon__outline ncua-featured-icon__outline--outer';
56
- div.appendChild(outerOutline);
57
- }
58
- // SVG 아이콘 추가
59
- var iconSize = iconSizeMap[size];
60
- var svgWithSize = this.addSizeToSvg(svgString, iconSize);
61
- div.innerHTML += svgWithSize;
62
- return div;
63
- };
64
- FeaturedIcon.prototype.addSizeToSvg = function (svgString, size) {
65
- return svgString.replace(/<svg([^>]*)>/, "<svg$1 width=\"".concat(size, "\" height=\"").concat(size, "\">"));
66
- };
67
- // Public methods
68
- FeaturedIcon.prototype.getElement = function () {
69
- return this.element;
70
- };
71
- FeaturedIcon.prototype.updateColor = function (color) {
72
- this.element.className = this.element.className.replace(/ncua-featured-icon--(neutral|error|warning|success)/, "ncua-featured-icon--".concat(color));
73
- this.options.color = color;
74
- };
75
- FeaturedIcon.prototype.updateSize = function (size) {
76
- var iconSize = iconSizeMap[size];
77
- this.element.className = this.element.className.replace(/ncua-featured-icon--(sm|md|lg|xl)/, "ncua-featured-icon--".concat(size));
78
- var svgIcon = this.element.querySelector('svg');
79
- if (svgIcon) {
80
- svgIcon.setAttribute('width', String(iconSize));
81
- svgIcon.setAttribute('height', String(iconSize));
82
- }
83
- this.options.size = size;
84
- };
85
- FeaturedIcon.prototype.destroy = function () {
86
- if (this.element.parentNode) {
87
- this.element.parentNode.removeChild(this.element);
88
- }
89
- };
90
- // Static factory method
91
- FeaturedIcon.create = function (options) {
92
- return new FeaturedIcon(options);
93
- };
94
- return FeaturedIcon;
95
- }();
@@ -1,183 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.FileInput = void 0;
7
- var _FileInputModel = require("./FileInputModel");
8
- var _FileInputView = require("./FileInputView");
9
- var FileInput = exports.FileInput = /** @class */function () {
10
- function FileInput(options) {
11
- var _this = this;
12
- /**
13
- * 파일 선택 버튼 클릭 핸들러
14
- */
15
- this.handleBrowseClick = function () {
16
- if (!_this.model.isDisabled()) {
17
- _this.view.getFileInputElement().click();
18
- }
19
- };
20
- /**
21
- * 파일 변경 핸들러
22
- */
23
- this.handleFileChange = function (event) {
24
- var _a, _b, _c;
25
- var target = event.target;
26
- var selectedFiles = target.files;
27
- if (!selectedFiles || selectedFiles.length === 0) return;
28
- var _d = _this.model.validateFiles(Array.from(selectedFiles)),
29
- validFiles = _d.validFiles,
30
- invalidFiles = _d.invalidFiles;
31
- var options = _this.model.getOptions();
32
- // 유효한 파일에 대한 콜백 호출 (자동 추가/렌더링 없음)
33
- if (validFiles.length > 0) {
34
- // 콜백을 통해 선택된 파일 정보 전달
35
- if (_this.model.isControlled()) {
36
- (_a = options.onChange) === null || _a === void 0 ? void 0 : _a.call(options, validFiles);
37
- } else {
38
- (_b = options.onFileSelect) === null || _b === void 0 ? void 0 : _b.call(options, validFiles);
39
- }
40
- }
41
- // 유효하지 않은 파일 처리
42
- if (invalidFiles.length > 0) {
43
- (_c = options.onFail) === null || _c === void 0 ? void 0 : _c.call(options, invalidFiles);
44
- }
45
- // Reset input value to allow re-selecting the same file
46
- target.value = '';
47
- };
48
- /**
49
- * 파일 제거 핸들러
50
- * 주의: 이 메서드는 renderFileTags에서 사용되지만,
51
- * 파일 선택 시 자동 렌더링이 비활성화되어 있으므로 수동으로 호출해야 함
52
- */
53
- this.handleRemoveFile = function (index) {
54
- _this.model.removeFile(index);
55
- _this.notifyChange();
56
- };
57
- this.model = new _FileInputModel.FileInputModel(options);
58
- this.view = new _FileInputView.FileInputView(this.model.getOptions(), this.model);
59
- this.setupEventListeners();
60
- // 파일 선택 시 자동 렌더링은 제거됨 - 사용자가 콜백에서 직접 처리
61
- // 컨테이너가 지정되면 자동으로 추가
62
- if (options.container) {
63
- this.appendToContainer(options.container);
64
- }
65
- }
66
- /**
67
- * 컨테이너에 요소 추가
68
- */
69
- FileInput.prototype.appendToContainer = function (container) {
70
- var containerElement = null;
71
- if (typeof container === 'string') {
72
- // ID로 찾기 (# 없이)
73
- containerElement = document.getElementById(container);
74
- // ID로 못 찾으면 CSS 셀렉터로 찾기
75
- if (!containerElement) {
76
- containerElement = document.querySelector(container);
77
- }
78
- } else {
79
- containerElement = container;
80
- }
81
- if (containerElement) {
82
- containerElement.appendChild(this.getElement());
83
- } else {
84
- console.warn("FileInput: Container not found:", container);
85
- }
86
- };
87
- /**
88
- * 이벤트 리스너 설정
89
- */
90
- FileInput.prototype.setupEventListeners = function () {
91
- var fileInput = this.view.getFileInputElement();
92
- var button = this.view.getButtonElement();
93
- // 파일 선택 이벤트
94
- fileInput.addEventListener('change', this.handleFileChange);
95
- // 버튼 클릭 이벤트
96
- button.addEventListener('click', this.handleBrowseClick);
97
- };
98
- /**
99
- * 변경 알림 (onChange/onFileSelect 호출)
100
- * 주의: 이 메서드는 setFiles 등 내부적으로 파일 목록이 변경될 때만 사용됨
101
- */
102
- FileInput.prototype.notifyChange = function () {
103
- var _a, _b;
104
- var options = this.model.getOptions();
105
- var files = this.model.getFiles();
106
- if (this.model.isControlled()) {
107
- // Controlled mode: onChange 호출
108
- (_a = options.onChange) === null || _a === void 0 ? void 0 : _a.call(options, files);
109
- } else {
110
- // Uncontrolled mode: onFileSelect 호출 및 렌더링
111
- (_b = options.onFileSelect) === null || _b === void 0 ? void 0 : _b.call(options, files);
112
- this.render();
113
- }
114
- };
115
- /**
116
- * 뷰 렌더링 (내부용)
117
- */
118
- FileInput.prototype.render = function () {
119
- var files = this.model.getFiles();
120
- this.view.renderFileTags(files, this.handleRemoveFile);
121
- };
122
- // Public API
123
- /**
124
- * 파일 태그를 수동으로 렌더링
125
- * 사용자가 콜백에서 직접 호출하여 태그를 렌더링할 수 있음
126
- */
127
- FileInput.prototype.renderFileTags = function () {
128
- this.render();
129
- };
130
- /**
131
- * DOM 요소 반환
132
- */
133
- FileInput.prototype.getElement = function () {
134
- return this.view.getElement();
135
- };
136
- /**
137
- * 현재 파일 목록 반환
138
- */
139
- FileInput.prototype.getFiles = function () {
140
- return this.model.getFiles();
141
- };
142
- /**
143
- * 초기 업로드된 파일 목록 설정
144
- */
145
- FileInput.prototype.setFiles = function (uploadedFiles) {
146
- var _a;
147
- this.model.setFiles(uploadedFiles);
148
- var options = this.model.getOptions();
149
- if (this.model.isControlled()) {
150
- var allFiles = this.model.getFiles();
151
- (_a = options.onChange) === null || _a === void 0 ? void 0 : _a.call(options, allFiles);
152
- } else {
153
- this.render();
154
- }
155
- };
156
- /**
157
- * 모든 파일 제거
158
- */
159
- FileInput.prototype.clearFiles = function () {
160
- this.model.clearFiles();
161
- this.notifyChange();
162
- };
163
- /**
164
- * disabled 상태 설정
165
- */
166
- FileInput.prototype.setDisabled = function (disabled) {
167
- this.model.setDisabled(disabled);
168
- this.view.setButtonDisabled(disabled);
169
- };
170
- /**
171
- * 리소스 정리
172
- */
173
- FileInput.prototype.destroy = function () {
174
- // 이벤트 리스너 제거
175
- var fileInput = this.view.getFileInputElement();
176
- var button = this.view.getButtonElement();
177
- fileInput.removeEventListener('change', this.handleFileChange);
178
- button.removeEventListener('click', this.handleBrowseClick);
179
- // View 리소스 정리
180
- this.view.destroy();
181
- };
182
- return FileInput;
183
- }();
@@ -1,246 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.FileInputModel = void 0;
7
- var _types = require("./const/types");
8
- var __assign = void 0 && (void 0).__assign || function () {
9
- __assign = Object.assign || function (t) {
10
- for (var s, i = 1, n = arguments.length; i < n; i++) {
11
- s = arguments[i];
12
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
13
- }
14
- return t;
15
- };
16
- return __assign.apply(this, arguments);
17
- };
18
- var __spreadArray = void 0 && (void 0).__spreadArray || function (to, from, pack) {
19
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
- if (ar || !(i in from)) {
21
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
- ar[i] = from[i];
23
- }
24
- }
25
- return to.concat(ar || Array.prototype.slice.call(from));
26
- };
27
- var FileInputModel = exports.FileInputModel = /** @class */function () {
28
- function FileInputModel(options) {
29
- this.internalFiles = [];
30
- this.initialFiles = []; // 초기 파일 목록 (렌더링 시점의 파일)
31
- this.newlyAddedFiles = new Set(); // 새로 추가된 파일 추적
32
- this.deletedInitialFiles = new Set(); // 삭제 표시된 초기 파일들 (파일명으로 추적)
33
- this.options = __assign({
34
- size: 'xs',
35
- multiple: false,
36
- buttonLabel: '파일 찾기',
37
- disabled: false,
38
- showImagePreview: false
39
- }, options);
40
- // 초기 파일 설정
41
- if (this.options.value && this.options.value.length > 0) {
42
- this.internalFiles = __spreadArray([], this.options.value, true);
43
- // value로 들어온 File[]은 새로 추가된 파일로 처리 (initialFiles는 별도로 setFiles(UploadedFile[])로 설정)
44
- }
45
- }
46
- /**
47
- * 옵션 반환
48
- */
49
- FileInputModel.prototype.getOptions = function () {
50
- return this.options;
51
- };
52
- /**
53
- * 현재 파일 목록 반환 (초기 파일 + 새로 추가된 파일, 삭제 표시된 파일 제외)
54
- */
55
- FileInputModel.prototype.getFiles = function () {
56
- var _this = this;
57
- var newFiles = this.options.value !== undefined ? this.options.value : this.internalFiles;
58
- // UploadedFile을 File 객체로 변환 (삭제 표시되지 않은 것만)
59
- var initialFilesAsFiles = this.initialFiles.filter(function (uploadedFile) {
60
- return !_this.deletedInitialFiles.has(uploadedFile.fileName);
61
- }).map(function (uploadedFile) {
62
- // UploadedFile을 File 객체로 변환 (빈 데이터지만 이름과 타입 정보 유지)
63
- var mimeType = _this.getMimeTypeFromFileName(uploadedFile.fileName);
64
- return new File([], uploadedFile.fileName, {
65
- type: mimeType
66
- });
67
- });
68
- // 초기 파일 + 새로 추가된 파일 합치기
69
- return __spreadArray(__spreadArray([], initialFilesAsFiles, true), newFiles, true);
70
- };
71
- /**
72
- * 파일명에서 MIME 타입 추론
73
- */
74
- FileInputModel.prototype.getMimeTypeFromFileName = function (fileName) {
75
- var _a;
76
- var extension = (_a = fileName.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
77
- var mimeTypes = {
78
- jpg: 'image/jpeg',
79
- jpeg: 'image/jpeg',
80
- png: 'image/png',
81
- gif: 'image/gif',
82
- webp: 'image/webp',
83
- pdf: 'application/pdf',
84
- txt: 'text/plain',
85
- doc: 'application/msword',
86
- docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
87
- xls: 'application/vnd.ms-excel',
88
- xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
89
- };
90
- return mimeTypes[extension || ''] || 'application/octet-stream';
91
- };
92
- /**
93
- * 초기 업로드된 파일 목록 설정 (UploadedFile[] 타입만 허용)
94
- */
95
- FileInputModel.prototype.setFiles = function (uploadedFiles) {
96
- this.initialFiles = __spreadArray([], uploadedFiles, true);
97
- };
98
- /**
99
- * 파일 추가
100
- */
101
- FileInputModel.prototype.addFiles = function (files) {
102
- var _this = this;
103
- // getFiles()를 사용하지 않고 새로 추가된 파일만 관리
104
- var currentNewFiles = this.options.value !== undefined ? this.options.value : this.internalFiles;
105
- var newFiles = __spreadArray(__spreadArray([], currentNewFiles, true), files, true);
106
- // 새로 추가된 파일로 표시
107
- files.forEach(function (file) {
108
- return _this.newlyAddedFiles.add(file);
109
- });
110
- // addFiles에서는 initialFiles 로직을 건드리지 않고 직접 설정
111
- var isControlled = this.options.value !== undefined;
112
- if (isControlled) {
113
- this.options.value = newFiles;
114
- } else {
115
- this.internalFiles = newFiles;
116
- }
117
- };
118
- /**
119
- * 특정 인덱스의 파일 제거
120
- */
121
- FileInputModel.prototype.removeFile = function (index) {
122
- var visibleFiles = this.getFiles(); // 현재 보이는 파일들
123
- var fileToRemove = visibleFiles[index];
124
- if (!fileToRemove) return;
125
- // 초기 파일인지 확인
126
- var isInitialFile = this.isInitialFile(fileToRemove);
127
- if (isInitialFile) {
128
- // 초기 파일: 삭제 표시만 함 (실제 제거하지 않음)
129
- this.deletedInitialFiles.add(fileToRemove.name);
130
- } else {
131
- // 새로 추가된 파일: 실제 제거
132
- var currentFiles = this.options.value !== undefined ? this.options.value : this.internalFiles;
133
- var newFiles = currentFiles.filter(function (file) {
134
- return file !== fileToRemove;
135
- });
136
- // newlyAddedFiles Set에서도 제거
137
- this.newlyAddedFiles.delete(fileToRemove);
138
- var isControlled = this.options.value !== undefined;
139
- if (isControlled) {
140
- this.options.value = newFiles;
141
- } else {
142
- this.internalFiles = newFiles;
143
- }
144
- }
145
- };
146
- /**
147
- * 모든 파일 제거
148
- */
149
- FileInputModel.prototype.clearFiles = function () {
150
- var _this = this;
151
- // 초기 파일들은 모두 삭제 표시
152
- this.initialFiles.forEach(function (uploadedFile) {
153
- _this.deletedInitialFiles.add(uploadedFile.fileName);
154
- });
155
- this.newlyAddedFiles.clear();
156
- var isControlled = this.options.value !== undefined;
157
- if (isControlled) {
158
- this.options.value = [];
159
- } else {
160
- this.internalFiles = [];
161
- }
162
- };
163
- /**
164
- * 파일 유효성 검사
165
- */
166
- FileInputModel.prototype.validateFiles = function (fileList) {
167
- var validFiles = [];
168
- var invalidFiles = [];
169
- var currentFiles = this.getFiles();
170
- var _loop_1 = function (file) {
171
- // 중복 체크
172
- if (currentFiles.some(function (f) {
173
- return f.name === file.name && f.size === file.size;
174
- })) {
175
- invalidFiles.push(__assign(__assign({}, file), {
176
- errorType: _types.FileInputErrorType.ALREADY_UPLOADED
177
- }));
178
- return "continue";
179
- }
180
- // 파일 크기 체크
181
- if (this_1.options.maxFileSize && file.size > this_1.options.maxFileSize) {
182
- invalidFiles.push(__assign(__assign({}, file), {
183
- errorType: _types.FileInputErrorType.EXCEED_MAX_FILE_SIZE
184
- }));
185
- return "continue";
186
- }
187
- // 파일 개수 체크
188
- if (this_1.options.maxFileCount && currentFiles.length + validFiles.length >= this_1.options.maxFileCount) {
189
- invalidFiles.push(__assign(__assign({}, file), {
190
- errorType: _types.FileInputErrorType.EXCEED_MAX_FILE_COUNT
191
- }));
192
- return "continue";
193
- }
194
- validFiles.push(file);
195
- };
196
- var this_1 = this;
197
- for (var _i = 0, fileList_1 = fileList; _i < fileList_1.length; _i++) {
198
- var file = fileList_1[_i];
199
- _loop_1(file);
200
- }
201
- return {
202
- validFiles: validFiles,
203
- invalidFiles: invalidFiles
204
- };
205
- };
206
- /**
207
- * disabled 상태 설정
208
- */
209
- FileInputModel.prototype.setDisabled = function (disabled) {
210
- this.options.disabled = disabled;
211
- };
212
- /**
213
- * disabled 상태 반환
214
- */
215
- FileInputModel.prototype.isDisabled = function () {
216
- return this.options.disabled;
217
- };
218
- /**
219
- * Controlled mode 여부 확인
220
- * onChange가 있으면 Controlled mode로 판단
221
- */
222
- FileInputModel.prototype.isControlled = function () {
223
- return this.options.onChange !== undefined;
224
- };
225
- /**
226
- * 파일이 초기 파일인지 확인 (UploadedFile로 설정된 기존 파일)
227
- */
228
- FileInputModel.prototype.isInitialFile = function (file) {
229
- return this.initialFiles.some(function (uploadedFile) {
230
- return uploadedFile.fileName === file.name;
231
- });
232
- };
233
- /**
234
- * 파일이 새로 추가된 파일인지 확인
235
- */
236
- FileInputModel.prototype.isNewlyAddedFile = function (file) {
237
- return this.newlyAddedFiles.has(file);
238
- };
239
- /**
240
- * 파일이 삭제 표시된 초기 파일인지 확인
241
- */
242
- FileInputModel.prototype.isDeletedInitialFile = function (file) {
243
- return this.deletedInitialFiles.has(file.name);
244
- };
245
- return FileInputModel;
246
- }();