@ncds/ui-admin 1.6.3 → 1.6.4-alpha.0

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 (260) hide show
  1. package/mcp/bin/server.d.ts +1 -0
  2. package/mcp/bin/server.js +62 -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/searchComponent.d.ts +3 -0
  11. package/mcp/bin/tools/searchComponent.js +20 -0
  12. package/mcp/bin/tools/validateHtml.d.ts +10 -0
  13. package/mcp/bin/tools/validateHtml.js +142 -0
  14. package/mcp/bin/types.d.ts +28 -0
  15. package/mcp/bin/types.js +5 -0
  16. package/mcp/bin/utils/dataLoader.d.ts +11 -0
  17. package/mcp/bin/utils/dataLoader.js +68 -0
  18. package/mcp/bin/utils/logger.d.ts +18 -0
  19. package/mcp/bin/utils/logger.js +27 -0
  20. package/mcp/bin/utils/response.d.ts +23 -0
  21. package/mcp/bin/utils/response.js +31 -0
  22. package/mcp/bin/version.d.ts +1 -0
  23. package/mcp/bin/version.js +4 -0
  24. package/mcp/data/.gitkeep +0 -0
  25. package/mcp/data/_meta.json +7 -0
  26. package/mcp/data/badge-group.json +73 -0
  27. package/mcp/data/badge.json +86 -0
  28. package/mcp/data/bread-crumb.json +22 -0
  29. package/mcp/data/breadcrumb.json +31 -0
  30. package/mcp/data/button-group.json +65 -0
  31. package/mcp/data/button.json +114 -0
  32. package/mcp/data/carousel-arrow.json +59 -0
  33. package/mcp/data/carousel-number-group.json +57 -0
  34. package/mcp/data/carousel.json +22 -0
  35. package/mcp/data/checkbox.json +31 -0
  36. package/mcp/data/combobox.json +114 -0
  37. package/mcp/data/date-picker.json +77 -0
  38. package/mcp/data/divider.json +56 -0
  39. package/mcp/data/dot.json +55 -0
  40. package/mcp/data/dropdown.json +81 -0
  41. package/mcp/data/empty-state.json +34 -0
  42. package/mcp/data/featured-icon.json +83 -0
  43. package/mcp/data/file-input.json +76 -0
  44. package/mcp/data/horizontal-tab.json +71 -0
  45. package/mcp/data/image-file-input.json +97 -0
  46. package/mcp/data/input.json +104 -0
  47. package/mcp/data/modal.json +85 -0
  48. package/mcp/data/notification.json +116 -0
  49. package/mcp/data/number-input.json +128 -0
  50. package/mcp/data/pagination.json +65 -0
  51. package/mcp/data/password-input.json +47 -0
  52. package/mcp/data/progress-bar.json +51 -0
  53. package/mcp/data/progress-circle.json +54 -0
  54. package/mcp/data/radio.json +31 -0
  55. package/mcp/data/range-date-picker-with-buttons.json +64 -0
  56. package/mcp/data/range-date-picker.json +55 -0
  57. package/mcp/data/select-dropdown.json +32 -0
  58. package/mcp/data/select.json +64 -0
  59. package/mcp/data/selectbox.json +129 -0
  60. package/mcp/data/slider.json +57 -0
  61. package/mcp/data/spinner.json +54 -0
  62. package/mcp/data/switch.json +71 -0
  63. package/mcp/data/tab.json +122 -0
  64. package/mcp/data/tag.json +66 -0
  65. package/mcp/data/textarea.json +88 -0
  66. package/mcp/data/toggle.json +59 -0
  67. package/mcp/data/tooltip.json +123 -0
  68. package/mcp/data/vertical-tab.json +64 -0
  69. package/mcp/templates/.mcp.json.example +8 -0
  70. package/mcp/templates/README.md +31 -0
  71. package/package.json +24 -3
  72. package/dist/cjs/assets/scripts/comboBox.js +0 -280
  73. package/dist/cjs/assets/scripts/datePicker.js +0 -706
  74. package/dist/cjs/assets/scripts/featuredIcon.js +0 -95
  75. package/dist/cjs/assets/scripts/fileInput/FileInput.js +0 -183
  76. package/dist/cjs/assets/scripts/fileInput/FileInputModel.js +0 -246
  77. package/dist/cjs/assets/scripts/fileInput/FileInputView.js +0 -455
  78. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +0 -35
  79. package/dist/cjs/assets/scripts/fileInput/const/index.js +0 -27
  80. package/dist/cjs/assets/scripts/fileInput/const/types.js +0 -13
  81. package/dist/cjs/assets/scripts/fileInput/index.js +0 -44
  82. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +0 -187
  83. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -255
  84. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +0 -354
  85. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +0 -41
  86. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +0 -27
  87. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +0 -13
  88. package/dist/cjs/assets/scripts/imageFileInput/index.js +0 -44
  89. package/dist/cjs/assets/scripts/index.js +0 -30
  90. package/dist/cjs/assets/scripts/modal/Modal.js +0 -116
  91. package/dist/cjs/assets/scripts/modal/ModalActions.js +0 -128
  92. package/dist/cjs/assets/scripts/modal/ModalContent.js +0 -46
  93. package/dist/cjs/assets/scripts/modal/ModalHeader.js +0 -115
  94. package/dist/cjs/assets/scripts/modal/const/classNames.js +0 -41
  95. package/dist/cjs/assets/scripts/modal/const/index.js +0 -27
  96. package/dist/cjs/assets/scripts/modal/const/types.js +0 -5
  97. package/dist/cjs/assets/scripts/modal/index.js +0 -61
  98. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +0 -35
  99. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +0 -180
  100. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +0 -120
  101. package/dist/cjs/assets/scripts/notification/MessageNotification.js +0 -146
  102. package/dist/cjs/assets/scripts/notification/Notification.js +0 -116
  103. package/dist/cjs/assets/scripts/notification/const/classNames.js +0 -50
  104. package/dist/cjs/assets/scripts/notification/const/icons.js +0 -45
  105. package/dist/cjs/assets/scripts/notification/const/index.js +0 -87
  106. package/dist/cjs/assets/scripts/notification/const/sizes.js +0 -54
  107. package/dist/cjs/assets/scripts/notification/const/types.js +0 -14
  108. package/dist/cjs/assets/scripts/notification/index.js +0 -92
  109. package/dist/cjs/assets/scripts/notification/utils.js +0 -92
  110. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +0 -272
  111. package/dist/cjs/assets/scripts/progress-bar/index.js +0 -12
  112. package/dist/cjs/assets/scripts/selectBox.js +0 -319
  113. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +0 -46
  114. package/dist/cjs/assets/scripts/tab.js +0 -40
  115. package/dist/cjs/assets/scripts/tag/Tag.js +0 -268
  116. package/dist/cjs/assets/scripts/tag/const/classNames.js +0 -24
  117. package/dist/cjs/assets/scripts/tag/const/index.js +0 -38
  118. package/dist/cjs/assets/scripts/tag/const/sizes.js +0 -13
  119. package/dist/cjs/assets/scripts/tag/const/types.js +0 -5
  120. package/dist/cjs/assets/scripts/tag/index.js +0 -44
  121. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +0 -380
  122. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +0 -84
  123. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +0 -29
  124. package/dist/cjs/assets/scripts/tooltip/const/constants.js +0 -56
  125. package/dist/cjs/assets/scripts/tooltip/const/icons.js +0 -15
  126. package/dist/cjs/assets/scripts/tooltip/const/index.js +0 -123
  127. package/dist/cjs/assets/scripts/tooltip/const/templates.js +0 -49
  128. package/dist/cjs/assets/scripts/tooltip/const/types.js +0 -5
  129. package/dist/cjs/assets/scripts/tooltip/index.js +0 -57
  130. package/dist/cjs/assets/scripts/tooltip/utils.js +0 -41
  131. package/dist/cjs/assets/scripts/utils/unifiedBox/DOMRenderer.js +0 -384
  132. package/dist/cjs/assets/scripts/utils/unifiedBox/DropdownModel.js +0 -368
  133. package/dist/cjs/assets/scripts/utils/unifiedBox/UnifiedBoxController.js +0 -681
  134. package/dist/cjs/assets/scripts/utils/unifiedBox/UnifiedBoxManager.js +0 -711
  135. package/dist/esm/assets/scripts/comboBox.js +0 -275
  136. package/dist/esm/assets/scripts/datePicker.js +0 -699
  137. package/dist/esm/assets/scripts/featuredIcon.js +0 -90
  138. package/dist/esm/assets/scripts/fileInput/FileInput.js +0 -178
  139. package/dist/esm/assets/scripts/fileInput/FileInputModel.js +0 -241
  140. package/dist/esm/assets/scripts/fileInput/FileInputView.js +0 -450
  141. package/dist/esm/assets/scripts/fileInput/const/classNames.js +0 -25
  142. package/dist/esm/assets/scripts/fileInput/const/index.js +0 -2
  143. package/dist/esm/assets/scripts/fileInput/const/types.js +0 -7
  144. package/dist/esm/assets/scripts/fileInput/index.js +0 -9
  145. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +0 -182
  146. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -250
  147. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +0 -349
  148. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +0 -30
  149. package/dist/esm/assets/scripts/imageFileInput/const/index.js +0 -2
  150. package/dist/esm/assets/scripts/imageFileInput/const/types.js +0 -7
  151. package/dist/esm/assets/scripts/imageFileInput/index.js +0 -9
  152. package/dist/esm/assets/scripts/index.js +0 -28
  153. package/dist/esm/assets/scripts/modal/Modal.js +0 -110
  154. package/dist/esm/assets/scripts/modal/ModalActions.js +0 -123
  155. package/dist/esm/assets/scripts/modal/ModalContent.js +0 -41
  156. package/dist/esm/assets/scripts/modal/ModalHeader.js +0 -110
  157. package/dist/esm/assets/scripts/modal/const/classNames.js +0 -31
  158. package/dist/esm/assets/scripts/modal/const/index.js +0 -2
  159. package/dist/esm/assets/scripts/modal/const/types.js +0 -1
  160. package/dist/esm/assets/scripts/modal/index.js +0 -15
  161. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +0 -28
  162. package/dist/esm/assets/scripts/notification/FloatingNotification.js +0 -176
  163. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +0 -115
  164. package/dist/esm/assets/scripts/notification/MessageNotification.js +0 -141
  165. package/dist/esm/assets/scripts/notification/Notification.js +0 -111
  166. package/dist/esm/assets/scripts/notification/const/classNames.js +0 -44
  167. package/dist/esm/assets/scripts/notification/const/icons.js +0 -39
  168. package/dist/esm/assets/scripts/notification/const/index.js +0 -4
  169. package/dist/esm/assets/scripts/notification/const/sizes.js +0 -48
  170. package/dist/esm/assets/scripts/notification/const/types.js +0 -8
  171. package/dist/esm/assets/scripts/notification/index.js +0 -11
  172. package/dist/esm/assets/scripts/notification/utils.js +0 -79
  173. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +0 -267
  174. package/dist/esm/assets/scripts/progress-bar/index.js +0 -1
  175. package/dist/esm/assets/scripts/selectBox.js +0 -314
  176. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +0 -38
  177. package/dist/esm/assets/scripts/tab.js +0 -35
  178. package/dist/esm/assets/scripts/tag/Tag.js +0 -263
  179. package/dist/esm/assets/scripts/tag/const/classNames.js +0 -16
  180. package/dist/esm/assets/scripts/tag/const/index.js +0 -3
  181. package/dist/esm/assets/scripts/tag/const/sizes.js +0 -7
  182. package/dist/esm/assets/scripts/tag/const/types.js +0 -1
  183. package/dist/esm/assets/scripts/tag/index.js +0 -9
  184. package/dist/esm/assets/scripts/tooltip/Tooltip.js +0 -375
  185. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +0 -79
  186. package/dist/esm/assets/scripts/tooltip/const/classNames.js +0 -23
  187. package/dist/esm/assets/scripts/tooltip/const/constants.js +0 -50
  188. package/dist/esm/assets/scripts/tooltip/const/icons.js +0 -9
  189. package/dist/esm/assets/scripts/tooltip/const/index.js +0 -4
  190. package/dist/esm/assets/scripts/tooltip/const/templates.js +0 -42
  191. package/dist/esm/assets/scripts/tooltip/const/types.js +0 -1
  192. package/dist/esm/assets/scripts/tooltip/index.js +0 -10
  193. package/dist/esm/assets/scripts/tooltip/utils.js +0 -35
  194. package/dist/esm/assets/scripts/utils/unifiedBox/DOMRenderer.js +0 -379
  195. package/dist/esm/assets/scripts/utils/unifiedBox/DropdownModel.js +0 -363
  196. package/dist/esm/assets/scripts/utils/unifiedBox/UnifiedBoxController.js +0 -676
  197. package/dist/esm/assets/scripts/utils/unifiedBox/UnifiedBoxManager.js +0 -706
  198. package/dist/types/assets/scripts/comboBox.d.ts +0 -91
  199. package/dist/types/assets/scripts/datePicker.d.ts +0 -87
  200. package/dist/types/assets/scripts/featuredIcon.d.ts +0 -23
  201. package/dist/types/assets/scripts/fileInput/FileInput.d.ts +0 -67
  202. package/dist/types/assets/scripts/fileInput/FileInputModel.d.ts +0 -70
  203. package/dist/types/assets/scripts/fileInput/FileInputView.d.ts +0 -77
  204. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +0 -17
  205. package/dist/types/assets/scripts/fileInput/const/index.d.ts +0 -3
  206. package/dist/types/assets/scripts/fileInput/const/types.d.ts +0 -132
  207. package/dist/types/assets/scripts/fileInput/index.d.ts +0 -4
  208. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -64
  209. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -74
  210. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -80
  211. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +0 -20
  212. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +0 -3
  213. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +0 -126
  214. package/dist/types/assets/scripts/imageFileInput/index.d.ts +0 -4
  215. package/dist/types/assets/scripts/index.d.ts +0 -33
  216. package/dist/types/assets/scripts/modal/Modal.d.ts +0 -28
  217. package/dist/types/assets/scripts/modal/ModalActions.d.ts +0 -19
  218. package/dist/types/assets/scripts/modal/ModalContent.d.ts +0 -14
  219. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +0 -16
  220. package/dist/types/assets/scripts/modal/const/classNames.d.ts +0 -23
  221. package/dist/types/assets/scripts/modal/const/index.d.ts +0 -3
  222. package/dist/types/assets/scripts/modal/const/types.d.ts +0 -62
  223. package/dist/types/assets/scripts/modal/index.d.ts +0 -8
  224. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +0 -11
  225. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +0 -25
  226. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +0 -22
  227. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +0 -23
  228. package/dist/types/assets/scripts/notification/Notification.d.ts +0 -22
  229. package/dist/types/assets/scripts/notification/const/classNames.d.ts +0 -44
  230. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -26
  231. package/dist/types/assets/scripts/notification/const/index.d.ts +0 -6
  232. package/dist/types/assets/scripts/notification/const/sizes.d.ts +0 -33
  233. package/dist/types/assets/scripts/notification/const/types.d.ts +0 -20
  234. package/dist/types/assets/scripts/notification/index.d.ts +0 -8
  235. package/dist/types/assets/scripts/notification/utils.d.ts +0 -9
  236. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +0 -68
  237. package/dist/types/assets/scripts/progress-bar/index.d.ts +0 -2
  238. package/dist/types/assets/scripts/selectBox.d.ts +0 -77
  239. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -6
  240. package/dist/types/assets/scripts/tab.d.ts +0 -8
  241. package/dist/types/assets/scripts/tag/Tag.d.ts +0 -28
  242. package/dist/types/assets/scripts/tag/const/classNames.d.ts +0 -12
  243. package/dist/types/assets/scripts/tag/const/index.d.ts +0 -4
  244. package/dist/types/assets/scripts/tag/const/sizes.d.ts +0 -8
  245. package/dist/types/assets/scripts/tag/const/types.d.ts +0 -34
  246. package/dist/types/assets/scripts/tag/index.d.ts +0 -4
  247. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +0 -55
  248. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -22
  249. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +0 -18
  250. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +0 -34
  251. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +0 -5
  252. package/dist/types/assets/scripts/tooltip/const/index.d.ts +0 -6
  253. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +0 -17
  254. package/dist/types/assets/scripts/tooltip/const/types.d.ts +0 -15
  255. package/dist/types/assets/scripts/tooltip/index.d.ts +0 -7
  256. package/dist/types/assets/scripts/tooltip/utils.d.ts +0 -3
  257. package/dist/types/assets/scripts/utils/unifiedBox/DOMRenderer.d.ts +0 -108
  258. package/dist/types/assets/scripts/utils/unifiedBox/DropdownModel.d.ts +0 -158
  259. package/dist/types/assets/scripts/utils/unifiedBox/UnifiedBoxController.d.ts +0 -171
  260. 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
- }();