@ihabdevteam/core 0.141.0 → 0.143.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 (76) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/components.cjs.js +176 -176
  3. package/dist/hooks.cjs.js +1 -1
  4. package/dist/i18n.cjs.js +1 -1
  5. package/dist/ihabdevteam-core.cjs.js +182 -182
  6. package/dist/ihabdevteam-core.d.ts +81 -29
  7. package/dist/packages/core/src/components/BarChart.d.ts +1 -1
  8. package/dist/packages/core/src/components/BarChart.js +4 -3
  9. package/dist/packages/core/src/components/BottomNav.js +4 -0
  10. package/dist/packages/core/src/components/BulkBar.js +15 -4
  11. package/dist/packages/core/src/components/Button.js +10 -4
  12. package/dist/packages/core/src/components/DatePicker.js +5 -1
  13. package/dist/packages/core/src/components/Dialog.js +3 -1
  14. package/dist/packages/core/src/components/Dropdown.js +6 -2
  15. package/dist/packages/core/src/components/FileUpload.js +3 -1
  16. package/dist/packages/core/src/components/FilterPanel.js +3 -2
  17. package/dist/packages/core/src/components/PanelRow.js +5 -0
  18. package/dist/packages/core/src/components/PaymentPlan.d.ts +2 -2
  19. package/dist/packages/core/src/components/Popup/DeviceSideTable.js +3 -1
  20. package/dist/packages/core/src/components/Popup/LoadTablePopup.js +5 -2
  21. package/dist/packages/core/src/components/Popup/Popup.d.ts +6 -6
  22. package/dist/packages/core/src/components/Popup/Popup.js +11 -9
  23. package/dist/packages/core/src/components/Popup/customerDetailUtils.d.ts +1 -1
  24. package/dist/packages/core/src/components/Popup/customerDetailUtils.js +1 -1
  25. package/dist/packages/core/src/components/TextField.js +3 -1
  26. package/dist/packages/core/src/components/Tooltip/Tooltip.js +7 -1
  27. package/dist/packages/core/src/components/Training/TrainingBlock.js +2 -1
  28. package/dist/packages/core/src/components/Training/TrainingPagePopup.d.ts +1 -1
  29. package/dist/packages/core/src/components/Training/TrainingPagePopup.js +7 -1
  30. package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.js +52 -2
  31. package/dist/packages/core/src/components/Training/TrainingStepTextBox.js +3 -1
  32. package/dist/packages/core/src/components/Training/WordTablePopup.js +9 -1
  33. package/dist/packages/core/src/components/Training/useAudioPreview.js +28 -3
  34. package/dist/packages/core/src/components/Word/WordSearchResultBlock.js +19 -5
  35. package/dist/packages/core/src/components/Word/WordTableBlock.js +5 -2
  36. package/dist/packages/core/src/components/Word/WordTableButton.d.ts +3 -3
  37. package/dist/packages/core/src/components/Word/WordTableButton.js +1 -1
  38. package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.js +1 -1
  39. package/dist/packages/core/src/components/Word/wordTableBlockTypes.d.ts +2 -2
  40. package/dist/packages/core/src/components/barChartData.d.ts +3 -5
  41. package/dist/packages/core/src/components/barChartData.js +7 -3
  42. package/dist/packages/core/src/components/barChartTypes.d.ts +16 -3
  43. package/dist/packages/core/src/components/barChartTypes.js +27 -13
  44. package/dist/packages/core/src/components.d.ts +1 -0
  45. package/dist/packages/core/src/hooks/focusReturn.d.ts +4 -0
  46. package/dist/packages/core/src/hooks/focusReturn.js +27 -0
  47. package/dist/packages/core/src/hooks/inputModality.d.ts +2 -0
  48. package/dist/packages/core/src/hooks/inputModality.js +31 -0
  49. package/dist/packages/core/src/hooks/useDocumentTitle.d.ts +12 -0
  50. package/dist/packages/core/src/hooks/useDocumentTitle.js +7 -6
  51. package/dist/packages/core/src/hooks/useEditableList.js +3 -3
  52. package/dist/packages/core/src/hooks/useWordMeanings.js +6 -3
  53. package/dist/packages/core/src/hooks/useWordTrainingFilter.d.ts +2 -2
  54. package/dist/packages/core/src/hooks/useWordTrainingFilter.js +54 -17
  55. package/dist/packages/core/src/utils/date.d.ts +18 -0
  56. package/dist/packages/core/src/utils/date.js +23 -0
  57. package/dist/packages/core/src/utils/format.js +2 -1
  58. package/dist/packages/core/src/utils/imageConfig.d.ts +2 -0
  59. package/dist/packages/core/src/utils/imageConfig.js +34 -5
  60. package/dist/packages/core/src/utils/josa.js +2 -0
  61. package/dist/packages/core/src/utils/koreanSyllable.d.ts +5 -0
  62. package/dist/packages/core/src/utils/koreanSyllable.js +69 -43
  63. package/dist/packages/core/src/utils/phonemePairSearch.js +17 -0
  64. package/dist/packages/core/src/utils/textSort.d.ts +10 -0
  65. package/dist/packages/core/src/utils/textSort.js +16 -11
  66. package/dist/packages/core/src/utils/timeoutSignal.d.ts +5 -0
  67. package/dist/packages/core/src/utils/timeoutSignal.js +12 -0
  68. package/dist/packages/core/src/utils/ttsConfig.js +2 -1
  69. package/dist/packages/core/src/utils/wordContrast.js +6 -4
  70. package/dist/packages/core/src/utils/wordTrainingPool.js +14 -5
  71. package/dist/packages/core/src/utils.d.ts +1 -1
  72. package/dist/packages/core/src/utils.js +1 -1
  73. package/dist/packages/core/src/version.d.ts +1 -1
  74. package/dist/packages/core/src/version.js +1 -1
  75. package/dist/utils.cjs.js +2 -2
  76. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,79 @@ All notable changes to this project will be documented in this file.
7
7
  > 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
8
8
  > 제 이야기를 못 찾는다.
9
9
 
10
+ ## 0.143.0
11
+
12
+ 12차 검수 판이다 — 환경 실패·경계값·여러 벌·언어 전환·prop 계약·큰 자료 성능 검수에서 **재현된** 결함을 고쳤고, **해외 기기의 날짜를
13
+ KST 로** 맞췄다(시간대 공식 지원 — 사용자 결정).
14
+ 더한 공개 API: `getTodayKstDate`·`kstStartOfDay`·`parseLocalYmd`(utils 묶음에도), `ControlDateRange` 타입, `getControlDateRange` 둘째 인자.
15
+
16
+ ### 소비자에게 먼저
17
+
18
+ - **`getControlDateRange` 가 KST 의 날로 자른다**: `from` = 첫날 00:00 KST, `to` = 끝날 23:59:59.999 KST **순간**. 새 필드
19
+ `fromYmd`·`toYmd`(KST 'YYYY-MM-DD'), 둘째 인자 `offset`(`-1` = 앞 주 · 앞 **달력** 달). 한국 기기에서는 값이 전과 같다. 이름표·달력
20
+ 셈은 `from` 을 기기 getter 로 읽지 말고 `parseLocalYmd(fromYmd)` 로.
21
+ - **BarChart 의 '오늘'·이번 주·이번 달이 KST**(`buildMonthChartData`·`todayWeekValue`·월 옵션). 점(`ChartPoint.date`)은 KST 달력 날짜를
22
+ 기기 달력 자정 Date 로 넣는다 — `parseLocalYmd(toKstYmd(시각))` 또는 `parseLocalYmd(log_date)`.
23
+ - **소리 자물쇠**: 훈련 단계 재생기·블록 미리 듣기도 "지금 울리는 소리는 하나" 에 든다 — 다른 재생기·낱말 카드·미리 듣기가 울리면
24
+ 멈춤 단추처럼 멈춘다(이어 듣기 가능). 전에는 듣기 단계 둘·듣기+카드 단계에서 두 소리가 함께 울렸다. 소음은 그대로 함께 울린다.
25
+ - **PanelRow `error`** 가 이제 모든 variant 에서 문구를 낸다(전에는 input·dropdown 만) — 소리방향성 결과 저장 폴더 행에 까닭이 보인다.
26
+ - **TrainingStepAudioPlayer `disabled`** 이면 듣기 단추가 `disabled` — 키보드로도 안 눌린다(말귀 순서 훈련의 거짓 "가져오지 못했습니다").
27
+ - **LoadTablePopup**: `tables` 를 주고 `onDelete` 를 안 주면 삭제 단추가 없다(전에는 브라우저 저장소의 같은 id 표를 지웠다).
28
+ - **useWordTrainingFilter**: 품사·어종을 고정 코드로 저장한다(`posFilter`·`wordTypeFilter` 반환은 지금 언어 라벨 그대로). 옛 라벨 저장값도 읽는다.
29
+
30
+ ### 바뀜
31
+
32
+ - **환경**: `AbortSignal.timeout` 없는 iOS/iPadOS 15 이하에서 이미지·음성 존재 확인이 거절(말귀 '이미지 있는 단어만' 첫 검색이 안
33
+ 끝남) · 뜻 조회 빈 응답을 '뜻 없음' 으로 굳힘 · 객체 아닌 이미지 캐시 저장값에 매번 던짐.
34
+ - **조각 한글(NFD)·전각 숫자**: 맥·PDF 에서 붙여넣은 검색어가 단어 검색 0건·입력 오류(`searchAndRankWords` 등 다섯) · NFD 끝
35
+ 받침의 조사 · `formatPhone` 이 전각 숫자를 버림.
36
+ - **창 이어 열기 포커스**: 닫으면서 다음 창을 열면(미리보기 → 삭제 확인) 확인 창을 닫을 때 포커스가 body 로 떨어졌다.
37
+ - **언어 전환**: 화면을 연 채 ko→en 이면 단어훈련 품사·어종 필터가 모든 단어를 걸렀다.
38
+ - **prop 계약**: WordTableBlock 쪽이 나뉘면 끌어 옮기기 꺼짐 · WordTablePopup 열자마자 `onScoreChange` · DeviceSideTable 한쪽 콜백이면
39
+ 체크 잠김 · 열린 채 disabled 된 Dropdown·DatePicker · readOnly/disabled TextField 후보 · FilterPanel `allOptionDisabled`(segmented·dropdown)
40
+ · FileUpload disabled 제거 · BottomNav "…" 의 꺼진 항목 · Popup `useTitle={false}` 창 이름 · Button toggleable·blur 의 onMouseLeave
41
+ · Tooltip `edgeMargin={0}` · JSDoc 몇 곳.
42
+ - **큰 자료 성능**(실제 23,000 낱말로 결과가 같음을 확인): 단어훈련 칩 한 번 130–550ms → 46–212ms · 대립쌍 음소 검색 110–320ms →
43
+ 60–114ms · 단어 검색 키마다 14–36ms → 5–10ms · 시작 우선 정렬.
44
+
45
+ ### 고치지 않은 것 — 결정·확인이 필요하다
46
+
47
+ - 같은 값을 다시 골랐을 때 onChange(Dropdown·Rating·Tabs·SegmentedControl) 규칙 통일.
48
+ - 공용 속성 필터(`useWordAttributeFilter`·`filterSelected`)가 번역 라벨을 열쇠로 씀 — 저장된 표 config 이전이 필요.
49
+ - `saveTable`·`updateSavedTable` 이 저장 공간이 차도 성공처럼 반환 · TextField 글자 수가 UTF-16 단위.
50
+ - BarChart `barWidth` 8px 하한 · RingChart small `hideCenter={false}` · PhonemeSelectBlock `showInfoButton` 등 보이는 것이 바뀌는 prop 들.
51
+ - 칩 한 번에 남은 46–212ms(양보·워커) · Table 행 memo.
52
+ - 앞 판에 적은 결정은 그대로.
53
+
54
+ ## 0.142.0
55
+
56
+ 11차 검수 판이다 — 이번 밤에 고친 것들을 거꾸로 훑어 **그 수정이 만든 회귀** 를 고쳤다. 놀이터 문서를 0.133~0.141 동작에 맞췄다.
57
+ 걷거나 더한 공개 API 는 없다.
58
+
59
+ ### 소비자에게 먼저
60
+
61
+ - **Popup `animateThen` 되살림(0.139.0) 범위를 좁혔다**: 콜백이 **던지거나, 약속을 돌려주고 그 약속이 거절되거나 끝난 뒤에도 창이 남아
62
+ 있을 때만** 되살린다. 약속을 안 돌려주는 동기 콜백은 되살리지 않는다. 0.139~0.141 에서는 부모가 저장을 따로 기다렸다 창을 닫는
63
+ 흔한 꼴(`animateThen(handleSave)`, handleSave 는 onSave 만 부름)에서 **기다리는 사이 창이 다시 보이고 저장 단추가 다시 눌려 두 번
64
+ 저장** 될 수 있었다. 저장 실패에 창을 되살리고 싶으면 콜백이 저장 약속을 돌려준다(`animateThen(() => onSave(...))`).
65
+ - **초점 옮기기는 키보드로 눌렀을 때만** 한다(TrainingStepAudioPlayer 큰 '듣기', TrainingStepTextBox '문장 미리보기', TrainingBlock
66
+ 마지막 '더보기', TrainingPagePopup '다음 문제'). 0.138.0 부터 마우스로 눌러도 옮겨 '재생 / 멈춤'·'글자 크기 감소'·'문장 듣기' 초점 툴팁이 떴다.
67
+
68
+ ### 바뀜
69
+
70
+ - **칸순**: 0.136.0 의 글자 속 숫자 비교가 단위 붙은 소수·음수(`'12.5%'`·`'-10 dB'`)를 거꾸로 세웠다 — 그런 칸은 글자 차례로.
71
+ - **BulkBar**: 0.141.0 의 여유가 넘친 순간의 좁은 폭을 들고 있어, 막대가 넓어져도(옆 메뉴 접기) 쌓임이 안 풀렸다 — 막대 폭이 바뀌면 다시 잰다.
72
+ - **Tooltip**: 0.140.0 의 스크롤 닫기가 툴팁에서 body 로 빠진 메뉴·달력(data-tooltip-ignore)을 굴려도 툴팁을 닫았다.
73
+ - **놀이터**: Popup 크기(xlarge·fit)·층·fillBody·높이 변수·되살림, 툴팁 스크롤 닫힘, TrainingBlockButton row·Button tooltipOnly·Panel
74
+ compactRows 시연 등 스물여 곳을 지금 동작에 맞췄다. 소스 주석 몇 곳도.
75
+
76
+ ### 고치지 않은 것 — 결정·확인이 필요하다
77
+
78
+ - useEditableList: commitEdit 과 같은 동기 처리 안에서 부모가 새 목록을 넘기면 그 목록을 한 번 건너뛴다.
79
+ - escStack·후보 목록의 조합 중 키(229) 무시가 조합을 끝내는 키를 한 번만 보내는 브라우저에서는 두 번 누르게 할 수 있다 — 실기기 확인.
80
+ - 팝업 안에서 초점 툴팁이 떠 있으면 Esc 첫 번째는 툴팁만 닫는다.
81
+ - 앞 판에 적은 결정은 그대로.
82
+
10
83
  ## 0.141.0
11
84
 
12
85
  10차 검수 판이다 — 렌더 되먹임·보안(주입) 검수에서 **재현된** 결함을 고쳤다. 보안 수정이 들어 있어 따로 판을 낸다.