open-grid 1.1.0 → 1.2.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.
- package/CHANGELOG.md +40 -0
- package/README.md +30 -1
- package/THIRD_PARTY_LICENSES.txt +43 -0
- package/dist/OpenGrid-B0Spm0rU.js +10404 -0
- package/dist/OpenGrid-CuXj0isp.cjs +97 -0
- package/dist/open-grid-base.css +5 -5
- package/dist/open-grid-react.cjs +1 -1
- package/dist/open-grid-react.js +1 -1
- package/dist/open-grid-skins.css +111 -0
- package/dist/open-grid-vue.cjs +1 -1
- package/dist/open-grid-vue.js +1 -1
- package/dist/open-grid.cjs +5 -5
- package/dist/open-grid.js +149 -136
- package/dist/types/core/AppearanceResolver.d.ts +100 -0
- package/dist/types/core/CellEditManager.d.ts +2 -0
- package/dist/types/core/ChartManager.d.ts +2 -0
- package/dist/types/core/ContextMenu.d.ts +5 -1
- package/dist/types/core/CrossGridController.d.ts +70 -0
- package/dist/types/core/DetailManager.d.ts +2 -0
- package/dist/types/core/ExportManager.d.ts +7 -0
- package/dist/types/core/ExtensionPointRegistry.d.ts +92 -0
- package/dist/types/core/FilterPanel.d.ts +4 -1
- package/dist/types/core/FilterSelect.d.ts +4 -1
- package/dist/types/core/FindBarManager.d.ts +6 -0
- package/dist/types/core/FormulaController.d.ts +81 -0
- package/dist/types/core/GridComposer.d.ts +142 -0
- package/dist/types/core/GridRenderer.d.ts +44 -4
- package/dist/types/core/IconRegistry.d.ts +55 -0
- package/dist/types/core/KeyboardManager.d.ts +2 -0
- package/dist/types/core/MutationService.d.ts +128 -0
- package/dist/types/core/OpenGrid.d.ts +464 -68
- package/dist/types/core/OrgChart.d.ts +2 -0
- package/dist/types/core/Pagination.d.ts +6 -1
- package/dist/types/core/RangeSelectionManager.d.ts +2 -0
- package/dist/types/core/RenderController.d.ts +65 -0
- package/dist/types/core/SkinRegistry.d.ts +53 -0
- package/dist/types/core/SortFilterManager.d.ts +2 -0
- package/dist/types/core/WorksheetManager.d.ts +4 -1
- package/dist/types/core/detail/DetailGlyph.d.ts +3 -1
- package/dist/types/core/editors/CellEditor.d.ts +17 -1
- package/dist/types/core/i18n/LocaleRegistry.d.ts +0 -0
- package/dist/types/core/i18n/interpolate.d.ts +5 -0
- package/dist/types/core/i18n/locales/en.d.ts +166 -0
- package/dist/types/core/i18n/locales/ko.d.ts +166 -0
- package/dist/types/core/i18n/types.d.ts +249 -0
- package/dist/types/core/icons/bootstrap-icons.d.ts +9 -0
- package/dist/types/core/renderers/CellRenderer.d.ts +43 -2
- package/dist/types/core/types.d.ts +387 -91
- package/dist/types/index.d.ts +26 -0
- package/package.json +3 -1
- package/dist/OpenGrid-5flQwc3W.js +0 -8434
- package/dist/OpenGrid-DahxRY7C.cjs +0 -92
|
@@ -25,6 +25,8 @@ export declare class OrgChart {
|
|
|
25
25
|
constructor(selector: string | HTMLElement, opts: OrgChartOptions);
|
|
26
26
|
setData(data: Record<string, any>[]): void;
|
|
27
27
|
setTheme(theme: string): void;
|
|
28
|
+
/** R12b: FORM(스킨) 축 — data-og-skin 을 자기 컨테이너에 설정(setTheme 과 동형, 색과 직교). */
|
|
29
|
+
setSkin(skin: string): void;
|
|
28
30
|
expandAll(): void;
|
|
29
31
|
collapseAll(): void;
|
|
30
32
|
private _toggle;
|
|
@@ -5,6 +5,8 @@ export interface PageChangeEvent {
|
|
|
5
5
|
totalPages: number;
|
|
6
6
|
}
|
|
7
7
|
export type PageChangeFn = (e: PageChangeEvent) => void;
|
|
8
|
+
/** i18n: 페이지네이션 라벨 해석기(행/페이지·범위 배지·빈 상태). / i18n: pagination label resolver (rows-per-page, range badge, empty). */
|
|
9
|
+
export type PaginationT = (key: string, params?: Record<string, string | number>) => string;
|
|
8
10
|
/**
|
|
9
11
|
* 그리드 하단 페이지네이션 UI + 상태 관리.
|
|
10
12
|
* DataLayer의 _displayIndexes 슬라이싱을 담당.
|
|
@@ -15,7 +17,8 @@ export declare class Pagination {
|
|
|
15
17
|
private _pageSize;
|
|
16
18
|
private _totalRows;
|
|
17
19
|
private _onChange;
|
|
18
|
-
|
|
20
|
+
private _t;
|
|
21
|
+
constructor(container: HTMLElement, pageSize: number, onChange: PageChangeFn, t?: PaginationT);
|
|
19
22
|
get page(): number;
|
|
20
23
|
get pageSize(): number;
|
|
21
24
|
get totalPages(): number;
|
|
@@ -30,5 +33,7 @@ export declare class Pagination {
|
|
|
30
33
|
};
|
|
31
34
|
private _emit;
|
|
32
35
|
private _render;
|
|
36
|
+
/** i18n: 상주 크롬 라벨을 활성 로케일로 다시 그린다(setLocale 경로). / i18n: repaint resident chrome labels in the active locale (setLocale path). */
|
|
37
|
+
refreshLabels(): void;
|
|
33
38
|
destroy(): void;
|
|
34
39
|
}
|
|
@@ -23,6 +23,8 @@ export interface RangeSelectionDeps<T extends Record<string, any>> {
|
|
|
23
23
|
emit: (event: string, ...args: any[]) => void;
|
|
24
24
|
doRender: () => void;
|
|
25
25
|
announce: (msg: string) => void;
|
|
26
|
+
/** i18n: 범위 선택/채우기 announce·aria 해석. / i18n: resolve range selection/fill announce & aria. */
|
|
27
|
+
t: (key: string, params?: Record<string, string | number>) => string;
|
|
26
28
|
hasCellFormula?: (rowId: string, field: string) => boolean;
|
|
27
29
|
offsetFormula?: (rowId: string, field: string, dRow: number, dCol: number) => string;
|
|
28
30
|
setCellFormulaByRowId?: (rowId: string, field: string, formula: string) => void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { GridRenderer, DetailRenderContext } from './GridRenderer.js';
|
|
2
|
+
import { VirtualScroll } from './VirtualScroll.js';
|
|
3
|
+
import { Pagination } from './Pagination.js';
|
|
4
|
+
import { ColumnLayout } from './ColumnLayout.js';
|
|
5
|
+
import { DataLayer } from './DataLayer.js';
|
|
6
|
+
import { FlatRowModel } from './FlatRowModel.js';
|
|
7
|
+
import { MergeEngine } from './MergeEngine.js';
|
|
8
|
+
import { SortFilterManager } from './SortFilterManager.js';
|
|
9
|
+
import { RowManager } from './RowManager.js';
|
|
10
|
+
import { CellEditManager } from './CellEditManager.js';
|
|
11
|
+
import { GroupTreeManager } from './GroupTreeManager.js';
|
|
12
|
+
import { DetailManager } from './DetailManager.js';
|
|
13
|
+
import { RangeSelectionManager } from './RangeSelectionManager.js';
|
|
14
|
+
import { GridOptions } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* R5(§3.1 C4, §6-R5): 렌더 루프의 유일 진입점. `OpenGrid` God object 에서
|
|
17
|
+
* `_onResize`/`_recalcWidths`/`_renderHeader`/`_syncHeaderLayout`/`_doRender`/`_visRange`
|
|
18
|
+
* (+ 전용 헬퍼 `_visCount`/`_paginationHeight`)를 **동작 불변**으로 옮긴 것.
|
|
19
|
+
*
|
|
20
|
+
* 스트랭글러 원칙(A2): 협력자(GridRenderer/VirtualScroll/Pagination 등)는 여전히
|
|
21
|
+
* `OpenGrid._mount` 가 생성·소유하며, 여기에는 `*Deps` 클로저 역전 패턴으로 **주입**만 된다.
|
|
22
|
+
* 값(컬럼폭·옵션 등)은 늦은-null / 재할당(worksheet 전환 시 colLayout 교체)을 견디도록
|
|
23
|
+
* 전부 getter 클로저로 읽는다. `fallbackViewportHeight` 클램프 시맨틱과 RenderFrame 구성은
|
|
24
|
+
* 원본과 1:1 동일하다(회귀 0).
|
|
25
|
+
*/
|
|
26
|
+
export interface RenderControllerDeps<T extends Record<string, any> = any> {
|
|
27
|
+
getContainer: () => HTMLElement;
|
|
28
|
+
getOptions: () => Required<GridOptions<T>>;
|
|
29
|
+
getRenderer: () => GridRenderer | null;
|
|
30
|
+
getVs: () => VirtualScroll | null;
|
|
31
|
+
getPagination: () => Pagination | null;
|
|
32
|
+
getData: () => DataLayer<T>;
|
|
33
|
+
getColLayout: () => ColumnLayout<T>;
|
|
34
|
+
getFlatModel: () => FlatRowModel;
|
|
35
|
+
getMergeEngine: () => MergeEngine;
|
|
36
|
+
getColWidths: () => number[];
|
|
37
|
+
setColWidths: (widths: number[]) => void;
|
|
38
|
+
getUserWidths: () => Map<string, number>;
|
|
39
|
+
getSfMgr: () => SortFilterManager<T>;
|
|
40
|
+
getRowMgr: () => RowManager<T>;
|
|
41
|
+
getEditMgr: () => CellEditManager<T>;
|
|
42
|
+
getGrpMgr: () => GroupTreeManager<T>;
|
|
43
|
+
getDetailMgr: () => DetailManager<T>;
|
|
44
|
+
getRangeMgr: () => RangeSelectionManager<T>;
|
|
45
|
+
buildDetailRenderContext: () => DetailRenderContext | undefined;
|
|
46
|
+
renderFooterEl: () => void;
|
|
47
|
+
}
|
|
48
|
+
export declare class RenderController<T extends Record<string, any> = any> {
|
|
49
|
+
private _deps;
|
|
50
|
+
private _autoHeightWarned;
|
|
51
|
+
constructor(deps: RenderControllerDeps<T>);
|
|
52
|
+
private _paginationHeight;
|
|
53
|
+
onResize(): void;
|
|
54
|
+
recalcWidths(totalWidth: number): void;
|
|
55
|
+
renderHeader(): void;
|
|
56
|
+
/**
|
|
57
|
+
* 렌더된 헤더의 실제 높이를 측정해 본문(bodyWrap) 높이와 뷰포트 높이에 반영한다.
|
|
58
|
+
* 줄바꿈이 없는 헤더는 측정 높이가 headerHeight 이하라 기존 고정 동작과 동일하다.
|
|
59
|
+
* (public: OpenGrid 가 `_syncHeaderLayout` 위임으로 노출 — 특성화 테스트가 직접 호출한다.)
|
|
60
|
+
*/
|
|
61
|
+
syncHeaderLayout(): void;
|
|
62
|
+
doRender(startIndex: number, endIndex: number): void;
|
|
63
|
+
visRange(): [number, number];
|
|
64
|
+
private _visCount;
|
|
65
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { SkinTokenDelta } from './types.js';
|
|
2
|
+
export interface SkinDefineResult {
|
|
3
|
+
/** 실제 등록된(가드레일 클램프가 반영된) 델타. */
|
|
4
|
+
readonly delta: SkinTokenDelta;
|
|
5
|
+
/** 접근성 가드레일이 조정한 토큰 경고(있으면 콘솔에도 출력). */
|
|
6
|
+
readonly warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
/** 스킨 델타가 색 리터럴을 담고 있는지 검사하고, 위반 시 던진다(FORM-only, Rule 2). */
|
|
9
|
+
export declare function assertFormOnly(id: string, delta: SkinTokenDelta): void;
|
|
10
|
+
/**
|
|
11
|
+
* HANMS 접근성 가드레일(불변식) 적용 — 정의 시점 클램프(§6.4, HANMS P0-4).
|
|
12
|
+
* - focus-width < 2px → 2px 로 클램프(가시 포커스 비협상).
|
|
13
|
+
* - focus-style: none → solid.
|
|
14
|
+
* 반환은 조정된 델타 + 경고 목록(silent override 아님 — 무엇을 클램프했는지 알린다).
|
|
15
|
+
*/
|
|
16
|
+
export declare function applyGuardrails(id: string, delta: SkinTokenDelta): SkinDefineResult;
|
|
17
|
+
/**
|
|
18
|
+
* 프로세스 전역 스킨 등록소. defineSkin(사용자) 는 검증+가드레일+`<style>` 주입,
|
|
19
|
+
* registerBuiltin(내장) 은 검증+가드레일만(CSS 는 skins.css 정적 번들 소유).
|
|
20
|
+
*/
|
|
21
|
+
export declare class SkinRegistry {
|
|
22
|
+
private _skins;
|
|
23
|
+
private _styleEl;
|
|
24
|
+
/** 내장 스킨 등록(주입 없음 — CSS 는 skins.css 가 전달). 검증/가드레일은 동일 적용. */
|
|
25
|
+
registerBuiltin(id: string, delta: SkinTokenDelta): void;
|
|
26
|
+
/**
|
|
27
|
+
* 사용자 스킨 등록. FORM-only 검증 + 가드레일 클램프 후 런타임 `<style>` 로
|
|
28
|
+
* `.og-container[data-og-skin="id"]` 블록을 주입(브라우저 환경). 반환은 조정 결과.
|
|
29
|
+
*/
|
|
30
|
+
define(id: string, delta: SkinTokenDelta): SkinDefineResult;
|
|
31
|
+
has(id: string): boolean;
|
|
32
|
+
get(id: string): SkinTokenDelta | undefined;
|
|
33
|
+
/** 등록된 모든 스킨 id(내장 + 사용자). */
|
|
34
|
+
list(): string[];
|
|
35
|
+
/** 런타임 `<style>` 주입(테스트/SSR 등 document 없으면 no-op). 같은 태그를 누적 사용. */
|
|
36
|
+
private _inject;
|
|
37
|
+
}
|
|
38
|
+
/** Sharp/Gothic — 엔터프라이즈 고밀도·각짐(§3.1). HANMS: APPROVE-WITH-GUARDRAIL(G-S1). */
|
|
39
|
+
export declare const SKIN_SHARP: SkinTokenDelta;
|
|
40
|
+
/** Rounded — 소비자 SaaS 소프트(§3.2). HANMS: APPROVE. */
|
|
41
|
+
export declare const SKIN_ROUNDED: SkinTokenDelta;
|
|
42
|
+
/** Stitch — 핸드크래프트(§3.3). HANMS: APPROVE-WITH-GUARDRAIL(G-ST1~3). 색(리넨/자수)은 theme 축. */
|
|
43
|
+
export declare const SKIN_STITCH: SkinTokenDelta;
|
|
44
|
+
/** Flat/Minimal — 플랫 2.0(§3.5). HANMS: APPROVE-WITH-GUARDRAIL(G-F1: 플로팅 표면 1px 보더). */
|
|
45
|
+
export declare const SKIN_FLAT: SkinTokenDelta;
|
|
46
|
+
/** High-Contrast — 접근성 우선·레퍼런스(§3.6). HANMS: APPROVE(안전 폴백). */
|
|
47
|
+
export declare const SKIN_HIGH_CONTRAST: SkinTokenDelta;
|
|
48
|
+
/** Material/Elevated — Neumorph 대체(HANMS §3): 중간 반경 + 정직한 그림자 엘리베이션. APPROVE. */
|
|
49
|
+
export declare const SKIN_MATERIAL: SkinTokenDelta;
|
|
50
|
+
/** 내장 스킨 카탈로그(HANMS 확정 6종, Neumorph 제외). id → 델타. */
|
|
51
|
+
export declare const BUILTIN_SKINS: ReadonlyArray<readonly [string, SkinTokenDelta]>;
|
|
52
|
+
/** 프로세스 전역 기본 레지스트리 — 내장 스킨을 부트스트랩 등록(주입 없음, CSS=skins.css). */
|
|
53
|
+
export declare const skinRegistry: SkinRegistry;
|
|
@@ -13,6 +13,8 @@ export interface SortFilterDeps<T extends Record<string, any>> {
|
|
|
13
13
|
renderHeader: () => void;
|
|
14
14
|
doRender: () => void;
|
|
15
15
|
announce: (msg: string) => void;
|
|
16
|
+
/** i18n: 정렬 상태어 + announce 해석. / i18n: resolve sort state words + announce. */
|
|
17
|
+
t: (key: string, params?: Record<string, string | number>) => string;
|
|
16
18
|
emit: (event: string, ...args: any[]) => void;
|
|
17
19
|
/** C0.5/§2.5: 정렬/필터 후 F1 범위 선택을 rowId 집합 기준으로 재투영(해제 아님). */
|
|
18
20
|
onReproject?: () => void;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { ColumnDef, WorksheetState } from './types.js';
|
|
2
2
|
export type SwitchCallback<T> = (name: string, state: WorksheetState<T>) => void;
|
|
3
|
+
/** i18n: 탭 UI aria 해석기(주입 없으면 전역 t). / i18n: tab-UI aria resolver (global t when not injected). */
|
|
4
|
+
export type WorksheetT = (key: string, params?: Record<string, string | number>) => string;
|
|
3
5
|
export declare class WorksheetManager<T extends Record<string, any> = any> {
|
|
4
6
|
private _sheets;
|
|
5
7
|
private _active;
|
|
6
8
|
private _tabBar;
|
|
7
9
|
private _onSwitch;
|
|
8
|
-
|
|
10
|
+
private _t;
|
|
11
|
+
constructor(container: HTMLElement, onSwitch: SwitchCallback<T>, t?: WorksheetT);
|
|
9
12
|
add(name: string, columns?: ColumnDef<T>[], data?: T[]): void;
|
|
10
13
|
remove(name: string): void;
|
|
11
14
|
rename(oldName: string, newName: string): void;
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
* 렌더 배선(GridRenderer expander 셀)이 이 모듈의 순수 함수/상수를 소비해 실제 DOM 속성을 채운다.
|
|
13
13
|
* 이 파일은 DOM 을 만들지 않는다 — 문자열/속성 값만 생성.
|
|
14
14
|
*/
|
|
15
|
+
/** i18n: 글리프 aria/툴팁 로케일 해석기(주입 없으면 전역 t). / i18n: glyph aria/tooltip resolver (global t when not injected). */
|
|
16
|
+
export type DetailGlyphT = (key: string, params?: Record<string, string | number>) => string;
|
|
15
17
|
/** 트리 셰브론(▸/▾)과 충돌하지 않는 전용 글리프(C10 기본값). */
|
|
16
18
|
export declare const DETAIL_GLYPH_COLLAPSED = "\u2295";
|
|
17
19
|
export declare const DETAIL_GLYPH_EXPANDED = "\u2296";
|
|
@@ -32,7 +34,7 @@ export interface DetailGlyphInfo {
|
|
|
32
34
|
* 펼침 여부에 따른 글리프/aria-label/title 조합을 반환한다. 트리 셰브론과 절대 겹치지 않는
|
|
33
35
|
* 문자셋만 사용(C10 R-DETAIL-GLYPH 하드 룰).
|
|
34
36
|
*/
|
|
35
|
-
export declare function getDetailGlyph(expanded: boolean): DetailGlyphInfo;
|
|
37
|
+
export declare function getDetailGlyph(expanded: boolean, t?: DetailGlyphT): DetailGlyphInfo;
|
|
36
38
|
/** NFR-5(1): 마스터 행 `aria-expanded` 값(문자열 — DOM setAttribute 그대로 사용). */
|
|
37
39
|
export declare function getMasterRowAriaExpanded(expanded: boolean): 'true' | 'false';
|
|
38
40
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ColumnDef } from '../types.js';
|
|
1
|
+
import { ColumnDef, EditorDef } from '../types.js';
|
|
2
2
|
import { RenderContext } from '../renderers/CellRenderer.js';
|
|
3
3
|
export { DateEditor } from './DateEditor.js';
|
|
4
4
|
export { SelectEditor } from './SelectEditor.js';
|
|
@@ -51,4 +51,20 @@ export declare class CheckboxEditor implements CellEditor {
|
|
|
51
51
|
focus(): void;
|
|
52
52
|
destroy(): void;
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* R10(§6-R10, §2.5 R-4c, §3.1 C12): `createEditor` 삼중 switch 를 `Map<typeName, factory>`
|
|
56
|
+
* 레지스트리로 대체한다. 내장 타입은 모듈 로드시 부트스트랩 등록, 미등록 타입은 기존과 동일하게
|
|
57
|
+
* TextEditor 로 폴백한다. `registerEditor(typeName, factory)` 로 코어 편집 없이 커스텀 에디터를
|
|
58
|
+
* 추가할 수 있다(OCP). 등록은 렌더러와 동일하게 **프로세스 전역**.
|
|
59
|
+
*
|
|
60
|
+
* 팩토리는 `(col, def)` 를 받는다. `def`(EditorDef 객체)는 객체 경로에서만 채워지며, 원 switch 의
|
|
61
|
+
* 세 컨텍스트(col.type / 문자열 / 객체) 동작을 정확히 보존한다:
|
|
62
|
+
* - number 는 def 가 있으면 min/max/step 을 옵션으로, 없으면 기본 NumberEditor.
|
|
63
|
+
* - select 는 def 가 있으면 def.options, 없으면 col.options 를 쓴다(원 switch 와 동일).
|
|
64
|
+
*/
|
|
65
|
+
export type EditorFactory = (col: ColumnDef, def?: EditorDef) => CellEditor;
|
|
66
|
+
/** 커스텀 셀 에디터 타입을 코어 편집 없이 등록(OCP). 프로세스 전역. */
|
|
67
|
+
export declare function registerEditor(typeName: string, factory: EditorFactory): void;
|
|
68
|
+
/** 등록 여부 조회(내부/테스트용). */
|
|
69
|
+
export declare function hasEditor(typeName: string): boolean;
|
|
54
70
|
export declare function createEditor(col: ColumnDef): CellEditor;
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `{name}` 명명 파라미터를 치환한다. `{{`→`{`, `}}`→`}` 이스케이프. 누락 파라미터는 플레이스홀더 유지.
|
|
3
|
+
* / Substitute `{name}` params. Escapes `{{`→`{`, `}}`→`}`. Missing params keep the placeholder.
|
|
4
|
+
*/
|
|
5
|
+
export declare function interpolate(template: string, params?: Readonly<Record<string, string | number>>): string;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { LocaleMeta } from '../types.js';
|
|
2
|
+
/** en 메시지 카탈로그. / en message catalog. */
|
|
3
|
+
export declare const EN_MESSAGES: {
|
|
4
|
+
contextMenu: {
|
|
5
|
+
sortAsc: string;
|
|
6
|
+
sortDesc: string;
|
|
7
|
+
find: string;
|
|
8
|
+
exportExcel: string;
|
|
9
|
+
exportCsv: string;
|
|
10
|
+
print: string;
|
|
11
|
+
};
|
|
12
|
+
filter: {
|
|
13
|
+
title: string;
|
|
14
|
+
opContains: string;
|
|
15
|
+
opEq: string;
|
|
16
|
+
opNe: string;
|
|
17
|
+
opStartsWith: string;
|
|
18
|
+
opEndsWith: string;
|
|
19
|
+
opGt: string;
|
|
20
|
+
opLt: string;
|
|
21
|
+
opGte: string;
|
|
22
|
+
opLte: string;
|
|
23
|
+
valuePlaceholder: string;
|
|
24
|
+
clear: string;
|
|
25
|
+
apply: string;
|
|
26
|
+
legend: string;
|
|
27
|
+
clearAria: string;
|
|
28
|
+
all: string;
|
|
29
|
+
};
|
|
30
|
+
findBar: {
|
|
31
|
+
label: string;
|
|
32
|
+
placeholder: string;
|
|
33
|
+
searchAria: string;
|
|
34
|
+
closeAria: string;
|
|
35
|
+
countBadge: (p: Readonly<Record<string, string | number>>) => string;
|
|
36
|
+
};
|
|
37
|
+
pagination: {
|
|
38
|
+
rowsPerPage: string;
|
|
39
|
+
rangeBadge: string;
|
|
40
|
+
empty: string;
|
|
41
|
+
};
|
|
42
|
+
drag: {
|
|
43
|
+
rowCount: (p: Readonly<Record<string, string | number>>) => string;
|
|
44
|
+
};
|
|
45
|
+
crossGrid: {
|
|
46
|
+
overlayAria: string;
|
|
47
|
+
title: string;
|
|
48
|
+
desc1: string;
|
|
49
|
+
desc2: string;
|
|
50
|
+
emptyOption: string;
|
|
51
|
+
scriptTitle: string;
|
|
52
|
+
copy: string;
|
|
53
|
+
copied: string;
|
|
54
|
+
copyFailed: string;
|
|
55
|
+
cancel: string;
|
|
56
|
+
applyMove: string;
|
|
57
|
+
scriptComment: string;
|
|
58
|
+
};
|
|
59
|
+
shuttle: {
|
|
60
|
+
toRight: string;
|
|
61
|
+
toLeft: string;
|
|
62
|
+
allRight: string;
|
|
63
|
+
allLeft: string;
|
|
64
|
+
};
|
|
65
|
+
tree: {
|
|
66
|
+
collapse: string;
|
|
67
|
+
expand: string;
|
|
68
|
+
};
|
|
69
|
+
detail: {
|
|
70
|
+
glyphLabel: string;
|
|
71
|
+
glyphTooltip: string;
|
|
72
|
+
expandAria: string;
|
|
73
|
+
collapseAria: string;
|
|
74
|
+
expandedAnnounce: string;
|
|
75
|
+
collapsedAnnounce: string;
|
|
76
|
+
collapsedAllAnnounce: string;
|
|
77
|
+
depthLimitOpen: string;
|
|
78
|
+
depthLimitSubgrid: string;
|
|
79
|
+
};
|
|
80
|
+
worksheet: {
|
|
81
|
+
addAria: string;
|
|
82
|
+
};
|
|
83
|
+
editor: {
|
|
84
|
+
datePick: string;
|
|
85
|
+
select: string;
|
|
86
|
+
cellPositionAnnounce: string;
|
|
87
|
+
};
|
|
88
|
+
cell: {
|
|
89
|
+
emptyValue: string;
|
|
90
|
+
revealTooltip: string;
|
|
91
|
+
revealAria: string;
|
|
92
|
+
radioAria: string;
|
|
93
|
+
barcodeAria: string;
|
|
94
|
+
};
|
|
95
|
+
row: {
|
|
96
|
+
selectAllAria: string;
|
|
97
|
+
selectAria: string;
|
|
98
|
+
moveAnnounce: string;
|
|
99
|
+
};
|
|
100
|
+
group: {
|
|
101
|
+
badge: string;
|
|
102
|
+
nullLabel: string;
|
|
103
|
+
};
|
|
104
|
+
pivot: {
|
|
105
|
+
totalLabel: string;
|
|
106
|
+
};
|
|
107
|
+
data: {
|
|
108
|
+
loadedAnnounce: (p: Readonly<Record<string, string | number>>) => string;
|
|
109
|
+
skippedCellsAnnounce: (p: Readonly<Record<string, string | number>>) => string;
|
|
110
|
+
};
|
|
111
|
+
range: {
|
|
112
|
+
selectionAnnounce: string;
|
|
113
|
+
formulaPreserved: (p: Readonly<Record<string, string | number>>) => string;
|
|
114
|
+
fillSkipped: (p: Readonly<Record<string, string | number>>) => string;
|
|
115
|
+
fillHandleAria: string;
|
|
116
|
+
};
|
|
117
|
+
sort: {
|
|
118
|
+
asc: string;
|
|
119
|
+
desc: string;
|
|
120
|
+
none: string;
|
|
121
|
+
announce: string;
|
|
122
|
+
};
|
|
123
|
+
chart: {
|
|
124
|
+
defaultTitle: string;
|
|
125
|
+
badgeSampled: string;
|
|
126
|
+
badgeAggregated: string;
|
|
127
|
+
badgePieFirstSeries: string;
|
|
128
|
+
badgeNegativesAbs: string;
|
|
129
|
+
badgeRangeFallback: string;
|
|
130
|
+
badgeEngineFallback: string;
|
|
131
|
+
announcePrefix: string;
|
|
132
|
+
a11ySummary: string;
|
|
133
|
+
a11ySummaryNoTitle: string;
|
|
134
|
+
a11yAltText: string;
|
|
135
|
+
a11yNoData: string;
|
|
136
|
+
tooltipEmpty: string;
|
|
137
|
+
canvasDefault: string;
|
|
138
|
+
};
|
|
139
|
+
formulaError: {
|
|
140
|
+
err: string;
|
|
141
|
+
ref: string;
|
|
142
|
+
cycle: string;
|
|
143
|
+
div0: string;
|
|
144
|
+
name: string;
|
|
145
|
+
value: string;
|
|
146
|
+
num: string;
|
|
147
|
+
fallback: string;
|
|
148
|
+
};
|
|
149
|
+
formula: {
|
|
150
|
+
cellErrorAnnounce: string;
|
|
151
|
+
ariaError: string;
|
|
152
|
+
ariaValue: string;
|
|
153
|
+
approxSuffix: string;
|
|
154
|
+
};
|
|
155
|
+
grid: {
|
|
156
|
+
containerAria: string;
|
|
157
|
+
emptyMessage: string;
|
|
158
|
+
filterTooltip: string;
|
|
159
|
+
detailRegion: string;
|
|
160
|
+
};
|
|
161
|
+
export: {
|
|
162
|
+
printSummary: string;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
/** en 포맷 메타. / en format meta. */
|
|
166
|
+
export declare const EN_META: LocaleMeta;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { LocaleMeta } from '../types.js';
|
|
2
|
+
/** ko 메시지 카탈로그. `satisfies` 로 키 완전성 컴파일 강제. / ko message catalog. `satisfies` enforces key completeness at compile time. */
|
|
3
|
+
export declare const KO_MESSAGES: {
|
|
4
|
+
contextMenu: {
|
|
5
|
+
sortAsc: string;
|
|
6
|
+
sortDesc: string;
|
|
7
|
+
find: string;
|
|
8
|
+
exportExcel: string;
|
|
9
|
+
exportCsv: string;
|
|
10
|
+
print: string;
|
|
11
|
+
};
|
|
12
|
+
filter: {
|
|
13
|
+
title: string;
|
|
14
|
+
opContains: string;
|
|
15
|
+
opEq: string;
|
|
16
|
+
opNe: string;
|
|
17
|
+
opStartsWith: string;
|
|
18
|
+
opEndsWith: string;
|
|
19
|
+
opGt: string;
|
|
20
|
+
opLt: string;
|
|
21
|
+
opGte: string;
|
|
22
|
+
opLte: string;
|
|
23
|
+
valuePlaceholder: string;
|
|
24
|
+
clear: string;
|
|
25
|
+
apply: string;
|
|
26
|
+
legend: string;
|
|
27
|
+
clearAria: string;
|
|
28
|
+
all: string;
|
|
29
|
+
};
|
|
30
|
+
findBar: {
|
|
31
|
+
label: string;
|
|
32
|
+
placeholder: string;
|
|
33
|
+
searchAria: string;
|
|
34
|
+
closeAria: string;
|
|
35
|
+
countBadge: string;
|
|
36
|
+
};
|
|
37
|
+
pagination: {
|
|
38
|
+
rowsPerPage: string;
|
|
39
|
+
rangeBadge: string;
|
|
40
|
+
empty: string;
|
|
41
|
+
};
|
|
42
|
+
drag: {
|
|
43
|
+
rowCount: string;
|
|
44
|
+
};
|
|
45
|
+
crossGrid: {
|
|
46
|
+
overlayAria: string;
|
|
47
|
+
title: string;
|
|
48
|
+
desc1: string;
|
|
49
|
+
desc2: string;
|
|
50
|
+
emptyOption: string;
|
|
51
|
+
scriptTitle: string;
|
|
52
|
+
copy: string;
|
|
53
|
+
copied: string;
|
|
54
|
+
copyFailed: string;
|
|
55
|
+
cancel: string;
|
|
56
|
+
applyMove: string;
|
|
57
|
+
scriptComment: string;
|
|
58
|
+
};
|
|
59
|
+
shuttle: {
|
|
60
|
+
toRight: string;
|
|
61
|
+
toLeft: string;
|
|
62
|
+
allRight: string;
|
|
63
|
+
allLeft: string;
|
|
64
|
+
};
|
|
65
|
+
tree: {
|
|
66
|
+
collapse: string;
|
|
67
|
+
expand: string;
|
|
68
|
+
};
|
|
69
|
+
detail: {
|
|
70
|
+
glyphLabel: string;
|
|
71
|
+
glyphTooltip: string;
|
|
72
|
+
expandAria: string;
|
|
73
|
+
collapseAria: string;
|
|
74
|
+
expandedAnnounce: string;
|
|
75
|
+
collapsedAnnounce: string;
|
|
76
|
+
collapsedAllAnnounce: string;
|
|
77
|
+
depthLimitOpen: string;
|
|
78
|
+
depthLimitSubgrid: string;
|
|
79
|
+
};
|
|
80
|
+
worksheet: {
|
|
81
|
+
addAria: string;
|
|
82
|
+
};
|
|
83
|
+
editor: {
|
|
84
|
+
datePick: string;
|
|
85
|
+
select: string;
|
|
86
|
+
cellPositionAnnounce: string;
|
|
87
|
+
};
|
|
88
|
+
cell: {
|
|
89
|
+
emptyValue: string;
|
|
90
|
+
revealTooltip: string;
|
|
91
|
+
revealAria: string;
|
|
92
|
+
radioAria: string;
|
|
93
|
+
barcodeAria: string;
|
|
94
|
+
};
|
|
95
|
+
row: {
|
|
96
|
+
selectAllAria: string;
|
|
97
|
+
selectAria: string;
|
|
98
|
+
moveAnnounce: string;
|
|
99
|
+
};
|
|
100
|
+
group: {
|
|
101
|
+
badge: string;
|
|
102
|
+
nullLabel: string;
|
|
103
|
+
};
|
|
104
|
+
pivot: {
|
|
105
|
+
totalLabel: string;
|
|
106
|
+
};
|
|
107
|
+
data: {
|
|
108
|
+
loadedAnnounce: string;
|
|
109
|
+
skippedCellsAnnounce: string;
|
|
110
|
+
};
|
|
111
|
+
range: {
|
|
112
|
+
selectionAnnounce: string;
|
|
113
|
+
formulaPreserved: string;
|
|
114
|
+
fillSkipped: string;
|
|
115
|
+
fillHandleAria: string;
|
|
116
|
+
};
|
|
117
|
+
sort: {
|
|
118
|
+
asc: string;
|
|
119
|
+
desc: string;
|
|
120
|
+
none: string;
|
|
121
|
+
announce: string;
|
|
122
|
+
};
|
|
123
|
+
chart: {
|
|
124
|
+
defaultTitle: string;
|
|
125
|
+
badgeSampled: string;
|
|
126
|
+
badgeAggregated: string;
|
|
127
|
+
badgePieFirstSeries: string;
|
|
128
|
+
badgeNegativesAbs: string;
|
|
129
|
+
badgeRangeFallback: string;
|
|
130
|
+
badgeEngineFallback: string;
|
|
131
|
+
announcePrefix: string;
|
|
132
|
+
a11ySummary: string;
|
|
133
|
+
a11ySummaryNoTitle: string;
|
|
134
|
+
a11yAltText: string;
|
|
135
|
+
a11yNoData: string;
|
|
136
|
+
tooltipEmpty: string;
|
|
137
|
+
canvasDefault: string;
|
|
138
|
+
};
|
|
139
|
+
formulaError: {
|
|
140
|
+
err: string;
|
|
141
|
+
ref: string;
|
|
142
|
+
cycle: string;
|
|
143
|
+
div0: string;
|
|
144
|
+
name: string;
|
|
145
|
+
value: string;
|
|
146
|
+
num: string;
|
|
147
|
+
fallback: string;
|
|
148
|
+
};
|
|
149
|
+
formula: {
|
|
150
|
+
cellErrorAnnounce: string;
|
|
151
|
+
ariaError: string;
|
|
152
|
+
ariaValue: string;
|
|
153
|
+
approxSuffix: string;
|
|
154
|
+
};
|
|
155
|
+
grid: {
|
|
156
|
+
containerAria: string;
|
|
157
|
+
emptyMessage: string;
|
|
158
|
+
filterTooltip: string;
|
|
159
|
+
detailRegion: string;
|
|
160
|
+
};
|
|
161
|
+
export: {
|
|
162
|
+
printSummary: string;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
/** ko 포맷 메타(Intl 태그·방향·수출 폰트). / ko format meta (Intl tag, direction, export font). */
|
|
166
|
+
export declare const KO_META: LocaleMeta;
|