@nine-lab/nine-mu 0.1.353 → 0.1.355
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/dist/nine-mu.js +45 -37
- package/dist/nine-mu.js.map +1 -1
- package/dist/nine-mu.umd.js +1 -1
- package/dist/nine-mu.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/exception/ExceptionHook.js +33 -29
package/package.json
CHANGED
|
@@ -1,63 +1,67 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
3
|
// ==========================================
|
|
4
|
-
// 1. 터미널 프롬프트 테마 스타일 (
|
|
4
|
+
// 1. 터미널 프롬프트 테마 스타일 (색상 및 행간 정밀 리튠)
|
|
5
5
|
// ==========================================
|
|
6
6
|
export const NineExceptionStyles = {
|
|
7
7
|
container: {
|
|
8
8
|
padding: '25px',
|
|
9
9
|
margin: '20px',
|
|
10
10
|
background: '#121314', // 터미널 다크 블랙 배경
|
|
11
|
-
border: '1px solid #343A40', // 외곽
|
|
11
|
+
border: '1px solid #343A40', // 외곽 테두리
|
|
12
12
|
borderRadius: '6px',
|
|
13
13
|
fontFamily: 'Consolas, Monaco, "Courier New", monospace',
|
|
14
14
|
textAlign: 'left',
|
|
15
15
|
boxShadow: '0 4px 12px rgba(0,0,0,0.3)',
|
|
16
|
-
lineHeight: '1
|
|
16
|
+
lineHeight: '1' // 부모 라인 높이 통일
|
|
17
17
|
},
|
|
18
18
|
systemError: {
|
|
19
|
-
color: '
|
|
19
|
+
color: 'red', // [SYSTEM] 강렬한 레드 유지
|
|
20
20
|
fontWeight: 'bold',
|
|
21
21
|
fontSize: '14px',
|
|
22
|
-
margin: '0 0
|
|
23
|
-
letterSpacing: '0.5px'
|
|
22
|
+
margin: '0 0 12px 0', // 정확히 하단 여백 12px
|
|
23
|
+
letterSpacing: '0.5px',
|
|
24
|
+
padding: '0',
|
|
25
|
+
lineHeight: '1' // 줄간 격차 원천 차단
|
|
24
26
|
},
|
|
25
27
|
pre: {
|
|
26
28
|
background: 'transparent',
|
|
27
29
|
color: '#F8F9FA',
|
|
28
30
|
padding: '0',
|
|
29
|
-
margin: '0 0 12px 0', // 하단
|
|
31
|
+
margin: '0 0 12px 0', // 정확히 하단 여백 12px
|
|
30
32
|
border: 'none',
|
|
31
33
|
overflowX: 'auto',
|
|
32
34
|
whiteSpace: 'pre-wrap',
|
|
33
35
|
fontFamily: 'Consolas, Monaco, monospace',
|
|
34
|
-
fontSize: '14px'
|
|
36
|
+
fontSize: '14px',
|
|
37
|
+
lineHeight: '1' // 줄간 격차 원천 차단
|
|
35
38
|
},
|
|
36
39
|
footer: {
|
|
37
40
|
fontSize: '14px',
|
|
38
|
-
color: '#
|
|
39
|
-
margin: '0',
|
|
41
|
+
color: '#999', // ⭐ 전체 기본 텍스트 톤을 #999로 변경
|
|
42
|
+
margin: '0',
|
|
43
|
+
padding: '0',
|
|
40
44
|
display: 'flex',
|
|
41
45
|
flexDirection: 'column',
|
|
42
|
-
gap: '
|
|
46
|
+
gap: '12px' // 하단 상태 로그 적재 시 간격 12px
|
|
43
47
|
},
|
|
44
48
|
promptRow: {
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
margin: '0',
|
|
50
|
+
padding: '0',
|
|
51
|
+
display: 'block',
|
|
52
|
+
lineHeight: '1', // 줄간 격차 원천 차단
|
|
53
|
+
color: '#999' // ⭐ 괄호 및 텍스트 전체 #999 적용
|
|
47
54
|
},
|
|
48
|
-
// ⭐ y 글자에 직접 바인딩할 터미널 링크 스타일
|
|
49
55
|
cliLink: {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
border: 'none',
|
|
53
|
-
padding: '0 2px',
|
|
56
|
+
color: '#38A169', // 선택 수단 y는 터미널 그린 유지
|
|
57
|
+
padding: '0',
|
|
54
58
|
fontFamily: 'Consolas, Monaco, monospace',
|
|
55
59
|
fontSize: '14px',
|
|
56
60
|
fontWeight: 'bold',
|
|
57
61
|
cursor: 'pointer',
|
|
58
62
|
textDecoration: 'underline',
|
|
59
|
-
textUnderlineOffset: '
|
|
60
|
-
|
|
63
|
+
textUnderlineOffset: '3px',
|
|
64
|
+
lineHeight: '1'
|
|
61
65
|
}
|
|
62
66
|
};
|
|
63
67
|
|
|
@@ -109,7 +113,7 @@ export class NineExceptionHook extends React.Component {
|
|
|
109
113
|
|
|
110
114
|
handleLocationChange() {
|
|
111
115
|
setTimeout(() => {
|
|
112
|
-
if (this.state.hasError && this.
|
|
116
|
+
if (this.state.hasError && this.state.reportStatus !== 'idle') {
|
|
113
117
|
console.log("[Nine-Library] 페이지 주소 변경 감지 -> 에러 상태 초기화");
|
|
114
118
|
this.lastPath = window.location.pathname;
|
|
115
119
|
this.setState({ hasError: false, error: null, reportStatus: 'idle' });
|
|
@@ -155,20 +159,20 @@ export class NineExceptionHook extends React.Component {
|
|
|
155
159
|
'[SYSTEM] COMPONENT RENDER ERROR DETECTED'
|
|
156
160
|
),
|
|
157
161
|
|
|
158
|
-
// 2. 에러 내용
|
|
162
|
+
// 2. 에러 내용
|
|
159
163
|
React.createElement('pre', { style: { ...NineExceptionStyles.pre, ...customStyles.pre } }, errorMessage),
|
|
160
164
|
|
|
161
|
-
// 3. CLI 프롬프트
|
|
165
|
+
// 3. CLI 프롬프트 영역
|
|
162
166
|
React.createElement(
|
|
163
167
|
'div',
|
|
164
168
|
{ style: { ...NineExceptionStyles.footer, ...customStyles.footer } },
|
|
165
169
|
|
|
166
170
|
this.state.reportStatus === 'idle' && React.createElement(
|
|
167
171
|
'div',
|
|
168
|
-
{ style: NineExceptionStyles.promptRow },
|
|
172
|
+
{ style: { ...NineExceptionStyles.promptRow, ...customStyles.promptRow } },
|
|
169
173
|
React.createElement('span', null, 'Send error log to Control Tower ('),
|
|
170
174
|
React.createElement(
|
|
171
|
-
'
|
|
175
|
+
'span',
|
|
172
176
|
{
|
|
173
177
|
style: { ...NineExceptionStyles.cliLink, ...customStyles.cliLink },
|
|
174
178
|
onClick: this.handleReport
|
|
@@ -180,15 +184,15 @@ export class NineExceptionHook extends React.Component {
|
|
|
180
184
|
|
|
181
185
|
this.state.reportStatus === 'sending' && React.createElement(
|
|
182
186
|
'div',
|
|
183
|
-
{ style: { color: '#ED8936' } },
|
|
187
|
+
{ style: { color: '#ED8936', margin: '0', lineHeight: '1' } },
|
|
184
188
|
'>> Connecting to Control Tower... Sending payload.'
|
|
185
189
|
),
|
|
186
190
|
|
|
187
191
|
this.state.reportStatus === 'success' && React.createElement(
|
|
188
192
|
'div',
|
|
189
|
-
{ style: { display: 'flex', flexDirection: 'column', gap: '
|
|
190
|
-
React.createElement('div', { style: { color: '#38A169', fontWeight: 'bold' } }, '>> Transmit complete. Core engine initialized.'),
|
|
191
|
-
React.createElement('div', { style: { color: '#A0AEC0', fontStyle: 'italic', fontSize: '13px' } }, 'AI가 소스 코드를 재수정하는 동안 잠시만 기다려주세요...')
|
|
193
|
+
{ style: { display: 'flex', flexDirection: 'column', gap: '12px', margin: '0' } },
|
|
194
|
+
React.createElement('div', { style: { color: '#38A169', fontWeight: 'bold', lineHeight: '1' } }, '>> Transmit complete. Core engine initialized.'),
|
|
195
|
+
React.createElement('div', { style: { color: '#A0AEC0', fontStyle: 'italic', fontSize: '13px', lineHeight: '1' } }, 'AI가 소스 코드를 재수정하는 동안 잠시만 기다려주세요...')
|
|
192
196
|
)
|
|
193
197
|
)
|
|
194
198
|
);
|