@g1cloud/entity-modeler-next 5.0.0-alpha.2 → 5.0.0-alpha.21

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 (36) hide show
  1. package/README.md +31 -17
  2. package/dist/adapter/persisted.d.ts +6 -0
  3. package/dist/agent/resolver.d.ts +32 -1
  4. package/dist/agent/symbolicOp.d.ts +47 -0
  5. package/dist/command/commands.d.ts +15 -3
  6. package/dist/core/attributeOrder.d.ts +17 -0
  7. package/dist/core/dbTypes.d.ts +9 -0
  8. package/dist/core/inheritedColumns.d.ts +57 -0
  9. package/dist/core/mergeDiagram.d.ts +38 -0
  10. package/dist/core/mermaid.d.ts +6 -0
  11. package/dist/core/migrateLegacyMoney.d.ts +8 -0
  12. package/dist/core/propagation.d.ts +22 -0
  13. package/dist/core/resolve.d.ts +4 -0
  14. package/dist/core/sharedColumn.d.ts +16 -1
  15. package/dist/core/types.d.ts +64 -0
  16. package/dist/core/validation.d.ts +8 -1
  17. package/dist/editor/controller.d.ts +53 -1
  18. package/dist/entity-modeler-next.css +1 -1
  19. package/dist/entity-modeler.js +11302 -9757
  20. package/dist/entity-modeler.umd.cjs +17 -15
  21. package/dist/index.d.ts +6 -1
  22. package/dist/view/DiagramCanvas.vue.d.ts +2 -0
  23. package/dist/view/EditModeToggle.vue.d.ts +1 -0
  24. package/dist/view/EditorToolbar.vue.d.ts +2 -0
  25. package/dist/view/EntityBasicsSection.vue.d.ts +8 -1
  26. package/dist/view/EntityIndexSection.vue.d.ts +7 -1
  27. package/dist/view/EntityNode.vue.d.ts +1 -0
  28. package/dist/view/EntityOperationsSection.vue.d.ts +7 -1
  29. package/dist/view/GroupNode.vue.d.ts +1 -0
  30. package/dist/view/ShortcutHelpModal.vue.d.ts +2 -0
  31. package/dist/view/{EntityTextPreview.vue.d.ts → TextExportModal.vue.d.ts} +9 -1
  32. package/dist/view/explorerFilter.d.ts +20 -0
  33. package/dist/view/exportImage.d.ts +14 -0
  34. package/dist/view/opConflictNotice.d.ts +12 -0
  35. package/package.json +1 -1
  36. package/dist/view/exportSvg.d.ts +0 -7
package/dist/index.d.ts CHANGED
@@ -3,13 +3,18 @@ export * from './core/resolve';
3
3
  export * from './core/routing';
4
4
  export * from './core/autolayout';
5
5
  export * from './core/text';
6
+ export * from './core/mermaid';
6
7
  export * from './core/svg';
7
8
  export * from './core/validation';
8
9
  export * from './core/sharedColumn';
10
+ export { JAVA_TYPES, SELECTABLE_JAVA_TYPES, javaTypeLabel, CUSTOM_TYPE_VALUE, GROUP_CODE_ENUM_VALUE, DEFAULT_JAVA_TYPE, type JavaTypeDef, } from './core/javaTypes';
11
+ export { migrateLegacyMoney } from './core/migrateLegacyMoney';
12
+ export { mergeDiagram, type MergeDiagramSource, type MergeDiagramOptions, type MergeDiagramResult, } from './core/mergeDiagram';
9
13
  export { synthesizeRestoreOps, deepEqual as restoreDeepEqual, type DiagramSnapshotState } from './core/synthesizeRestoreOps';
10
14
  export { projectFieldAudit, type FieldAuditRecord, type FieldAuditTarget, type FieldAuditEntry } from './core/projectFieldAudit';
11
15
  export { projectEntityAudit, type EntityAuditEntry, type EntityAuditSubject, type EntityAuditSubjectKind } from './core/projectEntityAudit';
12
16
  export { projectActionLog, type ActionGroup, type SubjectAction, type ActionSubject, type ActionSubjectKind, type ActionFieldChange } from './core/projectActionLog';
17
+ export { projectInheritedColumns, makeInheritedColumnRef, isInheritedColumnRef, parseInheritedColumnRef, INHERITED_REF_PREFIX, type InheritedColumn, } from './core/inheritedColumns';
13
18
  export { newId } from './core/id';
14
19
  export * from './command/types';
15
20
  export { CommandStack, type CommandDirection, type CommandListener } from './command/stack';
@@ -32,5 +37,5 @@ export { default as EditorToolbar } from './view/EditorToolbar.vue';
32
37
  export { default as EditModeToggle } from './view/EditModeToggle.vue';
33
38
  export { default as PropertyPanel } from './view/PropertyPanel.vue';
34
39
  export { default as EntityModeler } from './view/EntityModeler.vue';
35
- export { buildDiagramSvg, exportDiagramSvg } from './view/exportSvg';
40
+ export { buildDiagramSvg, exportDiagramSvg, exportDiagramPng } from './view/exportImage';
36
41
  export { createEditorController, emptyState, EDITOR, type EditorController, type HistoryTransport, type RestoreTransport, type RestoreOutcome, } from './editor/controller';
@@ -3,7 +3,9 @@ type __VLS_Props = {
3
3
  controller: EditorController;
4
4
  };
5
5
  declare function exportSvg(): Promise<void>;
6
+ declare function exportPng(): Promise<void>;
6
7
  declare const _default: import('vue').DefineComponent<__VLS_Props, {
7
8
  exportSvg: typeof exportSvg;
9
+ exportPng: typeof exportPng;
8
10
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
9
11
  export default _default;
@@ -1,6 +1,7 @@
1
1
  type __VLS_Props = {
2
2
  editable: boolean;
3
3
  opMode: boolean;
4
+ frozen?: boolean;
4
5
  };
5
6
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
6
7
  toggle: () => any;
@@ -5,9 +5,11 @@ type __VLS_Props = {
5
5
  };
6
6
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
7
  exportSvg: () => any;
8
+ exportPng: () => any;
8
9
  toggleHistory: () => any;
9
10
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
10
11
  onExportSvg?: (() => any) | undefined;
12
+ onExportPng?: (() => any) | undefined;
11
13
  onToggleHistory?: (() => any) | undefined;
12
14
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
13
15
  export default _default;
@@ -2,6 +2,13 @@ import { EditorController } from '../editor/controller';
2
2
  type __VLS_Props = {
3
3
  controller: EditorController;
4
4
  entityId: string;
5
+ collapsible?: boolean;
6
+ collapsed?: boolean;
7
+ title?: string;
5
8
  };
6
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
10
+ toggle: () => any;
11
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onToggle?: (() => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
7
14
  export default _default;
@@ -2,6 +2,12 @@ import { EditorController } from '../editor/controller';
2
2
  type __VLS_Props = {
3
3
  controller: EditorController;
4
4
  entityId: string;
5
+ collapsible?: boolean;
6
+ collapsed?: boolean;
5
7
  };
6
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
9
+ toggle: () => any;
10
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ onToggle?: (() => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
7
13
  export default _default;
@@ -6,6 +6,7 @@ type __VLS_Props = {
6
6
  entity: Entity;
7
7
  displayMode?: DisplayMode;
8
8
  collapsed?: boolean;
9
+ locked?: boolean;
9
10
  groupRef?: string;
10
11
  size?: {
11
12
  width: number;
@@ -2,6 +2,12 @@ import { EditorController } from '../editor/controller';
2
2
  type __VLS_Props = {
3
3
  controller: EditorController;
4
4
  entityId: string;
5
+ collapsible?: boolean;
6
+ collapsed?: boolean;
5
7
  };
6
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
9
+ toggle: () => any;
10
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ onToggle?: (() => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
7
13
  export default _default;
@@ -5,6 +5,7 @@ type __VLS_Props = {
5
5
  data: {
6
6
  group: LogicalGroup;
7
7
  style?: Style;
8
+ locked?: boolean;
8
9
  };
9
10
  };
10
11
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,5 +1,13 @@
1
+ /** 내보내기 포맷 하나 — 탭 라벨·표시 내용·다운로드 파일명. */
2
+ export interface ExportFormat {
3
+ key: string;
4
+ label: string;
5
+ content: string;
6
+ filename: string;
7
+ }
1
8
  type __VLS_Props = {
2
- text: string;
9
+ formats: ExportFormat[];
10
+ title?: string;
3
11
  };
4
12
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
5
13
  export default _default;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 탐색기 필터 — 순수 로직. 매칭 노드 + 그 조상 체인을 보존하는 keep 집합을 계산한다.
3
+ *
4
+ * 매칭 축은 표시 모드에 묶지 않는다: 노드의 `matchText`(논리·물리·코드명을 소문자로 합쳐둔 문자열)에
5
+ * 대한 대소문자 무시 부분일치 — 사용자가 어떤 이름 표기를 기억하든 찾히도록. `matchText`가 없는 노드
6
+ * (그룹·관계/노트 섹션 등 필터 비대상)는 자기 자신으로는 매칭되지 않고, 자손이 매칭될 때만 조상으로 보존된다.
7
+ */
8
+ export interface FilterableNode {
9
+ key: string;
10
+ /** 검색 대상 문자열(소문자 합성). 없으면 자기 자신은 매칭 대상이 아님. */
11
+ matchText?: string;
12
+ children: FilterableNode[];
13
+ }
14
+ /** 검색 축 합성 — 빈 값 제외 후 소문자·공백 결합. 모두 비면 undefined(필터 비대상 노드). */
15
+ export declare function buildMatchText(...parts: Array<string | undefined | null>): string | undefined;
16
+ /**
17
+ * `query`(호출부에서 trim·소문자로 정규화, 비어있지 않다고 가정)에 대해 트리에서 보존할 노드 key 집합.
18
+ * 노드가 self 매칭이거나 자손이 보존되면 포함 → 조상 체인이 자동으로 함께 보존된다.
19
+ */
20
+ export declare function computeKeptKeys(root: FilterableNode, query: string): Set<string>;
@@ -0,0 +1,14 @@
1
+ import { useVueFlow } from '@vue-flow/core';
2
+ type VueFlowStore = ReturnType<typeof useVueFlow>;
3
+ /** 현재 캔버스를 측정·합성해 SVG 문자열을 반환 (다운로드 없이 문자열만 필요할 때). */
4
+ export declare function buildDiagramSvg(vf: VueFlowStore): string;
5
+ /** 현재 캔버스를 벡터 SVG로 내보내 브라우저 다운로드를 트리거한다. */
6
+ export declare function exportDiagramSvg(vf: VueFlowStore, filename?: string): void;
7
+ /**
8
+ * 현재 캔버스를 PNG 래스터로 내보내 다운로드한다. SVG 문자열을 Image로 로드해 오프스크린 캔버스에
9
+ * 그린 뒤 toBlob으로 변환한다. 합성 SVG는 외부 참조(foreignObject·원격 이미지·폰트) 없이 도형·텍스트로만
10
+ * 구성되고 색상도 concrete 값이 박혀 있어(측정 레이어가 computed style 채취) 캔버스 tainting이 없다.
11
+ * scale=2로 확대 렌더해 고해상도(레티나·문서 삽입) 품질을 확보한다.
12
+ */
13
+ export declare function exportDiagramPng(vf: VueFlowStore, filename?: string, scale?: number): Promise<void>;
14
+ export {};
@@ -0,0 +1,12 @@
1
+ import { OpConflict } from '../command/op';
2
+ export interface OpConflictNotice {
3
+ /** 배너 제목 — 상태 자체(무엇이 일어났는지). */
4
+ title: string;
5
+ /** 배너 본문 — 원인 + 복구 방향(다시 불러오기). */
6
+ detail: string;
7
+ }
8
+ /**
9
+ * 충돌 종류 → 사용자 문구. `missing`은 동시편집이 아니라 전송 실패(혼자 편집 중에도 발생)라 원인을
10
+ * 구분한다(호스트 배선 경로와 동일한 kind 오진 방지). null → null(배너 미노출).
11
+ */
12
+ export declare function opConflictNotice(conflict: OpConflict | null | undefined): OpConflictNotice | null;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@g1cloud/entity-modeler-next",
3
3
  "private": false,
4
- "version": "5.0.0-alpha.2",
4
+ "version": "5.0.0-alpha.21",
5
5
  "description": "Vue 3 visual entity-modeling / class-diagram editor",
6
6
  "type": "module",
7
7
  "files": [
@@ -1,7 +0,0 @@
1
- import { useVueFlow } from '@vue-flow/core';
2
- type VueFlowStore = ReturnType<typeof useVueFlow>;
3
- /** 현재 캔버스를 측정·합성해 SVG 문자열을 반환 (다운로드 없이 문자열만 필요할 때). */
4
- export declare function buildDiagramSvg(vf: VueFlowStore): string;
5
- /** 현재 캔버스를 벡터 SVG로 내보내 브라우저 다운로드를 트리거한다. */
6
- export declare function exportDiagramSvg(vf: VueFlowStore, filename?: string): void;
7
- export {};