@guodun/antdv 1.7.6 → 1.7.8

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 (47) hide show
  1. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.mjs +152 -146
  2. package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +415 -295
  3. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1040 -993
  4. package/dist/es/components/pro-contract-template-designer/src/composables/use-auto-pagination.mjs +141 -47
  5. package/dist/es/components/pro-contract-template-designer/src/composables/use-draft-cache-session.mjs +1 -1
  6. package/dist/es/components/pro-contract-template-designer/src/composables/use-page-authoring.mjs +22 -21
  7. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-authoring.mjs +37 -36
  8. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +125 -75
  9. package/dist/es/components/pro-contract-template-designer/src/utils/authoring-search.mjs +34 -13
  10. package/dist/es/components/pro-contract-template-designer/src/utils/caret-viewport.mjs +41 -0
  11. package/dist/es/components/pro-contract-template-designer/src/utils/document-outline.mjs +24 -1
  12. package/dist/es/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.mjs +15 -0
  13. package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
  14. package/dist/es/index.mjs +21 -21
  15. package/dist/es/node_modules/@tiptap/pm/dist/transform/index.mjs +1 -0
  16. package/dist/es/node_modules/prosemirror-transform/dist/index.mjs +161 -67
  17. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.cjs +1 -1
  18. package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
  19. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
  20. package/dist/lib/components/pro-contract-template-designer/src/composables/use-auto-pagination.cjs +1 -1
  21. package/dist/lib/components/pro-contract-template-designer/src/composables/use-draft-cache-session.cjs +1 -1
  22. package/dist/lib/components/pro-contract-template-designer/src/composables/use-page-authoring.cjs +1 -1
  23. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-authoring.cjs +1 -1
  24. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
  25. package/dist/lib/components/pro-contract-template-designer/src/utils/authoring-search.cjs +1 -1
  26. package/dist/lib/components/pro-contract-template-designer/src/utils/caret-viewport.cjs +1 -0
  27. package/dist/lib/components/pro-contract-template-designer/src/utils/document-outline.cjs +1 -1
  28. package/dist/lib/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.cjs +1 -0
  29. package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
  30. package/dist/lib/index.cjs +1 -1
  31. package/dist/lib/node_modules/@tiptap/pm/dist/transform/index.cjs +1 -0
  32. package/dist/lib/node_modules/prosemirror-transform/dist/index.cjs +2 -2
  33. package/dist/theme/icon.css +1 -1
  34. package/dist/theme/index.css +1 -1
  35. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.d.ts +1 -0
  36. package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +28 -0
  37. package/dist/types/components/pro-contract-template-designer/src/composables/use-auto-pagination.d.ts +25 -2
  38. package/dist/types/components/pro-contract-template-designer/src/composables/use-draft-cache-session.d.ts +1 -1
  39. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +10 -1
  40. package/dist/types/components/pro-contract-template-designer/src/utils/authoring-search.d.ts +5 -0
  41. package/dist/types/components/pro-contract-template-designer/src/utils/caret-viewport.d.ts +18 -0
  42. package/dist/types/components/pro-contract-template-designer/src/utils/document-outline.d.ts +6 -0
  43. package/dist/types/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.d.ts +16 -0
  44. package/package.json +3 -3
  45. package/dist/theme/dept-selector.css +0 -1
  46. package/dist/theme/pro-selector-group.css +0 -1
  47. package/dist/theme/role-selector.css +0 -1
@@ -1,5 +1,6 @@
1
1
  import { JSONContent } from '@tiptap/core';
2
2
  import { ContractTextMatch } from './utils/authoring-search';
3
+ import { AutoPaginationSelection } from './composables/use-auto-pagination';
3
4
  import { ContractTemplateEditorCommand, ContractTemplateEditorContextMenuPayload, ContractTemplateEditorState, ContractTemplateContentImage, ContractTemplateFieldType, ContractTemplatePage, ContractTemplatePageDecorations, ContractTemplatePageSize, ContractTemplateTableCommandCapabilities, ContractTemplateVariable } from './types';
4
5
  type __VLS_Props = {
5
6
  page: ContractTemplatePage;
@@ -17,7 +18,11 @@ type __VLS_Props = {
17
18
  searchQuery?: string;
18
19
  searchMatchCase?: boolean;
19
20
  activeSearchMatch?: ContractTextMatch;
21
+ /** 画布滚动容器;光标可见性只调整它,不让 PM 沿祖先链改纸张 scrollTop。 */
22
+ getScrollContainer?: () => HTMLElement | undefined;
20
23
  };
24
+ declare function isReady(): boolean;
25
+ declare function isComposing(): boolean;
21
26
  /**
22
27
  * 选区在视口坐标下的包围盒;供选区气泡工具条定位。
23
28
  *
@@ -86,15 +91,27 @@ declare function getSelectionRange(): {
86
91
  from: number;
87
92
  to: number;
88
93
  } | undefined;
94
+ /** 外部 setValue 后尚未完成 Vue props 提交时,不能让旧编辑器覆盖新模板。 */
95
+ declare function getContentSnapshot(expectedPage: ContractTemplatePage): {
96
+ contentHtml: string;
97
+ contentJson: JSONContent | undefined;
98
+ };
89
99
  /** 只测量、不改正文;页数已达上限时由根组件先调用,防止 split 后内容丢失。 */
90
100
  declare function hasOverflowContent(): boolean;
101
+ /** 非破坏性预检:活动选区需要迁出时,调度器必须先等接收 editor 就绪。 */
102
+ declare function hasOverflowSelection(): boolean;
103
+ /** 准备页只有仍为空且从未编辑时才能由调度器回收。 */
104
+ declare function isUntouchedPaginationBlank(ownerPage?: ContractTemplatePage): boolean;
91
105
  declare function splitOverflowContent(): {
92
106
  page: ContractTemplatePage;
93
107
  overflowContent: JSONContent[];
94
108
  overflowHtml: string;
109
+ selection: AutoPaginationSelection | undefined;
95
110
  } | undefined;
96
111
  /** 把上一页挤下来的内容插到本页开头;本页原本是空段落时直接丢弃那个空段落。 */
97
112
  declare function prependContent(content: JSONContent[]): ContractTemplatePage | undefined;
113
+ /** 接收页挂载后同步交接光标,不调用会额外排 requestAnimationFrame 的 Tiptap focus 命令。 */
114
+ declare function restorePaginationSelection(pending: AutoPaginationSelection, expectedHtml: string): void;
98
115
  /**
99
116
  * 把变量的最新配置同步到正文里所有同名节点。
100
117
  *
@@ -127,6 +144,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
127
144
  focus: typeof focus;
128
145
  getHTML: typeof getHTML;
129
146
  getJSON: typeof getJSON;
147
+ getContentSnapshot: typeof getContentSnapshot;
130
148
  getEditorState: typeof getEditorState;
131
149
  getTableCommandCapabilities: typeof getTableCommandCapabilities;
132
150
  getAffectedVariableCount: typeof getAffectedVariableCount;
@@ -136,11 +154,16 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
136
154
  getSelectionRange: typeof getSelectionRange;
137
155
  getSelectionViewportRect: typeof getSelectionViewportRect;
138
156
  requestTextContextMenu: typeof requestTextContextMenu;
157
+ isReady: typeof isReady;
158
+ isComposing: typeof isComposing;
139
159
  hasOverflowContent: typeof hasOverflowContent;
160
+ hasOverflowSelection: typeof hasOverflowSelection;
161
+ isUntouchedPaginationBlank: typeof isUntouchedPaginationBlank;
140
162
  updateVariable: typeof updateVariable;
141
163
  removeVariable: typeof removeVariable;
142
164
  splitOverflowContent: typeof splitOverflowContent;
143
165
  prependContent: typeof prependContent;
166
+ restorePaginationSelection: typeof restorePaginationSelection;
144
167
  runCommand: typeof runCommand;
145
168
  scrollIntoField: typeof scrollIntoField;
146
169
  scrollIntoVariable: typeof scrollIntoVariable;
@@ -152,6 +175,8 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
152
175
  "variable-move-blocked": (pageId: string) => any;
153
176
  "editor-focus": (pageId: string) => any;
154
177
  "editor-ready": (pageId: string) => any;
178
+ "composition-end": (pageId: string) => any;
179
+ "page-layout-change": (pageId: string) => any;
155
180
  "editor-state-change": (pageId: string, state: ContractTemplateEditorState) => any;
156
181
  "editor-context-menu": (payload: ContractTemplateEditorContextMenuPayload) => any;
157
182
  "word-paste": (payload: {
@@ -164,6 +189,8 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
164
189
  "onVariable-move-blocked"?: ((pageId: string) => any) | undefined;
165
190
  "onEditor-focus"?: ((pageId: string) => any) | undefined;
166
191
  "onEditor-ready"?: ((pageId: string) => any) | undefined;
192
+ "onComposition-end"?: ((pageId: string) => any) | undefined;
193
+ "onPage-layout-change"?: ((pageId: string) => any) | undefined;
167
194
  "onEditor-state-change"?: ((pageId: string, state: ContractTemplateEditorState) => any) | undefined;
168
195
  "onEditor-context-menu"?: ((payload: ContractTemplateEditorContextMenuPayload) => any) | undefined;
169
196
  "onWord-paste"?: ((payload: {
@@ -181,6 +208,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
181
208
  searchQuery: string;
182
209
  searchMatchCase: boolean;
183
210
  activeSearchMatch: ContractTextMatch;
211
+ getScrollContainer: () => HTMLElement | undefined;
184
212
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
185
213
  pageElement: HTMLDivElement;
186
214
  }, HTMLElement>;
@@ -1,14 +1,28 @@
1
1
  import { ComputedRef, Ref } from 'vue';
2
2
  import { JSONContent } from '@tiptap/core';
3
+ import { Mark } from '@tiptap/pm/model';
4
+ import { Selection } from '@tiptap/pm/state';
3
5
  import { ContractTemplateData, ContractTemplatePage, ContractTemplatePageSize } from '../types';
6
+ /** 溢出正文中的选区;跨异步挂载前须验证源页未发生新输入、选区或焦点变化。 */
7
+ export interface AutoPaginationSelection {
8
+ selection: Selection;
9
+ storedMarks: readonly Mark[] | null;
10
+ isCurrent: () => boolean;
11
+ }
4
12
  export interface AutoPaginationPageRef {
13
+ isReady?: () => boolean;
14
+ isComposing?: () => boolean;
15
+ hasOverflowSelection?: () => boolean;
16
+ isUntouchedPaginationBlank?: (ownerPage?: ContractTemplatePage) => boolean;
5
17
  hasOverflowContent: () => boolean;
6
18
  splitOverflowContent: () => {
7
19
  page: ContractTemplatePage;
8
20
  overflowContent: JSONContent[];
9
21
  overflowHtml: string;
22
+ selection?: AutoPaginationSelection;
10
23
  } | undefined;
11
24
  prependContent: (content: JSONContent[]) => ContractTemplatePage | undefined;
25
+ restorePaginationSelection?: (selection: AutoPaginationSelection, expectedHtml: string) => void;
12
26
  }
13
27
  declare function createDocContent(content: JSONContent[]): ContractTemplatePage['contentJson'];
14
28
  /**
@@ -30,13 +44,22 @@ export declare function useAutoPagination(options: {
30
44
  activePageId: Ref<string>;
31
45
  normalizedMaxPages: Ref<number> | ComputedRef<number>;
32
46
  pageRefs: Map<string, AutoPaginationPageRef>;
33
- syncPageEditors: () => ContractTemplateData;
34
- commitBodyChange: (nextValue: ContractTemplateData) => ContractTemplateData;
47
+ applyPagesChange: (pages: ContractTemplatePage[]) => void;
35
48
  getPageSize: (page?: ContractTemplatePage) => ContractTemplatePageSize;
36
49
  notifyPageLimit: (source: 'add' | 'duplicate' | 'auto-pagination') => void;
50
+ /** 单批工作预算;超过后通过浏览器 task 真正让出线程,而不是串联 nextTick 微任务。 */
51
+ timeBudgetMs?: number;
52
+ /**
53
+ * 分页搬运前记录聚焦光标的视口位置,返回的函数在搬运后恢复。
54
+ * 搬运是跨 editor 的文档改动,不能让浏览器或 PM 的滚动锚定决定画布位置。
55
+ */
56
+ captureViewport?: () => (() => void) | undefined;
37
57
  }): {
38
58
  scheduleAutoPaginate: (pageId?: string) => void;
59
+ scheduleFullPagination: () => void;
39
60
  runAutoPagination: () => Promise<void>;
61
+ resetPagination: () => void;
62
+ disposePagination: () => void;
40
63
  createDocContent: typeof createDocContent;
41
64
  prependOverflowToPageData: typeof prependOverflowToPageData;
42
65
  };
@@ -23,7 +23,7 @@ export declare function useDraftCacheSession(options: {
23
23
  emitFilesChange: (files: ContractTemplateFile[], changedFileId?: string) => void;
24
24
  commit: (value: ContractTemplateData) => ContractTemplateData;
25
25
  updateDraftCacheStatus: (status: ContractTemplateDraftCacheStatus, shouldEmit?: boolean) => void;
26
- scheduleAutoPaginate: (pageId?: string) => void;
26
+ scheduleFullPagination: () => void;
27
27
  activePageId: Ref<string>;
28
28
  selectedVariableKey: Ref<string>;
29
29
  }): {
@@ -136,7 +136,16 @@ export declare function collectTemplateValueVariableKeys(value: Pick<ContractTem
136
136
  * 空 key、非法 key、保留字和重复声明必须继续留到校验层;若在这里按“无引用”
137
137
  * 一并裁掉,外部脏模板会在首次正文同步后静默变成合法数据,用户反而看不到可定位错误。
138
138
  */
139
- export declare function syncTemplateVariablesWithPages(value: ContractTemplateData): ContractTemplateData;
139
+ export declare function syncTemplateVariablesWithPages(value: ContractTemplateData, bodyVariableKeys?: Set<string>): ContractTemplateData;
140
+ /**
141
+ * 正文提交的增量变量索引。已归一化的模板不必再次 normalize 页面尺寸/装饰;
142
+ * 缓存只用于本地不可变正文,外部 deep 修改仍走完整 normalizeTemplateValue。
143
+ */
144
+ export declare function createTemplateBodySync(): {
145
+ sync: (value: ContractTemplateData) => ContractTemplateData;
146
+ collectKeys: (value: Pick<ContractTemplateData, "pages">) => Set<string>;
147
+ clear: () => void;
148
+ };
140
149
  /** 自动分页用的表格行测量结果,坐标相对正文容器顶部。 */
141
150
  export interface ContractTemplateTableRowMeasurement {
142
151
  top: number;
@@ -12,6 +12,11 @@ export interface ContractTextSearch {
12
12
  }
13
13
  /** 仅拼接同一文本块内相邻的 text 节点:跨 mark 可查,atom / 换行 / 块边界不可穿越。 */
14
14
  export declare function findContractTextMatches(doc: ProseMirrorNode, query: string, matchCase?: boolean): ContractTextMatch[];
15
+ /** 每个页面只缓存一次查询;不可变 doc 身份也覆盖静默 setContent、撤销和文件切换。 */
16
+ export declare function createContractTextMatchCache(): {
17
+ read: (doc: ProseMirrorNode, query: string, matchCase?: boolean) => ContractTextMatch[];
18
+ clear: () => void;
19
+ };
15
20
  /** 以当前文档重新校验位置;只替换完整合法命中,不能用过期选区或伪造范围删除 atom。 */
16
21
  export declare function buildContractTextReplacement(state: EditorState, search: Pick<ContractTextSearch, 'query' | 'matchCase'>, replacement: string, requestedMatches: readonly ContractTextMatch[]): {
17
22
  transaction: import('prosemirror-state').Transaction;
@@ -0,0 +1,18 @@
1
+ import { EditorView } from '@tiptap/pm/view';
2
+ /** 光标距离画布可视边缘的留白,单位为视口像素。 */
3
+ export declare const CARET_SCROLL_MARGIN = 48;
4
+ /**
5
+ * 以最小滚动让光标在画布中可见。
6
+ *
7
+ * 画布不在 scale 变换内,视口像素差就等于 scrollTop 差,缩放下不需要再换算。
8
+ * 光标若落在纸张被裁切的区域,先夹到纸张可见底边,避免滚到两页之间的空白。
9
+ * 返回 true 表示已经接管滚动;拿不到画布或量不到光标时返回 false,交给 ProseMirror 默认行为。
10
+ */
11
+ export declare function scrollCaretIntoCanvas(view: EditorView, getScrollContainer: () => HTMLElement | undefined, getPageElement: () => HTMLElement | undefined): boolean;
12
+ /**
13
+ * 记录聚焦光标的视口 top;恢复时把画布按位移量反向补偿,保证用户视线不动。
14
+ *
15
+ * `isSafe` 在恢复时再判断:分页循环可能在搬运过程中卸载、切文件或切到只读,
16
+ * 这些情况下直接返回,不滚动、不抛错。光标已交接到别的编辑器时也不补偿。
17
+ */
18
+ export declare function captureCaretViewport(container: HTMLElement | null | undefined, isSafe?: () => boolean): (() => void) | undefined;
@@ -18,3 +18,9 @@ export interface ContractPageNavigationContent {
18
18
  * 解析文档永不挂到页面;只把纯文本交给 Vue 插值,不渲染用户 HTML。
19
19
  */
20
20
  export declare function readContractPageNavigation(page: ContractTemplatePage): ContractPageNavigationContent;
21
+ /** 实例级缓存只保存当前页集合;导航与编辑器一样以 HTML 为准,不读取 JSON 或变量元数据。 */
22
+ export declare function createContractPageNavigationCache(): {
23
+ readPages: (pages: readonly ContractTemplatePage[]) => ContractPageNavigationContent[];
24
+ retainPages: (pages: readonly ContractTemplatePage[]) => void;
25
+ clear: () => void;
26
+ };
@@ -0,0 +1,16 @@
1
+ import { JSONContent } from '@tiptap/core';
2
+ interface SnapshotEditor {
3
+ state: {
4
+ doc: object;
5
+ };
6
+ getHTML: () => string;
7
+ getJSON: () => JSONContent;
8
+ }
9
+ /** ProseMirror doc 不可变:同一文档身份只序列化一次,selection 事务无需失效。 */
10
+ export declare function createEditorSnapshotCache(): {
11
+ read: (editor: SnapshotEditor) => {
12
+ getHTML: () => string;
13
+ getJSON: () => JSONContent;
14
+ };
15
+ };
16
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guodun/antdv",
3
- "version": "1.7.6",
3
+ "version": "1.7.8",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "CHANGELOG.md",
@@ -83,8 +83,8 @@
83
83
  "vue-types": "3.0.2",
84
84
  "vue": "^3.5.18",
85
85
  "@guodun/utils": "^1.0.0",
86
- "@guodun/contract-print-css": "^0.1.1",
87
- "@guodun/contract-template-agent": "^0.1.0"
86
+ "@guodun/contract-template-agent": "^0.1.0",
87
+ "@guodun/contract-print-css": "^0.1.1"
88
88
  },
89
89
  "scripts": {
90
90
  "build": "rm -rf dist/types && vite build && vite build --config vite.theme.config.ts",
@@ -1 +0,0 @@
1
- .gd-ant-dept-selector__shell{width:100%;min-width:0;container-type:inline-size}.gd-ant-dept-selector{width:100%;min-width:0}.gd-ant-dept-selector__modal-content{background:var(--gdant-neutral-0);grid-template-columns:minmax(0,3fr) minmax(260px,2fr);min-width:0;height:min(520px,68vh);min-height:360px;display:grid;overflow:hidden}.gd-ant-dept-selector__modal-content-left,.gd-ant-dept-selector__modal-content-right{box-sizing:border-box;min-width:0;min-height:0}.gd-ant-dept-selector__modal-content-left{gap:var(--gdant-spacing-sm);padding:var(--gdant-spacing-base);border-right:1px solid var(--gdant-neutral-200);background:var(--gdant-neutral-0);flex-direction:column;display:flex}.gd-ant-dept-selector__modal-content-left .gd-ant-dept-selector__search{flex:0 0 36px;height:36px}.gd-ant-dept-selector__modal-content-left .gd-ant-dept-selector__search .ant-input-prefix{justify-content:center;align-items:center;width:16px;height:16px;line-height:1;display:inline-flex}.gd-ant-dept-selector__modal-content-left .gd-ant-dept-selector__modal-content-left-tree{min-height:0;margin:0 calc(var(--gdant-spacing-xs) * -1);padding:0 var(--gdant-spacing-xs);scrollbar-width:thin;scrollbar-color:var(--gdant-neutral-300) transparent;flex:1;overflow:auto}.gd-ant-dept-selector__modal-content-left .gd-ant-dept-selector__modal-content-left-tree::-webkit-scrollbar{width:6px;height:6px}.gd-ant-dept-selector__modal-content-left .gd-ant-dept-selector__modal-content-left-tree::-webkit-scrollbar-track{background:0 0}.gd-ant-dept-selector__modal-content-left .gd-ant-dept-selector__modal-content-left-tree::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-pill)}.gd-ant-dept-selector__modal-content-left>.ant-spin-nested-loading{flex:1;min-height:0}.gd-ant-dept-selector__modal-content-left>.ant-spin-nested-loading>.ant-spin-container{height:100%;min-height:0}.gd-ant-dept-selector__modal-content-left .ant-tree-treenode{box-sizing:border-box;align-items:center;width:100%;min-height:44px;display:flex}.gd-ant-dept-selector__modal-content-left .ant-tree-indent{flex:none;align-self:stretch;display:flex}.gd-ant-dept-selector__modal-content-left .ant-tree-indent-unit{flex:0 0 24px;width:24px}.gd-ant-dept-selector__modal-content-left .ant-tree-switcher{flex:0 0 24px;justify-content:center;align-items:center;width:24px;height:40px;margin:0;display:inline-flex}.gd-ant-dept-selector__modal-content-left .ant-tree-checkbox{width:20px;height:20px;margin:0 var(--gdant-spacing-xs) 0 0;box-sizing:border-box;flex:0 0 20px;justify-content:center;align-items:center;display:inline-flex}.gd-ant-dept-selector__modal-content-left .ant-tree-node-content-wrapper{min-width:0;min-height:40px;padding:0 var(--gdant-spacing-sm) 0 0;border-radius:var(--gdant-radius-md);box-sizing:border-box;transition:background-color var(--gdant-duration-normal) var(--gdant-easing-default), border-color var(--gdant-duration-normal) var(--gdant-easing-default);background:0 0;border:1px solid #0000;outline:none;flex:1;align-items:center;display:flex}.gd-ant-dept-selector__modal-content-left .ant-tree-iconEle{width:20px;height:20px;margin-right:var(--gdant-spacing-xs);flex:0 0 20px;justify-content:center;align-items:center;line-height:1;display:inline-flex}.gd-ant-dept-selector__modal-content-left .ant-tree-node-content-wrapper:hover{background:var(--gdant-neutral-50)}.gd-ant-dept-selector__modal-content-left .ant-tree-treenode:has(.ant-tree-checkbox-checked) .ant-tree-node-content-wrapper{border-color:var(--gdant-primary-200);background:var(--gdant-primary-50)}.gd-ant-dept-selector__modal-content-left .ant-tree-node-content-wrapper.ant-tree-node-selected{border-color:var(--gdant-primary-300);background:var(--gdant-primary-100)}.gd-ant-dept-selector__modal-content-left .ant-tree-treenode:focus-within .ant-tree-node-content-wrapper{border-color:var(--gdant-primary-300);background:var(--gdant-primary-50)}.gd-ant-dept-selector__modal-content-left .ant-tree-title{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;min-width:0;min-height:20px;line-height:20px;display:flex;overflow:hidden}.gd-ant-dept-selector__modal-content-right{gap:var(--gdant-spacing-sm);padding:var(--gdant-spacing-base);background:var(--gdant-neutral-50);flex-direction:column;display:flex;overflow:hidden}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-header{align-items:center;gap:var(--gdant-spacing-xs);color:var(--gdant-neutral-800);font-size:var(--gdant-text-body);font-weight:var(--gdant-font-semibold);flex:none;display:flex}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-count{border-radius:var(--gdant-radius-pill);background:var(--gdant-primary-100);min-width:22px;color:var(--gdant-primary-600);font-size:var(--gdant-text-body-sm);font-weight:var(--gdant-font-medium);text-align:center;padding:1px 6px}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-list{gap:var(--gdant-spacing-xs);scrollbar-width:thin;scrollbar-color:var(--gdant-neutral-300) transparent;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-list::-webkit-scrollbar{width:6px;height:6px}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-list::-webkit-scrollbar-track{background:0 0}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-list::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-pill)}.gd-ant-dept-selector__modal-content-right>.ant-empty{flex-direction:column;flex:1;justify-content:center;min-height:0;display:flex}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item{justify-content:space-between;align-items:center;gap:var(--gdant-spacing-sm);min-width:0;min-height:44px;padding:0 var(--gdant-spacing-sm);border-radius:var(--gdant-radius-md);transition:background-color var(--gdant-duration-normal) var(--gdant-easing-default);display:flex}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item:hover{background:var(--gdant-neutral-0)}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item .gd-ant-dept-selector__modal-content-right-item-label{align-items:center;gap:var(--gdant-spacing-xs);min-width:0;display:flex}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item .gd-ant-dept-selector__modal-content-right-item-label>span:first-child{flex:0 0 16px;justify-content:center;align-items:center;width:16px;height:16px;line-height:1;display:inline-flex}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item .gd-ant-dept-selector__modal-content-right-item-label>span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--gdant-neutral-800);font-size:var(--gdant-text-body);overflow:hidden}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item .gd-ant-dept-selector__modal-content-right-item-del{border-radius:var(--gdant-radius-md);width:28px;height:28px;color:var(--gdant-neutral-500);cursor:pointer;background:0 0;border:0;flex:0 0 28px;place-items:center;padding:0;display:grid}.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item .gd-ant-dept-selector__modal-content-right-item-del:hover,.gd-ant-dept-selector__modal-content-right .gd-ant-dept-selector__modal-content-right-item .gd-ant-dept-selector__modal-content-right-item-del:focus-visible{outline:2px solid var(--gdant-primary-300);outline-offset:1px;background:var(--gdant-error-50);color:var(--gdant-error-600)}.gd-ant-dept-selector__search-highlight{border-radius:var(--gdant-radius-xs);background:var(--gdant-primary-100);color:var(--gdant-primary-700);font-weight:var(--gdant-font-semibold)}.gd-ant-dept-selector__modal-content-left .ant-alert{flex:none}.gd-ant-dept-selector__modal-content-left .ant-tree-treenode{min-width:0}@container (width<=560px){.gd-ant-dept-selector__modal-content{grid-template-rows:minmax(220px,1.15fr) minmax(180px,.85fr);grid-template-columns:minmax(0,1fr);height:min(680px,74vh)}.gd-ant-dept-selector__modal-content-left{border-right:0;border-bottom:1px solid var(--gdant-neutral-200)}}@media (prefers-reduced-motion:reduce){.gd-ant-dept-selector__modal-content-right-item,.gd-ant-dept-selector__modal-content-left .ant-tree-node-content-wrapper{transition:none}}.gd-ant-dept-selector .selector-tags{width:100%;min-width:0}
@@ -1 +0,0 @@
1
- .gd-ant-pro-selector-group{min-width:0}.gd-ant-pro-selector-group-shell{width:100%;min-width:0;container-type:inline-size}.gd-ant-pro-selector-group-content{box-sizing:border-box;background:var(--gdant-neutral-0);grid-template-columns:minmax(0,3fr) minmax(280px,2fr);width:min(100%,960px);min-width:0;height:min(560px,68vh);min-height:400px;margin:0 auto;display:grid;overflow:hidden}.gd-ant-pro-selector-group-left,.gd-ant-pro-selector-group-right{box-sizing:border-box;min-width:0;min-height:0}.gd-ant-pro-selector-group-left{min-width:0;padding:0 var(--gdant-spacing-base) var(--gdant-spacing-base);background:var(--gdant-neutral-0);flex-direction:column;display:flex}.gd-ant-pro-selector-group-left .ant-tabs{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.gd-ant-pro-selector-group-left .ant-tabs-content-holder,.gd-ant-pro-selector-group-left .ant-tabs-content,.gd-ant-pro-selector-group-left .ant-tabs-tabpane{min-width:0;height:100%;min-height:0}.gd-ant-pro-selector-group-left .ant-tabs-content-holder{flex:1}.gd-ant-pro-selector-group-left .ant-tabs-nav{padding:0 var(--gdant-spacing-xs);margin:0;margin-bottom:var(--gdant-spacing-sm)}.gd-ant-pro-selector-group-left .ant-tabs-tab{margin:0 var(--gdant-spacing-sm) 0 0;padding:var(--gdant-spacing-md) var(--gdant-spacing-sm);color:var(--gdant-neutral-600)}.gd-ant-pro-selector-group-left .ant-tabs-tab:hover,.gd-ant-pro-selector-group-left .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--gdant-primary-600)}.gd-ant-pro-selector-group-left .ant-tabs-tab-btn:focus-visible{outline:2px solid var(--gdant-primary-300);outline-offset:2px;border-radius:var(--gdant-radius-sm)}.gd-ant-pro-selector-group-left .ant-tabs-ink-bar{border-radius:var(--gdant-radius-pill);background:var(--gdant-primary-500);height:2px}.gd-ant-pro-selector-group-tab-label{align-items:center;gap:var(--gdant-spacing-xs);display:inline-flex}.gd-ant-pro-selector-group-tab-count{min-width:20px;height:20px;padding:0 var(--gdant-spacing-xs);border-radius:var(--gdant-radius-pill);background:var(--gdant-primary-50);color:var(--gdant-primary-600);font-size:var(--gdant-text-body-sm);justify-content:center;align-items:center;line-height:1;display:inline-grid}.gd-ant-pro-selector-group-right{border-left:1px solid var(--gdant-neutral-200);min-width:0;padding:var(--gdant-spacing-base);background:var(--gdant-neutral-50);flex-direction:column;display:flex}.gd-ant-select-box{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.gd-ant-select-box_title{justify-content:space-between;align-items:center;gap:var(--gdant-spacing-sm);border-bottom:1px solid var(--gdant-neutral-200);min-height:40px;display:flex}.gd-ant-select-box_title_summary{align-items:center;gap:var(--gdant-spacing-xs);white-space:nowrap;min-width:0;display:flex}.gd-ant-select-box_title_heading{color:var(--gdant-neutral-700);font-size:var(--gdant-text-body);font-weight:var(--gdant-font-semibold)}.gd-ant-select-box_title_count{min-width:28px;padding:1px var(--gdant-spacing-xs);border-radius:var(--gdant-radius-pill);background:var(--gdant-primary-100);color:var(--gdant-primary-600);font-size:var(--gdant-text-body-sm);font-weight:var(--gdant-font-medium);text-align:center}.gd-ant-select-box_clear{min-width:44px;min-height:28px;padding:0 var(--gdant-spacing-xs);border-radius:var(--gdant-radius-sm);color:var(--gdant-primary-600);cursor:pointer;font:inherit;font-size:var(--gdant-text-body-sm);background:0 0;border:0}.gd-ant-select-box_clear:hover,.gd-ant-select-box_clear:focus-visible{outline:2px solid var(--gdant-primary-200);outline-offset:1px;background:var(--gdant-primary-50)}.gd-ant-select-box_content{min-width:0;min-height:0;padding-top:var(--gdant-spacing-sm);flex:1;overflow:hidden auto}.gd-ant-select-box_content::-webkit-scrollbar{width:6px;height:6px}.gd-ant-select-box_content::-webkit-scrollbar-track{background:var(--gdant-neutral-100);border-radius:var(--gdant-radius-sm)}.gd-ant-select-box_content::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-sm)}.gd-ant-select-box_content-empty{place-items:center;width:100%;height:100%;min-height:120px;display:grid}.gd-ant-select-box_content-list{gap:var(--gdant-spacing-xs);flex-direction:column;min-width:0;display:flex}.gd-ant-select-box_content-item{justify-content:space-between;align-items:center;gap:var(--gdant-spacing-sm);min-width:0;min-height:44px;padding:0 var(--gdant-spacing-sm);border-radius:var(--gdant-radius-md);transition:background-color var(--gdant-duration-normal) var(--gdant-easing-default), border-color var(--gdant-duration-normal) var(--gdant-easing-default);border:1px solid #0000;display:flex}.gd-ant-select-box_content-item:hover{border-color:var(--gdant-primary-200);background:var(--gdant-neutral-0)}.gd-ant-select-box_content-item_name{min-width:0;color:var(--gdant-neutral-800);font-size:var(--gdant-text-body);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gd-ant-select-box_content-item_close{flex:none;align-items:center;display:flex}.gd-ant-select-box_content-item_close button{border-radius:var(--gdant-radius-sm);width:28px;height:28px;color:var(--gdant-neutral-500);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.gd-ant-select-box_content-item_close button:hover,.gd-ant-select-box_content-item_close button:focus-visible{outline:2px solid var(--gdant-primary-200);outline-offset:1px;background:var(--gdant-primary-50);color:var(--gdant-primary-600)}.gd-ant-pro-selector-group-content .selector-pane{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.gd-ant-pro-selector-group-content .type-selector-box{width:100%;height:100%;min-height:0;display:flex;overflow:hidden}.gd-ant-pro-selector-group-content .selector-feedback{margin-top:var(--gdant-spacing-sm)}.gd-ant-pro-selector-group-content .selector-toolbar{justify-content:space-between;align-items:center;gap:var(--gdant-spacing-sm);min-width:0;min-height:36px;margin-top:var(--gdant-spacing-sm);padding:0 var(--gdant-spacing-sm);border-radius:var(--gdant-radius-md);background:var(--gdant-neutral-50);display:flex}.gd-ant-pro-selector-group-content .selector-toolbar__count{color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm)}.gd-ant-pro-selector-group-content .selector-option-list{min-width:0;min-height:0;margin-top:var(--gdant-spacing-sm);flex:1;overflow:hidden auto}.gd-ant-pro-selector-group-content .selector-option-list::-webkit-scrollbar{width:6px;height:6px}.gd-ant-pro-selector-group-content .selector-option-list::-webkit-scrollbar-track{background:var(--gdant-neutral-100);border-radius:var(--gdant-radius-sm)}.gd-ant-pro-selector-group-content .selector-option-list::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-sm)}.gd-ant-pro-selector-group-content .selector-option-list>.ant-checkbox-group,.gd-ant-pro-selector-group-content .selector-option-list>.ant-checkbox-group>div{width:100%;min-width:0;display:block}.gd-ant-pro-selector-group-content .selector-option-list>.ant-checkbox-group>div,.gd-ant-pro-selector-group-content .user-list-region>div:first-child{gap:var(--gdant-spacing-xs);flex-direction:column;min-width:0;display:flex}.gd-ant-pro-selector-group-content .selector-option-row{min-width:0;min-height:44px;padding:0 var(--gdant-spacing-sm);border-radius:var(--gdant-radius-md);transition:background-color var(--gdant-duration-normal) var(--gdant-easing-default), border-color var(--gdant-duration-normal) var(--gdant-easing-default);border:1px solid #0000;align-items:center;display:flex}.gd-ant-pro-selector-group-content .selector-option-row:hover{background:var(--gdant-neutral-50)}.gd-ant-pro-selector-group-content .selector-option-row.is-selected{border-color:var(--gdant-primary-200);background:var(--gdant-primary-50)}.gd-ant-pro-selector-group-content .selector-option-row:focus-within{outline:2px solid var(--gdant-primary-300);outline-offset:1px;background:var(--gdant-primary-50)}.gd-ant-pro-selector-group-content .selector-option-row .ant-checkbox-wrapper{align-items:center;width:100%;min-width:0}.gd-ant-pro-selector-group-content .selector-option-row .ant-checkbox+span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gd-ant-pro-selector-group-content .selector-empty{min-height:160px;color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm);place-items:center;display:grid}.gd-ant-pro-selector-group-content .selector-highlight{color:var(--gdant-primary-600);font-weight:var(--gdant-font-semibold)}.gd-ant-pro-selector-group-content .dept-tree-panel,.gd-ant-pro-selector-group-content .user-list-pane{flex-direction:column;min-width:0;min-height:0;display:flex}.gd-ant-pro-selector-group-content .user-selector{gap:var(--gdant-spacing-sm);grid-template-columns:minmax(160px,2fr) minmax(0,3fr);min-width:0;min-height:0;display:grid}.gd-ant-pro-selector-group-content .user-select-all{margin:var(--gdant-spacing-md) 0 0 var(--gdant-spacing-xs);flex:none}.gd-ant-pro-selector-group-content .user-list-region{min-width:0;min-height:0;margin-top:var(--gdant-spacing-sm);flex-direction:column;flex:1;display:flex;overflow:hidden auto}.gd-ant-pro-selector-group-content .user-list-region::-webkit-scrollbar{width:6px;height:6px}.gd-ant-pro-selector-group-content .user-list-region::-webkit-scrollbar-track{background:var(--gdant-neutral-100);border-radius:var(--gdant-radius-sm)}.gd-ant-pro-selector-group-content .user-list-region::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-sm)}.gd-ant-pro-selector-group-content .gd-ant-pro-user-selector-user-avatar{cursor:default;flex:0 0 32px;width:32px;height:32px;margin:0}.gd-ant-pro-selector-group-content .gd-ant-pro-user-selector-user-avatar .gd-ant-user-avatar__img,.gd-ant-pro-selector-group-content .gd-ant-pro-user-selector-user-avatar>div>div>img{border-radius:var(--gdant-radius-pill);object-fit:cover;width:100%;height:100%;display:block}.gd-ant-pro-selector-group-content .user-dept-tree{width:auto;min-width:0}.gd-ant-pro-selector-group-content .selector-search{flex:0 0 36px;height:36px;min-height:36px}.gd-ant-pro-selector-group-content .selector-search.ant-input-affix-wrapper{min-height:36px}.gd-ant-pro-selector-group-content .selector-search .ant-input-prefix{justify-content:center;align-items:center;width:16px;height:16px;line-height:1;display:inline-flex}.gd-ant-pro-selector-group-content .selector-pane>.ant-spin-nested-loading,.gd-ant-pro-selector-group-content .dept-tree-panel>.ant-spin-nested-loading{flex:1;min-height:0}.gd-ant-pro-selector-group-content .selector-pane>.ant-spin-nested-loading>.ant-spin-container,.gd-ant-pro-selector-group-content .dept-tree-panel>.ant-spin-nested-loading>.ant-spin-container{flex-direction:column;height:100%;min-height:0;display:flex}.gd-ant-pro-selector-group-content .selector-tree{min-width:0;min-height:0;margin:var(--gdant-spacing-sm) calc(var(--gdant-spacing-xs) * -1) 0;padding:0 var(--gdant-spacing-xs);flex:1;overflow:hidden auto}.gd-ant-pro-selector-group-content .selector-tree::-webkit-scrollbar{width:6px;height:6px}.gd-ant-pro-selector-group-content .selector-tree::-webkit-scrollbar-track{background:var(--gdant-neutral-100);border-radius:var(--gdant-radius-sm)}.gd-ant-pro-selector-group-content .selector-tree::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-sm)}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-treenode{box-sizing:border-box;align-items:center;width:100%;min-height:44px;display:flex}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-indent{flex:none;align-self:stretch;display:flex}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-indent-unit{flex:0 0 24px;width:24px}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-switcher{flex:0 0 24px;justify-content:center;align-items:center;width:24px;height:40px;margin:0;display:inline-flex}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-checkbox{width:20px;height:20px;margin:0 var(--gdant-spacing-xs) 0 0;box-sizing:border-box;flex:0 0 20px;justify-content:center;align-items:center;display:inline-flex}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-node-content-wrapper{min-width:0;min-height:40px;padding:0 var(--gdant-spacing-sm) 0 0;border-radius:var(--gdant-radius-md);box-sizing:border-box;transition:background-color var(--gdant-duration-normal) var(--gdant-easing-default), border-color var(--gdant-duration-normal) var(--gdant-easing-default);background:0 0;border:1px solid #0000;outline:none;flex:1;align-items:center;display:flex}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-iconEle{width:20px;height:20px;margin-right:var(--gdant-spacing-xs);flex:0 0 20px;justify-content:center;align-items:center;line-height:1;display:inline-flex}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-node-content-wrapper:hover{background:var(--gdant-neutral-50)}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{border-color:var(--gdant-primary-200);background:var(--gdant-primary-50)}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-treenode:focus-within .ant-tree-node-content-wrapper{border-color:var(--gdant-primary-300);background:var(--gdant-primary-50)}.gd-ant-pro-selector-group-content .selector-tree .ant-tree-title{flex:1;align-items:center;min-width:0;min-height:20px;line-height:20px;display:flex;overflow:hidden}.gd-ant-pro-selector-group-content .tree-title{align-items:center;gap:var(--gdant-spacing-sm);min-width:0;display:flex}.gd-ant-pro-selector-group-content .tree-title>.gd-ant-icon,.gd-ant-pro-selector-group-content .tree-title>[class*=icon-gd-ant-]{vertical-align:middle;flex:0 0 16px;justify-content:center;align-items:center;width:16px;height:16px;line-height:1;display:inline-flex}.gd-ant-pro-selector-group-content .tree-title_name{min-width:0;color:var(--gdant-neutral-700);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@container (width<=720px){.gd-ant-pro-selector-group-content{grid-template-rows:minmax(280px,1fr) minmax(150px,40%);grid-template-columns:minmax(0,1fr);height:min(680px,76vh)}.gd-ant-pro-selector-group-right{border-top:1px solid var(--gdant-neutral-200);border-left:0;min-height:150px}}@container (width<=560px){.gd-ant-pro-selector-group-content .user-selector{grid-template-rows:minmax(136px,.8fr) minmax(180px,1.2fr);grid-template-columns:minmax(0,1fr)}.gd-ant-pro-selector-group-content .user-dept-tree,.gd-ant-pro-selector-group-content .user-list-pane{width:100%}}@media (prefers-reduced-motion:reduce){.gd-ant-select-box_content-item,.gd-ant-pro-selector-group-content .selector-option-row,.gd-ant-pro-selector-group-content .selector-tree .ant-tree-node-content-wrapper{transition:none}}
@@ -1 +0,0 @@
1
- .gd-ant-role-selector{min-width:0}.gd-ant-role-selector-shell{width:100%;min-width:0;container-type:inline-size}.gd-ant-role-selector-modal{border-radius:var(--gdant-radius-lg);background:var(--gdant-neutral-0);grid-template-columns:minmax(0,3fr) minmax(260px,2fr);width:100%;min-width:0;height:min(440px,62vh);min-height:360px;display:grid;overflow:hidden}.gd-ant-role-selector-left,.gd-ant-role-selector-right{box-sizing:border-box;min-width:0;min-height:0}.gd-ant-role-selector-left{padding:var(--gdant-spacing-base);background:var(--gdant-neutral-0);flex-direction:column;display:flex}.gd-ant-role-selector-left .gd-ant-role-selector__search-row{align-items:center;gap:var(--gdant-spacing-sm);min-width:0;display:flex}.gd-ant-role-selector-left .ant-input-affix-wrapper{flex:1;min-width:0;height:36px;min-height:36px}.gd-ant-role-selector__search-count{color:var(--gdant-neutral-500);font-size:var(--gdant-text-body-sm);white-space:nowrap;flex:none}.gd-ant-role-selector__feedback{margin-top:var(--gdant-spacing-sm)}.gd-ant-role-selector__list-region{min-width:0;min-height:0;margin-top:var(--gdant-spacing-sm);flex-direction:column;flex:1;display:flex}.gd-ant-role-selector__list-region .ant-spin-nested-loading,.gd-ant-role-selector__list-region .ant-spin-container{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.gd-ant-role-selector__role-list{flex:1;min-width:0;min-height:0;overflow:hidden auto}.gd-ant-role-selector__role-list::-webkit-scrollbar{width:6px;height:6px}.gd-ant-role-selector__role-list::-webkit-scrollbar-track{background:var(--gdant-neutral-100);border-radius:var(--gdant-radius-sm)}.gd-ant-role-selector__role-list::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-sm)}.gd-ant-role-selector__role-list .ant-checkbox-group,.gd-ant-role-selector__role-list .ant-radio-group{width:100%;display:block}.gd-ant-role-selector__options{width:100%}.gd-ant-role-selector__option-row{width:100%;margin-bottom:var(--gdant-spacing-xs)}.gd-ant-role-selector__option-row .ant-checkbox-wrapper,.gd-ant-role-selector__option-row .ant-radio-wrapper{width:100%;min-height:44px;padding:0 var(--gdant-spacing-sm);border-radius:var(--gdant-radius-md);box-sizing:border-box;transition:background-color var(--gdant-duration-normal) var(--gdant-easing-default), border-color var(--gdant-duration-normal) var(--gdant-easing-default);border:1px solid #0000;align-items:center;margin:0;display:flex}.gd-ant-role-selector__option-row .ant-checkbox-wrapper>span:last-child,.gd-ant-role-selector__option-row .ant-radio-wrapper>span:last-child{flex:1;min-width:0;display:flex}.gd-ant-role-selector__option-row .ant-checkbox-wrapper:hover,.gd-ant-role-selector__option-row .ant-radio-wrapper:hover{background:var(--gdant-neutral-50)}.gd-ant-role-selector__option-row .ant-checkbox-wrapper-checked,.gd-ant-role-selector__option-row .ant-radio-wrapper-checked{border-color:var(--gdant-primary-200);background:var(--gdant-primary-50)}.gd-ant-role-selector__option-row .ant-checkbox-wrapper:focus-within,.gd-ant-role-selector__option-row .ant-radio-wrapper:focus-within{border-color:var(--gdant-primary-300);background:var(--gdant-primary-50)}.gd-ant-role-selector__role-item{justify-content:space-between;align-items:center;gap:var(--gdant-spacing-sm);min-width:0;min-height:44px;padding:0 0 0 var(--gdant-spacing-sm);border-radius:var(--gdant-radius-md);box-sizing:border-box;color:var(--gdant-neutral-800);border:1px solid #0000;flex:1;display:flex}.gd-ant-role-selector__selected-list .gd-ant-role-selector__role-item:hover,.gd-ant-role-selector__selected-list .gd-ant-role-selector__role-item:focus-within,.gd-ant-role-selector__selected-list .gd-ant-role-selector__role-item.is-selected{border-color:var(--gdant-primary-200);background:var(--gdant-primary-50)}.gd-ant-role-selector__selected-list .gd-ant-role-selector__role-item:focus-within{border-color:var(--gdant-primary-300)}.gd-ant-role-selector__option-row .gd-ant-role-selector__role-item{cursor:pointer;min-height:40px}.gd-ant-role-selector__role-item-label{align-items:center;gap:var(--gdant-spacing-sm);flex:1;min-width:0;display:flex}.gd-ant-role-selector__label{min-width:0;color:var(--gdant-neutral-700);font-size:var(--gdant-text-body);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gd-ant-role-selector__role-item-meta{color:var(--gdant-primary-600);flex:none;align-items:center;display:flex}.gd-ant-role-selector__role-item-del{border-radius:var(--gdant-radius-sm);width:28px;height:28px;color:var(--gdant-neutral-500);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.gd-ant-role-selector__role-item-del:hover,.gd-ant-role-selector__role-item-del:focus-visible{outline:2px solid var(--gdant-primary-200);outline-offset:1px;background:var(--gdant-primary-50);color:var(--gdant-primary-600)}.gd-ant-role-selector__selected-heading{border-bottom:1px solid var(--gdant-neutral-200);min-height:36px;color:var(--gdant-neutral-700);font-size:var(--gdant-text-body);font-weight:var(--gdant-font-semibold);justify-content:space-between;align-items:center;display:flex}.gd-ant-role-selector-right{border-left:1px solid var(--gdant-neutral-200);padding:var(--gdant-spacing-base);background:var(--gdant-neutral-50);flex-direction:column;display:flex;overflow:hidden}.gd-ant-role-selector__selected-list{flex:1;min-width:0;min-height:0;overflow:hidden auto}.gd-ant-role-selector__selected-list::-webkit-scrollbar{width:6px;height:6px}.gd-ant-role-selector__selected-list::-webkit-scrollbar-track{background:var(--gdant-neutral-100);border-radius:var(--gdant-radius-sm)}.gd-ant-role-selector__selected-list::-webkit-scrollbar-thumb{background:var(--gdant-neutral-300);border-radius:var(--gdant-radius-sm)}.gd-ant-role-selector-right>.gd-ant-role-selector__selected-list{min-width:0}.gd-ant-role-selector__selected-list .gd-ant-role-selector__selected-row .gd-ant-role-selector__role-item{width:100%;margin-top:var(--gdant-spacing-sm);padding:0 var(--gdant-spacing-sm);box-sizing:border-box;margin-bottom:0}.gd-ant-role-selector-right>.ant-empty{margin:auto}@container (width<=560px){.gd-ant-role-selector-modal{grid-template-rows:minmax(240px,1fr) minmax(140px,42%);grid-template-columns:minmax(0,1fr);height:min(640px,72vh)}.gd-ant-role-selector-right{border-top:1px solid var(--gdant-neutral-200);border-left:0;min-height:140px}}@media (prefers-reduced-motion:reduce){.gd-ant-role-selector__option-row .ant-checkbox-wrapper,.gd-ant-role-selector__option-row .ant-radio-wrapper,.gd-ant-role-selector__role-item{transition:none}}.gd-ant-role-selector .selector-tags{width:100%;min-width:0}