저장소 B(_global._local)를 동기화하는 두 지점이 저장소 A 계열 스냅샷을 그대로
넘겨 왔다. setGlobalState 는 _local 을 얕게 병합하므로 그 쓰기는 patch 가 아니라
통째 교체이며, A 가 아직 받지 못한 값 — CKEditor 가 setLocal({render:false,
selfManaged:true}) 로 B 에만 쓴 본문 — 이 예외도 로그도 없이 사라진다.
handleSetState COMPONENT 분기의 B 쓰기와 sequence 반환값을 함께 live B 기반으로
바꾼다. 요청 body 는 B 가 아니라 그 반환값에서 오므로, B 쓰기만 고치면 저장은
여전히 422 가 난다. 같은 형태의 setParentLocal 도 함께 정정했다.
트리거는 브레이크포인트 교차가 아니라 19px 폭 변경이다 — 모바일 URL바 숨김·
가상키보드·화면 회전이 모두 해당한다. 작성 화면은 422 로, 수정 화면은 성공
토스트와 함께 조용한 데이터 손실로 나타났다.
함께 담은 것:
- ckeditor5: 미리보기 입력이 설정으로 저장되던 문제, 본문만 고치면 저장 버튼이
비활성으로 남던 문제
- board: 일괄 적용 확인 창의 항목 목록이 통째로 렌더되지 않던 문제(표현식
평가기가 콜백 안 멤버 대입을 거부), 「금지어」 라벨 누락
- 확장 문서의 Playwright 명령이 코어 config 를 잡아 "No tests found" 로 조용히
0건이 지나가던 문제
107 lines
2.6 KiB
TypeScript
107 lines
2.6 KiB
TypeScript
/**
|
|
* 템플릿 엔진 헬퍼 함수 통합 모듈
|
|
*
|
|
* 템플릿 개발자를 위한 헬퍼 함수들을 통합 export합니다.
|
|
* 향후 추가되는 헬퍼 모듈들은 여기서 re-export하여
|
|
* 일관된 진입점을 제공합니다.
|
|
*
|
|
* @packageDocumentation
|
|
*
|
|
* @example
|
|
* ```typescript
|
|
* // 템플릿 엔진에서 import
|
|
* import { renderItemChildren } from './template-engine/helpers';
|
|
*
|
|
* // 또는 개별 모듈에서 직접 import
|
|
* import { renderItemChildren } from './template-engine/helpers/RenderHelpers';
|
|
* ```
|
|
*/
|
|
|
|
// ============================================
|
|
// 렌더링 헬퍼
|
|
// ============================================
|
|
|
|
export {
|
|
renderItemChildren,
|
|
bindComponentActions,
|
|
evaluateIfCondition,
|
|
evaluateRenderCondition,
|
|
resolveClassMap,
|
|
type RenderItemChildrenOptions,
|
|
type BindComponentActionsOptions,
|
|
type EvaluateRenderConditionOptions,
|
|
type ClassMapDefinition,
|
|
type ResolveClassMapOptions,
|
|
} from './RenderHelpers';
|
|
|
|
// ============================================
|
|
// 이벤트 헬퍼
|
|
// ============================================
|
|
|
|
export {
|
|
createChangeEvent,
|
|
createClickEvent,
|
|
createSubmitEvent,
|
|
createKeyboardEvent,
|
|
type CreateChangeEventOptions,
|
|
type CreateClickEventOptions,
|
|
} from './EventHelpers';
|
|
|
|
// ============================================
|
|
// 스타일 헬퍼
|
|
// ============================================
|
|
|
|
export {
|
|
mergeClasses,
|
|
conditionalClass,
|
|
joinClasses,
|
|
} from './StyleHelpers';
|
|
|
|
// ============================================
|
|
// 파이프 함수
|
|
// ============================================
|
|
|
|
export {
|
|
PipeRegistry,
|
|
pipeRegistry,
|
|
hasPipes,
|
|
splitPipes,
|
|
executePipeChain,
|
|
parsePipeExpression,
|
|
type PipeFunction,
|
|
type ParsedPipe,
|
|
} from '../PipeRegistry';
|
|
|
|
// ============================================
|
|
// 조건 평가 헬퍼
|
|
// ============================================
|
|
|
|
export {
|
|
evaluateStringCondition,
|
|
evaluateConditionExpression,
|
|
evaluateConditionBranches,
|
|
evaluateConditions,
|
|
isConditionExpression,
|
|
isConditionBranches,
|
|
type ConditionExpression,
|
|
type ConditionBranch,
|
|
type ConditionsProperty,
|
|
type ConditionBranchResult,
|
|
type ActionDefinition,
|
|
} from './ConditionEvaluator';
|
|
|
|
// ============================================
|
|
// 상태 병합 헬퍼
|
|
// ============================================
|
|
|
|
export {
|
|
addMissingLeafKeys,
|
|
} from './StateMerge';
|
|
|
|
// ============================================
|
|
// 향후 추가 예정 헬퍼 모듈 예시
|
|
// ============================================
|
|
|
|
// export { formatValue, formatCurrency, formatDate } from './FormatHelpers';
|
|
// export { validateField, validateForm } from './ValidationHelpers';
|