ngx-axis-appforge 1.0.0 → 1.0.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-axis-appforge-axis-components-design.mjs","sources":["../../../axis-components/design/tree/drag-drop.ts","../../../axis-components/design/tree/tree.ts","../../../axis-components/design/tree/tree.html","../../../axis-components/design/preview/drop-handler.ts","../../../axis-components/design/preview/drag.service.ts","../../../axis-components/design/preview/select.service.ts","../../../axis-components/design/preview/preview.ts","../../../axis-components/design/preview/preview.html","../../../axis-components/design/cmplib/cmplib.ts","../../../axis-components/design/cmplib/cmplib.html","../../../axis-components/design/shortcut-key.ts","../../../axis-components/design/design.options.ts","../../../axis-components/design/toolbar/toolbar.ts","../../../axis-components/design/toolbar/toolbar.html","../../../axis-components/design/design.ts","../../../axis-components/design/design.html","../../../axis-components/design/ngx-axis-appforge-axis-components-design.ts"],"sourcesContent":["import { NzFormatBeforeDropEvent, NzFormatEmitEvent } from 'ng-zorro-antd/tree';\nimport { OptionsNode } from 'ngx-axis-appforge/core';\nimport { Tree } from './tree';\nimport { Observable, of } from 'rxjs';\n\nexport class DragDrop {\n\n constructor(private tree: Tree) { }\n\n dragNode?: OptionsNode;\n dropNode?: OptionsNode;\n targetIndex?: number | string;\n element?: HTMLElement;\n pos?: number;\n\n beforeDrop = (confirm: NzFormatBeforeDropEvent): Observable<boolean> => {\n const node = confirm.node!.origin['options'];\n const dragNode = confirm.dragNode!.origin['options'];\n return of(dragNode.canDrag && node.canDrop && dragNode.dragType == node.dropType);\n };\n\n onDragStart(e: NzFormatEmitEvent) {\n this.dragNode = e.dragNode!.origin['options'];\n if (this.dragNode?.children?.length) {\n e.dragNode!.setExpanded(false);\n this.tree.expandedNodeids.update(ids => {\n const index = ids.indexOf(this.dragNode!.id);\n if (index != -1) {\n ids.splice(index, 1);\n }\n return ids;\n });\n }\n }\n\n onDragOver(e: NzFormatEmitEvent) {\n const node = e.node!.origin['options'];\n const parent = node.parentId ? this.tree.optionsNodes().get(node.parentId) : undefined;\n let canDropIn = this.canDrop(node);\n let canDropSide = !!parent && this.canDrop(parent);\n if (!canDropIn && !canDropSide) {\n e.event?.preventDefault();\n return;\n }\n const pos = this.getPos(e.event as DragEvent, canDropIn, canDropSide);\n const element = (e.event?.currentTarget as HTMLElement);\n this.updateElementStyle(element, pos);\n if (pos == 0) {\n this.targetIndex = node?.defaultDropIndex;\n this.dropNode = node;\n this.tree.expandedNodeids.update(ids => {\n if (!ids.includes(node.id!)) {\n ids.push(node.id!);\n }\n return ids;\n });\n } else if (pos == -1) {\n this.targetIndex = node.indexOfParentObj;\n this.dropNode = parent;\n } else {\n this.targetIndex = (node.indexOfParentObj as number) + 1;\n this.dropNode = parent;\n }\n }\n\n private updateElementStyle(element?: HTMLElement, pos?: number) {\n if (element != this.element || pos != this.pos) {\n this.element?.classList.remove(\"drop_in\", \"drop_up\", \"drop_down\");\n if (element) {\n switch (pos) {\n case -1:\n element.classList.add(\"drop_up\");\n break;\n case 0:\n element.classList.add(\"drop_in\");\n break;\n default:\n element.classList.add(\"drop_down\");\n break;\n }\n }\n this.element = element;\n this.pos = pos;\n }\n }\n\n onDragEnd(e: NzFormatEmitEvent) {\n if (this.dropNode) {\n if (this.dropNode.dropObj == this.dragNode!.parentObj && this.dragNode!.indexOfParentObj == this.targetIndex) {\n this.updateElementStyle();\n return undefined;\n }\n if (this.dropNode.dropObj instanceof Array && this.dropNode.dropObj == this.dragNode!.parentObj && this.dragNode!.indexOfParentObj! < this.targetIndex!) {\n (this.targetIndex as number)!--;\n }\n const dragObj = this.dragNode!.options;\n if (!this.dragNode!.isRoot) {\n if (this.dragNode?.parentObj instanceof Array) {\n this.dragNode!.parentObj.splice(this.dragNode!.indexOfParentObj as number, 1);\n } else {\n this.dragNode!.parentObj[this.dragNode!.indexOfParentObj as number] = null;\n }\n }\n if (this.dropNode.dropObj instanceof Array) {\n this.dropNode.dropObj.splice(this.targetIndex as number, 0, dragObj);\n } else {\n this.dropNode.dropObj[this.targetIndex!] = dragObj;\n }\n this.tree.onChange.emit({ historyDesc: `拖拽${this.dragNode?.name}` });\n }\n this.dragNode = undefined;\n this.updateElementStyle();\n }\n\n private canDrop(node: OptionsNode | undefined): boolean {\n if (node && node.canDrop && node.dropType == this.dragNode!.dragType) {\n return !node.dropObj[node.defaultDropIndex!];\n }\n return false;\n }\n\n private getPos(e: DragEvent, canDropIn: boolean, canDropSide: boolean): number {\n const element = e.target as HTMLElement;\n const rect = element.getBoundingClientRect();\n const clientY = e.clientY - rect.top;\n const height = rect.height;\n if (canDropIn && canDropSide) {\n return 1 - Math.floor(clientY / height * 3);\n } else if (canDropSide) {\n return clientY < height / 2 ? -1 : 1;\n } else {\n return 0;\n }\n }\n\n}","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, OnDestroy, output, signal, untracked, ViewChild, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { BehaviorSubject, debounceTime, Subscription } from 'rxjs';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { DragDrop } from './drag-drop';\nimport { OptionsNode, OptionsChangeEvent } from 'ngx-axis-appforge/core';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\nimport { Design } from '../design';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzFormatEmitEvent, NzTreeComponent, NzTreeModule, NzTreeNodeOptions } from 'ng-zorro-antd/tree';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'axis-design-tree',\n imports: [FormsModule, NzInputModule, NzIconModule, NzTreeModule, NzFlexModule, NzButtonModule, NzTooltipModule, NzEmptyModule],\n templateUrl: './tree.html',\n styleUrl: './tree.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tree implements OnDestroy {\n\n constructor() {\n effect(() => {\n this.treeNode();\n untracked(() => {\n this.selectedNodeids.set(this.selectedNodeids().filter(nodeid => this.optionsNodes().has(nodeid)));\n this.expandedNodeids.set(this.expandedNodeids().filter(nodeid => this.optionsNodes().has(nodeid)));\n if (this.selectedNodeids().length == 0 && this.node()) {\n this.selectOne(this.node()!.id, { sendEvent: true });\n }\n });\n })\n }\n\n readonly node = input.required<OptionsNode | undefined | null>()\n readonly optionsNodes = input.required<Map<string, OptionsNode>>();\n readonly onChange = output<OptionsChangeEvent>();\n readonly onSelect = output<string[]>()\n readonly onContextMenu = output<{ nodeId: string, event: MouseEvent }>()\n readonly dragdrop = computed(() => new DragDrop(this));\n readonly searchValue$ = new BehaviorSubject<string>('');\n readonly searchValue = toSignal(this.searchValue$.pipe(debounceTime(300)));\n readonly design = inject(Design);\n private readonly subs: Subscription[] = [];\n @ViewChild(NzTreeComponent)\n tree?: NzTreeComponent;\n\n readonly treeNode = computed(() => {\n function mapTreeNode(node: OptionsNode): NzTreeNodeOptions {\n return {\n title: node.name ?? '',\n key: node.id,\n icon: node.icon,\n isLeaf: (node.children?.length ?? 0) == 0,\n children: node.children?.map(mapTreeNode),\n options: node\n }\n }\n return this.node() ? [mapTreeNode(this.node()!)] : [];\n });\n readonly selectedNodeids = signal<string[]>([]);\n readonly expandedNodeids = signal<string[]>([]);\n expandChange(e: NzFormatEmitEvent) {\n this.expandedNodeids.set(e.keys ?? []);\n }\n get hasExpanded(): boolean {\n return !!this.node() && this.expandedNodeids().includes(this.node()!.id);\n }\n\n onNodeClick(e: NzFormatEmitEvent) {\n if (e.event?.ctrlKey || e.event?.metaKey) {\n this.toggleSelect(e.node!.key, { sendEvent: true });\n } else {\n this.selectOne(e.node!.key, { sendEvent: true });\n }\n }\n\n select(nodeId: string, opt?: { sendEvent: boolean }) {\n this.selectedNodeids.update(ids => {\n if (!ids.includes(nodeId)) {\n ids.push(nodeId);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n selectOne(nodeId: string, opt?: { sendEvent: boolean }) {\n this.unSelectAll();\n this.selectedNodeids.update(ids => {\n if (!ids.includes(nodeId)) {\n ids.push(nodeId);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n toggleSelect(nodeId: string, opt?: { sendEvent: boolean }) {\n this.selectedNodeids.update(ids => {\n const index = ids.indexOf(nodeId);\n if (index >= 0) {\n ids.splice(index, 1);\n } else {\n ids.push(nodeId);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n unSelect(nodeId: string, opt?: { sendEvent: boolean }) {\n this.selectedNodeids.update(ids => {\n const index = ids.indexOf(nodeId);\n if (index >= 0) {\n ids.splice(index, 1);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n unSelectAll(opt?: { sendEvent: boolean }) {\n this.selectedNodeids.set([]);\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n private sendSelectEvent() {\n this.onSelect.emit(Array.from(this.selectedNodeids()));\n }\n\n selectByNodeIds(nodeIds: string[]) {\n this.selectedNodeids.set(nodeIds.filter(nodeid => this.optionsNodes().has(nodeid)));\n }\n\n expandByNodeIds(nodeIds: string[]) {\n this.expandedNodeids.set(nodeIds.filter(nodeid => this.optionsNodes().has(nodeid)));\n }\n\n toggleExpanded() {\n if (this.hasExpanded) {\n this.expandedNodeids.set([]);\n this.tree?.getExpandedNodeList().forEach(node => {\n node.setExpanded(false);\n })\n } else {\n this.expandedNodeids.set(Array.from(this.optionsNodes().keys()));\n }\n }\n\n reset() {\n\n }\n\n contextMenu(e: NzFormatEmitEvent) {\n this.onNodeClick(e);\n this.onContextMenu.emit({ event: e.event!, nodeId: e.node!.key });\n }\n\n removeSelected() {\n let changed = false;\n let next = undefined;\n let nextNodeId;\n for (const nodeId of this.selectedNodeids()) {\n const node = this.optionsNodes().get(nodeId);\n if (node?.canSetting) {\n changed = true;\n if (node.isRoot) {\n next = null;\n } else {\n nextNodeId = node.parentId;\n if (Array.isArray(node.parentObj)) {\n node.parentObj.splice(node.parentObj.indexOf(node.options), 1);\n if (node.parentObj.length) {\n nextNodeId = node.parentObj[Math.min(node.indexOfParentObj as number, node.parentObj.length - 1)].id;\n }\n } else {\n node.parentObj[node.indexOfParentObj!] = null;\n }\n }\n }\n }\n if (changed) {\n this.onChange.emit({ value: next, nextNodeId: nextNodeId, historyDesc: `删除${this.selectedNodeids().length}个组件` });\n }\n }\n\n addNodeForSelected(nodes: OptionsNode[], deleteSuccess = false, historyDesc?: string) {\n if (nodes.length && this.selectedNodeids().length) {\n for (const nodeId of this.selectedNodeids()) {\n const parentNode = this.optionsNodes().get(nodeId);\n if (parentNode && parentNode.canDrop) {\n if (parentNode.dropType == \"component\") {\n if (Array.isArray(parentNode.dropObj)) {\n parentNode.dropObj.splice(parentNode.dropObj.length, 0, ...nodes.map(n => n.options));\n if (deleteSuccess) {\n nodes.forEach(n => this.deleteNode(n));\n }\n } else if (!parentNode.dropObj[parentNode.defaultDropIndex!]) {\n const n = nodes[nodes.length - 1];\n parentNode.dropObj[parentNode.defaultDropIndex!] = n.options;\n if (deleteSuccess) {\n this.deleteNode(n);\n }\n }\n } else {\n for (const node of nodes) {\n parentNode?.onPaste(node, this.design.replaceIdFun.bind(this.design));\n }\n }\n }\n }\n this.onChange.emit({ historyDesc });\n }\n }\n\n private deleteNode(node: OptionsNode) {\n if (node.parentObj) {\n if (Array.isArray(node.parentObj)) {\n node.parentObj.splice(node.indexOfParentObj as number, 1);\n } else {\n delete node.parentObj[node.indexOfParentObj!];\n }\n }\n }\n\n addRootComponent() {\n this.design.chooseComponent().subscribe(res => {\n const { options, config } = res;\n if (options && config) {\n this.onChange.emit({ value: options, historyDesc: `添加${config.componentName}` });\n }\n });\n }\n\n ngOnDestroy(): void {\n for (let sub of this.subs) {\n sub.unsubscribe();\n }\n }\n\n}","<div nz-flex [nzVertical]=\"true\" style=\"height: 100%;\">\n <div nz-flex style=\"padding-right: 8px;\" nzGap=\"4px\" nzAlign=\"center\">\n <input style=\"flex:1;\" type=\"text\" nz-input placeholder=\"搜索\" nzVariant=\"borderless\" ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" (click)=\"toggleExpanded()\">\n <nz-icon [nzType]=\"hasExpanded?'shrink':'arrows-alt'\" nzTheme=\"outline\" />\n </button>\n </div>\n @if (node() === null) {\n <nz-empty [nzNotFoundContent]=\"contentTpl\" [nzNotFoundFooter]=\"footerTpl\">\n <ng-template #contentTpl>\n 没有组件\n </ng-template>\n <ng-template #footerTpl>\n <button nz-button nzType=\"dashed\" (click)=\"addRootComponent()\">\n <nz-icon nzType=\"plus\"></nz-icon>\n 添加组件\n </button>\n </ng-template>\n </nz-empty>\n }@else {\n <nz-tree nzMultiple nzDraggable [nzSearchValue]=\"searchValue()??''\" [nzData]=\"treeNode()\"\n [(nzExpandedKeys)]=\"expandedNodeids\" (nzExpandChange)=\"expandChange($event)\"\n [(nzSelectedKeys)]=\"selectedNodeids\" nzBlockNode nzShowIcon (nzClick)=\"onNodeClick($event)\"\n (nzContextMenu)=\"contextMenu($event)\" [nzBeforeDrop]=\"dragdrop().beforeDrop\"\n (nzOnDragStart)=\"dragdrop().onDragStart($event)\" (nzOnDragOver)=\"dragdrop().onDragOver($event)\"\n (nzOnDragEnd)=\"dragdrop().onDragEnd($event)\" />\n <!-- <nz-tree-view nzDirectoryTree [nzTreeControl]=\"treeControl\" [nzDataSource]=\"dataSource\">\n <nz-tree-node *nzTreeNodeDef=\"let node\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle nzTreeNodeNoopToggle></nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node.id)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n <nz-tree-node *nzTreeNodeDef=\"let node; when: hasChild\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle>\n <nz-icon nzType=\"caret-down\" nzTreeNodeToggleRotateIcon />\n </nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node.id)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n </nz-tree-view> -->\n }\n</div>","import { ElementNode } from \"ngx-axis-appforge/core\";\n\nexport class DropHandler {\n\n private placeholder: HTMLElement;\n\n beforeElement?: HTMLElement | null;\n\n constructor(public dragNode: ElementNode, public dropNode: ElementNode, private elementOptionIds: Map<HTMLElement, string>, private isHorizontal: boolean) {\n this.placeholder = dragNode.element!.cloneNode(true) as HTMLElement;\n this.placeholder.style.display = \"inline\";\n this.placeholder.style.opacity = \"0.5\";\n }\n\n onDragEnd(): void {\n this.placeholder.remove();\n }\n\n onDragOver(e: DragEvent): void {\n const element = this.getBeforeElement(e)\n if (element === this.beforeElement) {\n return;\n }\n this.beforeElement = element;\n if (element) {\n this.dropNode.dropElement!.insertBefore(this.placeholder, element);\n } else {\n this.dropNode.dropElement!.appendChild(this.placeholder);\n }\n }\n\n close(): void {\n this.placeholder.remove();\n this.beforeElement = undefined;\n }\n\n protected getBeforeElement(e: DragEvent): HTMLElement | null {\n for (const child of this.dropNode.dropElement!.children) {\n if (this.elementOptionIds.has(child as HTMLElement)) {\n const rect = child.getBoundingClientRect();\n if (this.isHorizontal) {\n const middle = rect.left + (rect.width / 2);\n if (e.clientX <= middle) {\n return child as HTMLElement;\n }\n } else {\n const middle = rect.top + (rect.height / 2);\n if (e.clientY <= middle) {\n return child as HTMLElement;\n }\n }\n }\n }\n return null;\n }\n}","import { ElementNode, OptionsNode } from \"ngx-axis-appforge/core\";\nimport { DropHandler } from \"./drop-handler\";\nimport { Preview } from \"./preview\";\n\nexport class DragService {\n\n constructor(private preview: Preview) { }\n\n private canDropNodes: ElementNode[] = [];\n private oriDragDisplay?: string;\n private readonly currentDropNodes = new Map<ElementNode, any>();\n private dragEn?: ElementNode;\n private dropHandler?: DropHandler;\n\n initElement(node: OptionsNode, en: ElementNode) {\n if (!node.isRoot && node.canDrag) {\n this.bindDragEvent(en);\n }\n if (node.canDrop) {\n this.canDropNodes.push(en);\n }\n }\n\n private getOptionsNode(node: ElementNode): OptionsNode {\n return this.preview.optionsNodes().get(node.id)!;\n }\n\n private bindDragEvent(node: ElementNode) {\n node.element!.setAttribute(\"draggable\", \"true\");\n node.element!.ondragstart = (e) => {\n e.stopPropagation();\n this.dragStart(node);\n this.oriDragDisplay = node.element!.style.display;\n setTimeout(() => {\n node.element!.style.display = \"none\";\n });\n };\n node.element!.ondragend = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.dragEnd();\n }\n }\n\n private bindDropEvent(en: ElementNode) {\n this.currentDropNodes.set(en, null);\n setTimeout(() => {\n const { clientWidth, clientHeight } = en.dropElement!;\n if (!clientWidth || !clientHeight) {\n const { display, minWidth, minHeight } = en.dropElement!.style;\n this.currentDropNodes.set(en,\n { display, minWidth, minHeight }\n );\n if (!clientWidth) {\n en.dropElement!.style.minWidth = \"100px\";\n }\n if (!clientHeight) {\n en.dropElement!.style.minHeight = \"50px\";\n }\n en.dropElement!.style.display = \"block\";\n }\n });\n en.dropElement!.ondragenter = (e) => {\n e?.preventDefault();\n e.stopPropagation();\n if (this.dropHandler?.dropNode == en) {\n return;\n }\n this.dropHandler?.close();\n const node = this.getOptionsNode(en);\n this.dropHandler = new DropHandler(this.dragEn!, en, this.preview.elementOptionIds, node.childDirection == \"horizontal\");\n }\n en.dropElement!.ondragover = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.dropHandler?.onDragOver?.(e);\n }\n }\n\n dragStart(dragEn: ElementNode) {\n this.dragEn = dragEn;\n this.canDropNodes = this.canDropNodes.filter(en => this.preview.optionsNodes().has(en.id));\n this.canDropNodes\n .filter(dropEn => {\n const dropNode = this.getOptionsNode(dropEn);\n const dragNode = this.getOptionsNode(dragEn);\n return dropNode.dropType == dragNode.dragType && !dropNode.dropObj[dropNode.defaultDropIndex!] && dropEn.dropElement;\n })\n .forEach(node => this.bindDropEvent(node));\n this.preview.onDragStart();\n }\n\n dragEnd(): string | undefined {\n let dragId: string | undefined;\n if (this.dropHandler) {\n const dropEn = this.dropHandler.dropNode;\n const dropNode = this.getOptionsNode(dropEn);\n const dragNode = this.getOptionsNode(this.dragEn!);\n let targetIndex = this.dropHandler.beforeElement ? this.preview.getNodeByElement(this.dropHandler.beforeElement)?.indexOfParentObj : dropNode?.defaultDropIndex;\n if (dropNode!.dropObj == dragNode!.parentObj && dragNode!.indexOfParentObj == targetIndex) {\n this.preview.onDragEnd({ historyDesc: `拖拽${dragNode.name}` });\n } else {\n dragId = dragNode?.id;\n if (dropNode!.dropObj instanceof Array && dropNode!.dropObj == dragNode!.parentObj && dragNode!.indexOfParentObj! < targetIndex!) {\n (targetIndex as number)!--;\n }\n const dragObj = dragNode!.options;\n if (!dragNode!.isRoot) {\n if (dragNode?.parentObj instanceof Array) {\n dragNode!.parentObj.splice(dragNode!.indexOfParentObj as number, 1);\n } else {\n dragNode!.parentObj[dragNode!.indexOfParentObj!] = null;\n }\n }\n if (dropNode?.dropObj instanceof Array) {\n dropNode!.dropObj.splice(targetIndex as number, 0, dragObj);\n } else {\n dropNode!.dropObj[targetIndex!] = dragObj;\n }\n this.preview.onDragEnd({ historyDesc: `拖拽${dragNode.name}` });\n }\n this.dropHandler.onDragEnd();\n this.dropHandler = undefined;\n } else {\n this.preview.onDragEnd();\n }\n this.dragEn!.element!.style.display = this.oriDragDisplay!;\n this.dragEn = undefined;\n this.oriDragDisplay = undefined;\n this.currentDropNodes.forEach((style, en) => {\n if (style) {\n en.dropElement!.style.minWidth = style.minWidth;\n en.dropElement!.style.minHeight = style.minHeight;\n en.dropElement!.style.display = style.display;\n }\n en.dropElement!.ondragenter = null;\n en.dropElement!.ondragover = null;\n });\n this.currentDropNodes.clear();\n return dragId;\n }\n\n reset() {\n this.dropHandler?.close();\n this.dragEn = undefined;\n this.dropHandler = undefined;\n }\n}","import { Preview } from \"./preview\";\n\nexport class SelectService {\n private hoverElements: HTMLElement[] = [];\n private enable = true;\n private selectElements = new Set<HTMLElement>();\n\n constructor(private preview: Preview) { }\n\n initElement(element: HTMLElement) {\n element.style.outlineOffset = \"1px\";\n element.onclick = (e) => {\n e.stopPropagation();\n if (e.ctrlKey || e.metaKey) {\n this.toggleSelect(element, { sendEvent: true });\n } else {\n this.selectOne(element, { sendEvent: true });\n }\n };\n element.onmouseenter = () => {\n if (this.enable) {\n this.addHoverElement(element);\n }\n };\n element.onmouseleave = () => {\n if (this.enable) {\n this.popHoverElement(element);\n }\n };\n }\n\n enableHover() {\n this.enable = true;\n }\n\n disableHover() {\n this.enable = false;\n }\n\n private addHoverElement(element: HTMLElement) {\n this.hoverElements.unshift(element);\n this.refreshHoverElements();\n }\n\n private popHoverElement(element: HTMLElement) {\n const i = this.hoverElements.lastIndexOf(element);\n if (i != -1) {\n for (const e of this.hoverElements.splice(0, i + 1)) {\n if (!this.selectElements.has(element)) {\n element.style.outline = \"none\";\n }\n }\n }\n this.refreshHoverElements();\n }\n\n select(element: HTMLElement, opt?: { sendEvent: boolean }) {\n this.selectElements.add(element);\n element.style.outline = \"2px dashed green\";\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n selectOne(element: HTMLElement, opt?: { sendEvent: boolean }) {\n this.unSelectAll();\n this.selectElements.add(element);\n element.style.outline = \"2px dashed green\";\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n toggleSelect(element: HTMLElement, opt?: { sendEvent: boolean }) {\n if (this.selectElements.has(element)) {\n this.unSelect(element);\n } else {\n this.select(element);\n }\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n unSelect(element: HTMLElement, opt?: { sendEvent: boolean }) {\n if (this.selectElements.has(element)) {\n this.selectElements.delete(element);\n element.style.outline = \"none\";\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n }\n\n unSelectAll(opt?: { sendEvent: boolean }) {\n for (let element of this.selectElements) {\n this.unSelect(element);\n }\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n private sendSelectEvent() {\n this.preview.onSelectChange?.(Array.from(this.selectElements));\n }\n\n private refreshHoverElements() {\n this.hoverElements = this.hoverElements.filter(e => this.preview.elementOptionIds.has(e));\n if (this.hoverElements.length && !this.selectElements.has(this.hoverElements[0])) {\n this.hoverElements[0].style.outline = \"1.5px dashed rgb(255,0,0)\";\n }\n if (this.hoverElements.length > 1 && !this.selectElements.has(this.hoverElements[1])) {\n this.hoverElements[1].style.outline = \"1.5px dashed rgba(255,0,0,0.4)\";\n }\n if (this.hoverElements.length > 2) {\n this.hoverElements.slice(2).filter(r => !this.selectElements.has(r)).forEach((e) => {\n e.style.outline = \"none\";\n });\n }\n }\n\n reset(opt?: { sendEvent: boolean }): void {\n for (const element of this.hoverElements) {\n element.style.outline = \"none\";\n }\n for (const element of this.selectElements) {\n element.style.outline = \"none\";\n }\n this.hoverElements = [];\n this.selectElements.clear();\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n getSelectElements(): HTMLElement[] {\n return [...this.selectElements.values()];\n }\n}","import { ChangeDetectionStrategy, Component, ComponentRef, effect, inject, input, OnDestroy, output, ViewChild } from '@angular/core';\nimport { DragService } from './drag.service';\nimport { SelectService } from './select.service';\nimport { Base, DynamicDirective, BaseOptions, OptionsNode, ElementNode, DesignConfig, DesignBuilder, AXIS_COMPONENTS_LOADER_TOKEN, AXIS_INJECT_DATA_TOKEN, ScopeDirective, OptionsChangeEvent, AXIS_HTTP_CONTEXT_DATA_TOKEN, AXIS_FILE_BASE_URL_TOKEN, AXIS_INJECT_FUNC_TOKEN } from 'ngx-axis-appforge/core';\nimport { CommonModule } from '@angular/common';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'axis-design-preview',\n imports: [DynamicDirective, CommonModule],\n templateUrl: './preview.html',\n styleUrl: './preview.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: DesignBuilder,\n useFactory: (preview: Preview) => {\n return new DesignBuilder((ref, options) => preview.initElement(ref, options), (scope) => preview.initScope(scope))\n },\n deps: [Preview]\n }, {\n provide: AXIS_INJECT_DATA_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.injectData();\n },\n deps: [Preview]\n }, {\n provide: AXIS_HTTP_CONTEXT_DATA_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.httpContextDataSubject;\n },\n deps: [Preview]\n }, {\n provide: AXIS_FILE_BASE_URL_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.fileBaseUrlSubject;\n },\n deps: [Preview]\n }, {\n provide: AXIS_INJECT_FUNC_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.injectFuncSubject;\n },\n deps: [Preview]\n },\n ]\n})\nexport class Preview implements OnDestroy {\n\n constructor() {\n effect(async () => {\n if (this.loadAndOptions()) {\n await this.loadAndOptions()![0];\n this.refresh();\n }\n });\n let injectUrl = inject(AXIS_FILE_BASE_URL_TOKEN, { optional: true, skipSelf: true }) ?? \"\";\n effect(() => {\n this.fileBaseUrlSub?.unsubscribe();\n let url: string | BehaviorSubject<string> = this.fileBaseUrl() ?? \"\";\n if (!url) {\n url = injectUrl;\n }\n if (url instanceof BehaviorSubject) {\n this.fileBaseUrlSub = url.subscribe(this.fileBaseUrlSubject);\n } else {\n this.fileBaseUrlSubject.next(url);\n }\n })\n let injectHttpContextData = inject(AXIS_HTTP_CONTEXT_DATA_TOKEN, { optional: true, skipSelf: true });\n effect(() => {\n this.httpContextDataSub?.unsubscribe();\n let data: BehaviorSubject<any> | any = this.httpContextData();\n if (!data) {\n data = injectHttpContextData;\n }\n if (data instanceof BehaviorSubject) {\n this.httpContextDataSub = data.subscribe(this.httpContextDataSubject);\n } else {\n this.httpContextDataSubject.next(data);\n }\n })\n effect(() => {\n this.injectFuncSub?.unsubscribe();\n let func: BehaviorSubject<{ [name: string]: (Function | { func: Function, type: string }) }> | { [name: string]: (Function | { func: Function, type: string }) } | null = this.injectFunc() ?? null;\n if (func instanceof BehaviorSubject) {\n this.injectFuncSub = func.subscribe(this.injectFuncSubject);\n } else {\n this.injectFuncSubject.next(func ?? {});\n }\n })\n }\n\n readonly loadAndOptions = input.required<[Promise<any>, any] | undefined>()\n readonly optionsNodes = input.required<Map<string, OptionsNode>>();\n readonly injectData = input.required<Observable<any>>();\n readonly httpContextData = input<any>();\n readonly httpContextDataSubject = new BehaviorSubject<any>(undefined);\n httpContextDataSub?: Subscription;\n readonly fileBaseUrl = input<string>();\n readonly fileBaseUrlSubject = new BehaviorSubject<string>(\"\");\n fileBaseUrlSub?: Subscription;\n readonly injectFunc = input<{ [name: string]: (Function | { func: Function, type: string }) }>();\n readonly injectFuncSubject = new BehaviorSubject<{ [name: string]: (Function | { func: Function, type: string }) }>({});\n injectFuncSub?: Subscription;\n readonly loader = inject(AXIS_COMPONENTS_LOADER_TOKEN);\n\n readonly onChange = output<OptionsChangeEvent>();\n readonly onSelect = output<string[]>();\n readonly onContextMenu = output<{ nodeId: string, event: MouseEvent }>();\n readonly onForceRender = output<void>();\n\n readonly elementOptionIds = new Map<HTMLElement, string>();\n readonly elementComponentRefs = new Map<HTMLElement, ComponentRef<Base<BaseOptions>>>();\n readonly optionIdElements = new Map<string, HTMLElement[]>();\n readonly scopeSubjects = new Map<string, BehaviorSubject<ScopeDirective | undefined>>();\n\n private readonly dragService = new DragService(this);\n private readonly selectService = new SelectService(this);\n\n readonly selected = new Map<string, number>();\n\n @ViewChild(\"child\", { read: DynamicDirective })\n dynamicDirective?: DynamicDirective;\n\n initScope(scope: ScopeDirective) {\n this.getAndUpdateScopeSubject(scope.axisScope(), scope);\n }\n\n async initElement(ref: ComponentRef<Base<BaseOptions>>, options: any) {\n await this.loadAndOptions()![0];\n if (!options?.id || !this.optionsNodes().has(options.id)) {\n return;\n }\n\n try {\n const element: HTMLElement = ref.location.nativeElement;\n ref.onDestroy(() => {\n this.elementComponentRefs.delete(element);\n this.elementOptionIds.delete(element);\n if (this.optionIdElements.has(options.id)) {\n this.optionIdElements.set(options.id, this.optionIdElements.get(options.id)!.filter(e => e !== element));\n }\n });\n this.elementComponentRefs.set(element, ref);\n const { component } = options;\n const config: DesignConfig = await this.loader.loadComponent(`${component}/design`)!;\n if (config) {\n const binds = config.bindElementsOptionsNode?.(element, options);\n if (binds) {\n for (const en of Object.entries(binds)) {\n const nodeId = en[0];\n const element = en[1].element;\n const elements = en[1].elements ?? [];\n if (element) {\n elements.push(element);\n }\n const node = this.optionsNodes().get(nodeId);\n for (const element of elements) {\n if (node && element && !this.elementOptionIds.has(element)) {\n if (!this.optionIdElements.has(nodeId)) {\n this.optionIdElements.set(nodeId, []);\n }\n this.optionIdElements.get(nodeId)?.push(element);\n this.elementOptionIds.set(element, nodeId);\n this.selectService.initElement(element);\n if (node.canDrag || node.canDrop) {\n this.dragService.initElement(node, node.toElementNode({ element, dropElement: en[1].dropElement }));\n }\n if (node.contextMenu) {\n element.oncontextmenu = (e: MouseEvent) => {\n this.onContextMenu.emit({ event: e, nodeId: en[0] })\n }\n }\n if (this.selected.has(nodeId) && this.selected.get(nodeId) == this.optionIdElements.get(nodeId)!.length - 1) {\n this.selectService.select(element);\n }\n }\n }\n }\n }\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n getNodeByElement(element: HTMLElement): OptionsNode | undefined {\n const id = this.elementOptionIds.get(element);\n if (id) {\n return this.optionsNodes().get(id);\n }\n return undefined;\n }\n\n onSelectChange(elements: HTMLElement[]) {\n this.selected.clear();\n for (const element of elements) {\n const id = this.elementOptionIds.get(element);\n if (id) {\n const elementList = this.optionIdElements.get(id);\n this.selected.set(id, elementList?.indexOf(element) ?? 0);\n }\n }\n this.onSelect.emit(Array.from(this.selected.keys()));\n }\n\n onDragStart() {\n this.selectService.disableHover();\n }\n\n onDragEnd(e?: OptionsChangeEvent) {\n if (e) {\n this.onChange.emit(e);\n }\n this.selectService.enableHover();\n }\n\n forceRender() {\n this.elementOptionIds.clear();\n this.optionIdElements.clear();\n this.dragService.reset();\n this.selectService.reset();\n this.dynamicDirective?.forceRender();\n this.onForceRender.emit();\n }\n\n refresh() {\n Array.from(this.optionIdElements.keys()).forEach(id => {\n if (!this.optionsNodes().has(id)) {\n this.optionIdElements.get(id)?.forEach(element => {\n this.elementOptionIds.delete(element);\n });\n this.optionIdElements.delete(id);\n }\n });\n setTimeout(() => {\n this.selectService.getSelectElements().filter(e => !document.contains(e)).forEach(e => {\n const nodeId = this.elementOptionIds.get(e);\n this.elementComponentRefs.delete(e);\n if (nodeId) {\n const elements = this.optionIdElements.get(nodeId);\n elements?.splice(elements.indexOf(e), 1);\n const res = this.getParentComponentRef(nodeId);\n if (res) {\n this.initElement(res.ref, res.options);\n }\n }\n });\n }, 50);\n }\n\n private getParentComponentRef(nodeId: string): { ref: ComponentRef<Base<BaseOptions>>, options: any } | undefined {\n const node = this.optionsNodes().get(nodeId);\n if (node?.parentId) {\n const parent = this.optionsNodes().get(node.parentId);\n if (parent) {\n const ref = this.getComponentRef(parent.id);\n if (ref) {\n return { ref, options: parent.options };\n }\n return this.getParentComponentRef(parent.id);\n }\n }\n return undefined;\n }\n\n getComponentRef(nodeId: string): ComponentRef<Base<BaseOptions>> | undefined {\n const elements = this.optionIdElements.get(nodeId);\n if (elements) {\n const element = elements[this.selected.get(nodeId) ?? 0];\n if (element) {\n return this.elementComponentRefs.get(element);\n }\n }\n return undefined;\n }\n\n selectByNodeIds(nodeIds?: string[]) {\n if (nodeIds?.some(id => !this.selected.has(id))) {\n this.selectService.unSelectAll();\n this.selected.clear();\n for (const nodeId of nodeIds) {\n this.selected.set(nodeId, 0);\n const elements = this.optionIdElements.get(nodeId)\n if (elements?.[0]) {\n this.selectService.select(elements[0]);\n }\n }\n }\n }\n\n getAndUpdateScopeSubject(scopeId: string, initScope?: ScopeDirective): BehaviorSubject<ScopeDirective | undefined> {\n if (!this.scopeSubjects.has(scopeId)) {\n this.scopeSubjects.set(scopeId, new BehaviorSubject<ScopeDirective | undefined>(initScope));\n }\n const subject = this.scopeSubjects.get(scopeId)!;\n if (initScope && initScope != subject.value) {\n subject.next(initScope);\n }\n return subject;\n }\n\n updateScopeWithSelectedElement(scopeId: string) {\n const elements = this.selectService.getSelectElements();\n if (elements.length > 0) {\n const ref = this.elementComponentRefs.get(elements[0]);\n const scope = ref?.injector.get(ScopeDirective, null)?.findScope(scopeId);\n if (scope) {\n this.getAndUpdateScopeSubject(scope.axisScope(), scope);\n }\n }\n }\n\n dragForOuter(node: ElementNode) {\n this.dragService.dragStart(node);\n }\n\n dragEndForOuter(): string | undefined {\n return this.dragService.dragEnd();\n }\n\n ngOnDestroy(): void {\n for (const s of this.scopeSubjects.values()) {\n s.unsubscribe();\n }\n this.fileBaseUrlSub?.unsubscribe();\n this.httpContextDataSub?.unsubscribe();\n this.injectFuncSub?.unsubscribe();\n }\n\n}\n","<ng-container #child [axisDynamic]=\"loadAndOptions()?.[1]\" [standalone]=\"true\" [isDesign]=\"true\"></ng-container>","import { ChangeDetectionStrategy, Component, effect, ElementRef, inject, input, model, OnInit, output, signal, ViewChild } from '@angular/core';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzDropdownModule } from 'ng-zorro-antd/dropdown';\nimport { AXIS_DESIGN_CMPLIBS_TOKEN, DynamicDirective, Example, ExampleDesc, ExampleGroup } from 'ngx-axis-appforge/core';\nimport { auditTime, BehaviorSubject, map } from 'rxjs';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { FormsModule } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'axis-cmplib',\n imports: [NzCollapseModule, NzCardModule, NzGridModule, DynamicDirective, NzButtonModule, NzDropdownModule, NzInputModule, FormsModule, NzIconModule, NzFlexModule, NzSelectModule],\n templateUrl: './cmplib.html',\n styleUrl: './cmplib.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Cmplib implements OnInit {\n\n constructor() {\n effect(() => {\n this.tags();\n this.cmplib();\n this.searchValue$.next(this.searchValue$.value);\n });\n }\n readonly cmplibs = inject(AXIS_DESIGN_CMPLIBS_TOKEN, { optional: true });\n readonly cmplib = model<ExampleGroup[]>();\n readonly dragOptions = signal<any>(undefined);\n readonly selectMode = input.required<\"drag\" | \"click\">();\n readonly tags = input<string[]>();\n dragExample?: Example;\n readonly clickExample = output<any>();\n readonly dragStart = output<{ example: Example, element: HTMLElement }>();\n readonly dragEnd = output<void>();\n @ViewChild(\"dragElement\", { read: ElementRef, static: true })\n dragElement?: ElementRef;\n readonly searchValue$ = new BehaviorSubject<string>('');\n readonly displayCmpLib = toSignal(this.searchValue$.pipe(auditTime(300), map(v => {\n if (v || this.tags()?.length) {\n v = v.toLowerCase();\n return this.cmplib()?.map(group => ({\n groupName: group.groupName,\n children: group.children.filter(c => (!v || c.component.includes(v)) && (!this.tags()?.length || c.tags?.some(t => this.tags()!.includes(t))))\n })).filter(group => group.children.length);\n } else {\n return this.cmplib();\n }\n })));\n\n ngOnInit(): void {\n if (this.cmplibs?.length) {\n this.cmplib.set(this.cmplibs[0].lib);\n }\n }\n\n onClick(example: Example) {\n if (this.selectMode() == \"click\") {\n this.clickExample.emit(example);\n }\n }\n\n preloadDragElement(example: Example, desc?: ExampleDesc) {\n if (this.selectMode() == \"drag\") {\n this.dragOptions.set(example.options);\n this.dragExample = example;\n if (desc) {\n example.name ??= desc.component;\n }\n }\n }\n\n onDragStart(e: DragEvent) {\n if (this.selectMode() == \"drag\") {\n e.stopPropagation();\n if (e.dataTransfer) {\n e.dataTransfer.effectAllowed = 'move';\n }\n e.dataTransfer?.setDragImage(this.dragElement?.nativeElement, 0, 0);\n setTimeout(() => {\n this.dragStart.emit({ example: this.dragExample!, element: this.dragElement?.nativeElement });\n });\n }\n }\n\n onDragEnd(e: DragEvent) {\n if (this.selectMode() == \"drag\") {\n e.stopPropagation();\n e.preventDefault();\n this.dragEnd.emit();\n }\n }\n\n}\n","<div nz-flex nzAlign=\"center\">\n <input style=\"flex:1\" type=\"text\" nz-input placeholder=\"搜索\" nzVariant=\"borderless\" ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <nz-select [(ngModel)]=\"cmplib\" nzSize=\"small\" nzVariant=\"borderless\" style=\"width: auto;\">\n @for (lib of cmplibs; track $index) {\n <nz-option [nzValue]=\"lib.lib\" [nzLabel]=\"lib.libName\"></nz-option>\n }\n </nz-select>\n</div>\n<nz-collapse nzAccordion>\n @for (group of displayCmpLib(); track group.groupName) {\n <nz-collapse-panel [nzHeader]=\"`${group.groupName}(${group.children.length})`\">\n <div nz-row [nzGutter]=\"[8,8]\">\n @for (item of group.children; track item.component) {\n <div nz-col [nzSpan]=\"item.span\">\n <nz-card nzSize=\"small\" nzHoverable [nzCover]=\"coverTemplate\" [nzTitle]=\"item.component\"\n [nzExtra]=\"item.moreExamples? more:''\" [nzBodyStyle]=\"{padding:0}\" (click)=\"onClick(item.example)\"\n [draggable]=\"selectMode()=='drag'\" (mouseenter)=\"preloadDragElement(item.example,item)\"\n (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragEnd($event)\">\n </nz-card>\n <ng-template #coverTemplate>\n <img style=\"margin: 4px;object-fit: contain;\" [style.height.px]=\"item.height\"\n [src]=\"item.coverImg\" />\n </ng-template>\n <ng-template #more>\n <a nz-button nzType=\"link\" nzSize=\"small\" nz-dropdown [nzDropdownMenu]=\"examples\">\n <nz-icon nzType=\"ellipsis\"></nz-icon>\n </a>\n <nz-dropdown-menu #examples=\"nzDropdownMenu\">\n <ul nz-menu nzSelectable>\n @for (item of item.moreExamples; track item.name) {\n <li nz-menu-item (click)=\"onClick(item)\" [draggable]=\"selectMode()=='drag'\"\n (mouseenter)=\"preloadDragElement(item)\" (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\">{{item.name}}</li>\n }\n </ul>\n </nz-dropdown-menu>\n </ng-template>\n </div>\n }\n </div>\n </nz-collapse-panel>\n }\n</nz-collapse>\n<div class=\"dragElementContainer\">\n <div #dragElement>\n @if (dragOptions()) {\n <ng-container [axisDynamic]=\"dragOptions()\" [standalone]=\"true\"></ng-container>\n {{dragOptions().type}}\n }\n </div>\n</div>","import { Example, isEquals } from \"ngx-axis-appforge/core\";\nimport { Design } from \"./design\";\n\nexport class ShortcutKey {\n\n constructor(private design: Design) { }\n\n private cutNodeIds?: string[];\n\n onKeyPress(e: KeyboardEvent) {\n const isInput = (e.target as HTMLElement).matches(\n 'input:not([disabled]), textarea:not([disabled]), [contenteditable=\"true\"]'\n );\n if (isInput) {\n return;\n }\n let event;\n if (e.key == \"Backspace\") {\n event = \"delete\";\n } else if (e.key == \"z\" && (e.metaKey || e.ctrlKey) && !e.shiftKey) {\n event = \"undo\";\n } else if (e.key.toLowerCase() == \"z\" && (e.metaKey || e.ctrlKey) && e.shiftKey) {\n event = \"redo\";\n } else if (e.key == \"c\" && e.metaKey && e.ctrlKey) {\n event = \"onlyPreview\";\n } else if (e.key == \"r\" && e.metaKey && e.ctrlKey) {\n event = \"forceRender\";\n } else if (e.key == \"h\" && e.metaKey && e.ctrlKey) {\n event = \"shortcutKeysInfo\";\n } else if (e.key == \"c\" && (e.metaKey || e.ctrlKey) && (!getSelection()?.toString() || getSelection()?.anchorNode == document.body)) {\n event = \"copy\";\n } else if (e.key == \"x\" && (e.metaKey || e.ctrlKey)) {\n event = \"cut\";\n } else if (e.key == \"v\" && (e.metaKey || e.ctrlKey)) {\n event = \"paste\";\n }\n // console.log(event, e.key, \"meta\", e.metaKey, \"ctrl\", e.ctrlKey, \"shift\", e.shiftKey)\n if (event) {\n e.preventDefault();\n e.stopPropagation();\n this.doEvent(event);\n }\n }\n\n private doEvent(event: string) {\n switch (event) {\n case \"delete\":\n this.design.tree.removeSelected();\n this.design.element.nativeElement.focus();\n break;\n case \"undo\":\n this.design.tools.undo();\n break;\n case \"redo\":\n this.design.tools.redo();\n break;\n case \"onlyPreview\":\n this.onlyPreview();\n break;\n case \"forceRender\":\n this.forceRender();\n break;\n case \"shortcutKeysInfo\":\n this.shortcutKeysInfo();\n break;\n case \"copy\":\n this.copy();\n break;\n case \"cut\":\n this.cut();\n break;\n case \"paste\":\n this.paste();\n break;\n }\n }\n\n onlyPreview() {\n this.design.tools.onlyPreview.set(!this.design.tools.onlyPreview());\n }\n forceRender() {\n this.design.preview.forceRender();\n }\n shortcutKeysInfo() {\n this.design.tools.shortcutKeysModal.set(true);\n }\n\n copy() {\n let options = Array.from(this.design.tree.selectedNodeids()).map(nodeId => this.design.optionsNodes.get(nodeId)).map(node => node?.options);\n if (options.length == 1) {\n options = options[0];\n }\n this.design.clipboard.copy(JSON.stringify(options, null, 2));\n }\n\n cut() {\n const selected = Array.from(this.design.tree.selectedNodeids());\n this.cutNodeIds = selected;\n const options = selected.map(nodeId => this.design.optionsNodes.get(nodeId)).map(node => node?.options);\n this.design.clipboard.copy(JSON.stringify(options, null, 2));\n }\n\n async paste() {\n try {\n const text = await navigator.clipboard.readText();\n if (text) {\n const j = JSON.parse(text);\n let objs: any[] | undefined;\n if (Array.isArray(j)) {\n objs = j;\n } else {\n objs = [j];\n }\n if (objs?.length && this.design.tree.selectedNodeids().length > 0) {\n if (this.cutNodeIds?.length && isEquals(objs.map(r => r.id), this.cutNodeIds)) {\n this.design.onNodesMove(this.cutNodeIds);\n this.cutNodeIds = undefined;\n } else {\n this.design.onPaste(objs);\n }\n }\n }\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import { signal } from \"@angular/core\";\nimport { ValueAccessOptions } from \"ngx-axis-appforge/core\";\n\nexport class DesignOptions extends ValueAccessOptions {\n\n readonly injectData = signal<any>({});\n readonly injectFunc = signal<{ [name: string]: (Function | { func: Function, type: string }) } | undefined>(undefined);\n readonly allPermissions = signal<{ [permission: string]: string }>({});\n readonly httpContextData = signal<any>(undefined);\n readonly fileBaseUrl = signal<string>(\"\");\n\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, model, signal } from '@angular/core';\nimport { Design } from '../design';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\nimport { copy, HowLongPipe } from 'ngx-axis-appforge/core';\n\n@Component({\n selector: 'axis-toolbar',\n imports: [NzModalModule, NzTableModule, NzFlexModule, NzIconModule, NzTooltipModule, NzButtonModule, NzPopoverModule, HowLongPipe],\n templateUrl: './toolbar.html',\n styleUrl: './toolbar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toolbar {\n\n readonly design = inject(Design);\n readonly cdr = inject(ChangeDetectorRef);\n readonly onlyPreview = signal(false);\n readonly shortcutKeysModal = model(false);\n\n readonly history: { options: any, time: Date, desc: string }[] = [];\n historyIndex = 0;\n\n putHistory(options: any, desc: string) {\n if (this.historyIndex > 0) {\n this.history.splice(0, this.historyIndex);\n this.historyIndex = 0;\n }\n this.history.unshift({ options: copy(options, true), time: new Date(), desc });\n if (this.history.length > 50) {\n this.history.pop();\n }\n this.cdr.markForCheck();\n }\n\n undo() {\n if (this.historyIndex < this.history.length - 1) {\n this.historyIndex++;\n this.design.onChangeOptionsConfig({ value: copy(this.history[this.historyIndex].options, true), putHistory: false });\n this.cdr.markForCheck();\n }\n }\n\n redo() {\n if (this.historyIndex > 0) {\n this.historyIndex--;\n this.design.onChangeOptionsConfig({ value: copy(this.history[this.historyIndex].options, true), putHistory: false });\n this.cdr.markForCheck();\n }\n }\n\n switchHistory(index: number) {\n if (index != this.historyIndex && index > -1 && index < this.history.length) {\n this.historyIndex = index;\n this.design.onChangeOptionsConfig({ value: copy(this.history[this.historyIndex].options, true), putHistory: false });\n this.cdr.markForCheck();\n }\n }\n\n}\n","<div class=\"tools\" nz-flex nzGap=\"4px\">\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"快捷键说明\"\n (click)=\"shortcutKeysModal.set(true)\">\n <nz-icon nzType=\"exclamation-circle\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"编辑历史\" nz-popover\n [nzPopoverTitle]=\"historyTitle\" nzPopoverTrigger=\"click\" [nzPopoverContent]=\"historyTemp\"\n nzPopoverPlacement=\"bottom\" nzPopoverOverlayClassName=\"history-popover\">\n <nz-icon nzType=\"history\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" [nz-tooltip]=\"onlyPreview()?'恢复':'放大'\"\n (click)=\"onlyPreview.set(!onlyPreview())\">\n <nz-icon [nzType]=\"onlyPreview()?'fullscreen-exit':'fullscreen'\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"重新载入\"\n (click)=\"design.preview.forceRender()\">\n <nz-icon nzType=\"reload\" />\n </button>\n</div>\n\n<ng-template #historyTitle>\n <div nz-flex>\n <div style=\"flex:1\">编辑历史</div>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"撤销\" (click)=\"undo()\"\n [disabled]=\"historyIndex==history.length-1\">\n <nz-icon nzType=\"undo\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"重做\" (click)=\"redo()\"\n [disabled]=\"historyIndex==0\">\n <nz-icon nzType=\"redo\" nzTheme=\"outline\" />\n </button>\n </div>\n</ng-template>\n\n<ng-template #historyTemp>\n <div nz-flex nzVertical nzGap=\"6px\" style=\"max-height: 300px;overflow: auto;\">\n @for (item of history; track item.time;let i=$index) {\n <div nz-flex nzAlign=\"center\" [class.active]=\"i == historyIndex\" class=\"history-item\" (click)=\"switchHistory(i)\">\n <div style=\"width: 20px;\">\n @if (i == historyIndex) {\n <nz-icon nzType=\"aim\" nzTheme=\"outline\" />\n }\n </div>\n <div nz-flex nzVertical>\n <span>{{item.desc}}</span>\n <span style=\"font-size: 10px;color:rgba(0,0,0,0.38)\"> {{item.time | axisHowLong}}</span>\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n<nz-modal [(nzVisible)]=\"shortcutKeysModal\" nzTitle=\"快捷键说明\" nzDraggable [nzOkText]=\"null\" nzCancelText=\"关闭\"\n (nzOnCancel)=\"shortcutKeysModal.set(false)\">\n <ng-container *nzModalContent>\n <nz-table nzTemplateMode nzSize=\"small\">\n <thead>\n <tr>\n <th>功能</th>\n <th>快捷键</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>查看快捷键说明</td>\n <td>Ctrl Meta H</td>\n </tr>\n <tr>\n <td>多选&反选</td>\n <td>Ctrl 单击 / Meta 单击</td>\n </tr>\n <tr>\n <td>复制</td>\n <td>Ctrl C</td>\n </tr>\n <tr>\n <td>剪切</td>\n <td>Ctrl X</td>\n </tr>\n <tr>\n <td>粘贴</td>\n <td>Ctrl V</td>\n </tr>\n <tr>\n <td>撤销</td>\n <td>Ctrl Z</td>\n </tr>\n <tr>\n <td>重做</td>\n <td>Ctrl Shift Z</td>\n </tr>\n <tr>\n <td>预览放大&恢复</td>\n <td>Ctrl Meta C</td>\n </tr>\n <tr>\n <td>重新载入</td>\n <td>Ctrl Meta R</td>\n </tr>\n </tbody>\n </nz-table>\n </ng-container>\n</nz-modal>","import { ChangeDetectionStrategy, Component, ComponentRef, computed, ElementRef, HostListener, inject, Injector, model, OnDestroy, signal, ViewChild, ViewContainerRef } from '@angular/core';\nimport { NzSplitterModule } from 'ng-zorro-antd/splitter';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { Tree } from './tree/tree';\nimport { Preview } from './preview/preview';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { AXIS_COMPONENTS_LOADER_TOKEN, ValueAccess, FunFieldValueBase, ScopeInfo, NextInfo, OptionsNode, AXIS_DESIGN_OPTIONS_NODE_FOR_MENU, AXIS_DESIGN_ALL_PERMISSIONS_TOKEN, DynamicDirective, AXIS_DESIGN_SCOPE_INFOS_GETTER_TOKEN, Example, AXIS_DESIGN_COMPONENT_INFO_FOR_SETTING_TOKEN, EventHandlerDesc, AXIS_INJECT_FUNC_TOKEN, copy, AXIS_DESIGN_CHOOSE_COMPONENT_FUNC_TOKEN, DesignConfig, OptionsChangeEvent, BaseOptions, Base, AXIS_DESIGN_COMPONENT_REF_GETTER_TOKEN, AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN, AXIS_HTTP_CONTEXT_DATA_TOKEN, AXIS_DESIGN_CAN_LOOP_TOKEN, AXIS_DESIGN_SCOPE_INFOS_REFRESH_TOKEN } from 'ngx-axis-appforge/core';\nimport { Cmplib } from './cmplib/cmplib';\nimport { FormsModule } from '@angular/forms';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { ShortcutKey } from './shortcut-key';\nimport { DesignOptions } from './design.options';\nimport { BehaviorSubject, debounceTime, filter, from, map, merge, NEVER, Observable, of, Subject, switchMap, take } from 'rxjs';\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\nimport { Toolbar } from './toolbar/toolbar';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ClipboardService } from 'ngx-clipboard';\n\n@Component({\n selector: 'axis-design',\n imports: [NzSplitterModule, NzTabsModule, Preview, Tree, NzFlexModule, Cmplib, FormsModule, NzEmptyModule, DynamicDirective, NzDrawerModule, Toolbar],\n templateUrl: './design.html',\n styleUrl: './design.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n tabindex: \"-1\",\n autofocus: \"true\",\n }\n})\nexport class Design extends ValueAccess<DesignOptions> implements OnDestroy {\n\n constructor() {\n super();\n this.addSubscribe(this.changeSubject\n .pipe(debounceTime(300))\n .subscribe((value) => this.onChangeOptionsConfig(value)))\n }\n\n override options = new DesignOptions();\n\n element = inject(ElementRef);\n clipboard = inject(ClipboardService);\n loader = inject(AXIS_COMPONENTS_LOADER_TOKEN);\n injectDataObs = toObservable(this.options.injectData);\n private funcByInject = inject(AXIS_INJECT_FUNC_TOKEN, { optional: true });\n readonly injectFunc = computed(() => {\n if (this.options.injectFunc()) {\n return this.options.injectFunc();\n }\n if (this.funcByInject instanceof BehaviorSubject) {\n return this.funcByInject.value;\n } else {\n return this.funcByInject ?? {};\n }\n });\n\n treeNode = signal<OptionsNode | null | undefined>(undefined);\n loadAndOptions = signal<[Promise<any>, any] | undefined>(undefined);\n\n @ViewChild(\"menu\", { static: true, read: ViewContainerRef })\n menu!: ViewContainerRef;\n readonly chooseComponentVisible = model(false);\n readonly chooseComponentSubject = new Subject<Example | undefined>();\n readonly chooseComponentTags = signal<string[]>([]);\n\n readonly refreshScopeInfosSubject = new Subject<string | undefined>();\n\n cacheSized: [number, number] = [300, 300];\n @ViewChild(\"setting\", { static: true, read: ViewContainerRef })\n setting!: ViewContainerRef;\n settingRef?: ComponentRef<FunFieldValueBase>;\n settingOptionsNodeId?: string;\n settingOptionsStr = model(\"\");\n\n @ViewChild(\"preview\", { static: true })\n preview!: Preview;\n\n @ViewChild(\"tree\", { static: true })\n tree!: Tree;\n\n @ViewChild(\"codeEditor\")\n codeEditor?: DynamicDirective;\n\n @ViewChild(\"tools\", { static: true })\n tools!: Toolbar;\n\n readonly shortcutKey = new ShortcutKey(this);\n @HostListener(\"keydown\", ['$event'])\n onKeyPress(e: KeyboardEvent) {\n this.shortcutKey.onKeyPress(e);\n }\n\n readonly optionsNodes = new Map<string, OptionsNode>();\n readonly optionsNodeScopes = new Map<string, OptionsNode[]>();\n readonly scopeInfos = new Map<string, ScopeInfo>();\n\n readonly componentsInfo = new Map<string, { component: string, componentName: string, eventHandlerDescs: { [name: string]: EventHandlerDesc } }>\n readonly componentsCounter = new Map<string, number>();\n readonly scopInfoSubjects = new Map<string, BehaviorSubject<ScopeInfo[]>>();\n\n readonly changeSubject = new Subject<OptionsChangeEvent>();\n\n override setInitValue(value: any): void {\n super.setInitValue(value);\n this.tools.putHistory(value, \"初始化\");\n this.render(value);\n }\n\n override writeValue(value: any): void {\n super.writeValue(value);\n this.tools.putHistory(value, \"初始化\");\n this.render(value);\n }\n\n async inspect(nextInfo: NextInfo): Promise<OptionsNode | undefined> {\n if (!nextInfo.currentObject?.component) {\n return;\n }\n const config: DesignConfig = await this.loader.loadComponent(`${nextInfo.currentObject.component}/design`);\n if (!this.componentsInfo.has(nextInfo.currentObject.component)) {\n this.componentsInfo.set(nextInfo.currentObject.component, { component: nextInfo.currentObject.component, componentName: config.componentName, eventHandlerDescs: config.eventHandlerDescs! });\n }\n if (!this.componentsCounter.has(nextInfo.currentObject.component)) {\n this.componentsCounter.set(nextInfo.currentObject.component, 0);\n }\n this.componentsCounter.set(nextInfo.currentObject.component, this.componentsCounter.get(nextInfo.currentObject.component)! + 1);\n const res = config.buildOptionsNodes?.(nextInfo);\n if (res) {\n res.treeNode.canLoop = nextInfo.canLoop ?? false;\n if (nextInfo.canLoop && res.treeNode.options?.loop) {\n const newScope: ScopeInfo = {\n scopeId: res.treeNode.id + \".loop\",\n scopeName: \"循环\",\n parentScopeId: nextInfo.scopeId,\n ds: {\n loopRow: res.treeNode.options.loopTarget?.[0] ?? \"示例数据\"\n },\n };\n res.newScopes ??= [];\n res.newScopes.push(newScope);\n res.treeNode.scopeId = newScope.scopeId;\n }\n let nodes = [res.treeNode];\n while (nodes.length) {\n let next: OptionsNode[] = [];\n for (const node of nodes) {\n this.optionsNodes.set(node.id!, node);\n if (node.children) {\n next = next.concat(node.children);\n }\n nodes = next;\n }\n }\n if (res.treeNode.scopeId) {\n if (!this.optionsNodeScopes.has(res.treeNode.scopeId)) {\n this.optionsNodeScopes.set(res.treeNode.scopeId, []);\n }\n this.optionsNodeScopes.get(res.treeNode.scopeId)!.push(res.treeNode);\n }\n if (res.newScopes) {\n for (const scope of res.newScopes) {\n this.scopeInfos.set(scope.scopeId, scope);\n }\n }\n if (res.next?.length) {\n for (let r of res.next) {\n if (Array.isArray(r.parentObject)) {\n for (let i = 0; i < r.parentObject.length; i++) {\n r = copy(r)\n r.indexOfParent = i;\n r.currentObject = r.parentObject[i];\n const parent = this.optionsNodes.get(r.parentId!);\n const child = await this.inspect(r);\n if (child) {\n parent?.children?.push(child);\n }\n }\n } else if (r.indexOfParent != undefined) {\n r.currentObject = r.parentObject[r.indexOfParent];\n const child = await this.inspect(r);\n if (child) {\n this.optionsNodes.get(r.parentId!)?.children?.push(child);\n }\n }\n }\n }\n }\n return res?.treeNode;\n }\n\n onChangeOptionsConfig(e: OptionsChangeEvent) {\n this.reset();\n let value = e.value;\n if (value === undefined) {\n value = this.value();\n }\n this.value.set(copy(value, true));\n this.render(this.value());\n const putHistory = e.putHistory ?? true;\n this.loadAndOptions()?.[0].then(() => {\n if (!putHistory && this.settingOptionsNodeId) {\n const node = this.optionsNodes.get(this.settingOptionsNodeId);\n if (node) {\n this.settingRef?.instance.writeValue(node.options);\n }\n this.syncToCode();\n }\n if (e.nextNodeId) {\n this.tree.selectByNodeIds([e.nextNodeId]);\n this.preview.selectByNodeIds([e.nextNodeId]);\n if (e.sameSetting) {\n this.settingOptionsNodeId = e.nextNodeId;\n } else {\n this.loadSetting(e.nextNodeId);\n }\n }\n this.refreshScopeInfosSubject.next(undefined);\n });\n this.onChange?.(this.value());\n if (putHistory) {\n this.tools.putHistory(this.value(), e.historyDesc ?? \"未知变更\");\n }\n\n }\n\n render(value: any) {\n this.loadAndOptions.set([this.inspect({ currentObject: value }).then(v => {\n this.treeNode.set(v ?? null);\n return v;\n }), value])\n }\n\n onSettingChange(settingValue: any) {\n if (this.settingOptionsNodeId) {\n const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId!);\n if (optionsNode) {\n if (optionsNode.isRoot) {\n Object.assign(this.value(), settingValue);\n } else {\n optionsNode.updateOptions(settingValue);\n }\n this.changeSubject.next({ historyDesc: `设置属性${optionsNode.name}`, nextNodeId: optionsNode.id, sameSetting: true });\n }\n } else if (this.treeNode() == null) {\n this.value.set(settingValue);\n this.changeSubject.next({ historyDesc: \"修改配置\", nextNodeId: settingValue.id });\n }\n }\n\n onTreeSelect(nodeIds: string[]) {\n this.preview.selectByNodeIds(nodeIds);\n if (nodeIds.length == 1) {\n this.updateScopeWithNodeId(nodeIds[0]);\n this.loadSetting(nodeIds[0]);\n } else {\n this.settingOptionsNodeId = undefined;\n this.resetSetting();\n }\n }\n\n onPreviewSelect(nodeIds: string[]) {\n this.menu.clear();\n this.tree.selectByNodeIds(nodeIds);\n if (nodeIds.length == 1) {\n this.updateScopeWithNodeId(nodeIds[0]);\n this.loadSetting(nodeIds[0]);\n } else {\n this.settingOptionsNodeId = undefined;\n this.resetSetting();\n }\n let expandIds: string[] = [];\n for (const nodeid of nodeIds) {\n expandIds = expandIds.concat(this.getAllParentNodes(nodeid).map(n => n.id!));\n }\n this.tree.expandByNodeIds(expandIds);\n }\n\n private updateScopeWithNodeId(nodeId: string) {\n let scopeId = this.optionsNodes.get(nodeId)?.scopeId;\n while (scopeId && this.scopeInfos.has(scopeId)) {\n this.preview.updateScopeWithSelectedElement(scopeId);\n scopeId = this.scopeInfos.get(scopeId)?.parentScopeId;\n }\n }\n\n loadSetting(nodeId: string, force = false) {\n if (nodeId && this.optionsNodes.has(nodeId)) {\n if (!force) {\n if (this.settingOptionsNodeId == nodeId) {\n return;\n } else if (this.settingOptionsNodeId) {\n const oldNode = this.optionsNodes.get(this.settingOptionsNodeId)!;\n const newNode = this.optionsNodes.get(nodeId)!;\n if (newNode.canSetting && oldNode && oldNode.parentId == newNode.parentId && oldNode.settingType == newNode.settingType) {\n this.settingOptionsNodeId = nodeId;\n this.settingOptionsStr.set(JSON.stringify(newNode.options, null, \" \"));\n this.settingRef?.instance.writeValue(newNode.options);\n this.refreshScopeInfosSubject.next(undefined);\n return;\n }\n }\n }\n this.resetSetting();\n const optionsNode = this.optionsNodes.get(nodeId)!;\n if (!optionsNode.canSetting) {\n return;\n }\n this.settingOptionsNodeId = nodeId;\n this.settingOptionsStr.set(JSON.stringify(optionsNode.options, null, \" \"));\n if (optionsNode.settingType) {\n const injector = Injector.create({\n providers: [\n { provide: AXIS_DESIGN_CAN_LOOP_TOKEN, useValue: optionsNode.canLoop },\n { provide: AXIS_DESIGN_SCOPE_INFOS_REFRESH_TOKEN, useValue: this.refreshScopeInfosSubject },\n { provide: AXIS_DESIGN_SCOPE_INFOS_GETTER_TOKEN, useValue: this.buildScopeInfosGetter() },\n { provide: AXIS_DESIGN_COMPONENT_INFO_FOR_SETTING_TOKEN, useValue: this.buildComponentInfoForSetting(optionsNode) },\n { provide: AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN, useFactory: () => this.buildComponentRefForSetting(optionsNode) },\n { provide: AXIS_DESIGN_COMPONENT_REF_GETTER_TOKEN, useValue: (nodeId: string) => this.preview.getComponentRef(nodeId) },\n { provide: AXIS_DESIGN_ALL_PERMISSIONS_TOKEN, useValue: this.options.allPermissions() },\n { provide: AXIS_INJECT_FUNC_TOKEN, useValue: this.injectFunc() },\n { provide: AXIS_HTTP_CONTEXT_DATA_TOKEN, useValue: this.options.httpContextData() }\n ]\n })\n this.settingRef = this.setting.createComponent(optionsNode.settingType, { injector: injector });\n this.settingRef.instance.onChange = this.onSettingChange.bind(this);\n this.settingRef.instance.writeValue(optionsNode.options);\n }\n } else {\n this.resetSetting();\n }\n }\n\n private buildScopeInfosGetter(): (scopeId?: string) => BehaviorSubject<ScopeInfo[]> {\n return (scopeId?: string): BehaviorSubject<ScopeInfo[]> => {\n const node = this.optionsNodes.get(this.settingOptionsNodeId!);\n scopeId ??= node?.scopeId;\n if (scopeId) {\n if (!this.scopInfoSubjects.has(scopeId)) {\n this.scopInfoSubjects.set(scopeId, this.buildScopeInfoSubject(scopeId));\n }\n return this.scopInfoSubjects.get(scopeId)!;\n }\n return new BehaviorSubject<ScopeInfo[]>([]);\n }\n }\n\n private buildScopeInfoSubject(scopeId: string | undefined): BehaviorSubject<ScopeInfo[]> {\n const scopeObs: Observable<{ scopeInfo: ScopeInfo, index: number }>[] = [];\n const scopeInfosOrder: string[] = [];\n while (scopeId && this.scopeInfos.has(scopeId)) {\n const scopeInfo = this.scopeInfos.get(scopeId)!;\n scopeInfosOrder.push(scopeId);\n const scopeSubject = this.preview.getAndUpdateScopeSubject(scopeId);\n scopeObs.push(scopeSubject.pipe(\n filter(s => !!s),\n switchMap(s => {\n return merge(new Observable(sub => sub.next(s.getSnapshoptAllWithScopeId(s.axisScope()))), s.getAllWithScopeId(s.axisScope()) ?? NEVER);\n }),\n filter(realDs => !!realDs && this.scopeInfos.has(scopeInfo.scopeId)),\n map(realDs => {\n const _scopeInfo = this.scopeInfos.get(scopeInfo.scopeId)!;\n return {\n scopeInfo: { ..._scopeInfo, ds: { ..._scopeInfo.ds, ...realDs } },\n index: scopeInfosOrder.indexOf(scopeInfo.scopeId),\n };\n })\n ));\n scopeId = scopeInfo.parentScopeId;\n }\n const subject = new BehaviorSubject<ScopeInfo[]>([]);\n const res: ScopeInfo[] = scopeInfosOrder.map(scopeId => this.scopeInfos.get(scopeId)!);\n this.addSubscribe(merge(...scopeObs).pipe(map(row => {\n res[row.index] = row.scopeInfo;\n return [...res];\n })).subscribe(subject));\n return subject;\n }\n\n private buildComponentInfoForSetting(optionsNode: OptionsNode): { component: string, componentName: string, nodes: OptionsNode[], eventHandlerDescs: { [event: string]: EventHandlerDesc } }[] {\n const componentInfo: Map<string, { component: string, componentName: string, nodes: OptionsNode[], eventHandlerDescs: { [event: string]: EventHandlerDesc } }> = new Map();\n let scopeId = optionsNode.scopeId;\n while (scopeId) {\n let nodes = this.optionsNodeScopes.get(scopeId)!\n if (nodes) {\n for (const node of nodes) {\n const component = node.options.component;\n if (!componentInfo.has(component)) {\n const info = this.componentsInfo.get(component)!;\n componentInfo.set(component, { component: info.component, componentName: info.componentName, nodes: [], eventHandlerDescs: info.eventHandlerDescs ?? {} })\n }\n componentInfo.get(component)!.nodes.push(node);\n }\n }\n scopeId = this.scopeInfos.get(scopeId)?.parentScopeId;\n }\n return Array.from(componentInfo.values());\n }\n\n private buildComponentRefForSetting(node: OptionsNode | undefined): { ref?: ComponentRef<Base<BaseOptions>>, options: any } {\n while (node && !node.options.component) {\n if (node.parentId) {\n node = this.optionsNodes.get(node.parentId);\n } else {\n break;\n }\n }\n if (node) {\n return {\n options: node.options,\n ref: this.preview.getComponentRef(node.id)\n }\n }\n return { options: undefined };\n }\n\n onContextMenu(e: MouseEvent, nodeId: string) {\n const node = this.optionsNodes.get(nodeId);\n if (node?.contextMenu) {\n this.tree.selectOne(nodeId, { sendEvent: false });\n const parent = node.isRoot ? undefined : this.optionsNodes.get(node.parentId!)\n const injector = Injector.create({\n providers: [\n { provide: AXIS_DESIGN_OPTIONS_NODE_FOR_MENU, useValue: { current: node, parent } },\n { provide: AXIS_DESIGN_CHOOSE_COMPONENT_FUNC_TOKEN, useValue: this.chooseComponent.bind(this) },\n ]\n })\n this.menu.clear();\n const ref = this.menu.createComponent(node.contextMenu, { injector: injector });\n ref.instance.contextMenu(e);\n ref.instance.onChange = async (e) => {\n this.onChangeOptionsConfig(e);\n }\n }\n }\n\n chooseComponent(...tags: string[]): Observable<{ options?: any, config?: DesignConfig }> {\n this.chooseComponentTags.set(tags);\n this.chooseComponentVisible.set(true);\n return this.chooseComponentSubject.asObservable()\n .pipe(take(1), map((example) => example ? this.replaceIdFun(example.options) : null),\n switchMap(options => options ? from(this.loader.loadComponent(`${options.component}/design`)).pipe(map(config => ({ options, config }))) : of({})));\n }\n\n private genNewComponentId(component: string, offset = 1, existsIds?: Set<string>): { id: string, offset: number } {\n let id: string;\n if (this.componentsCounter.has(component)) {\n id = `${component}#${this.componentsCounter.get(component)! + offset}`\n } else {\n id = `${component}#${offset}`\n }\n if (existsIds?.has(id) || this.optionsNodes.has(id)) {\n return this.genNewComponentId(component, offset + 1, existsIds);\n }\n return { id, offset };\n }\n\n onCmplibDragStart(example: Example, element: HTMLElement) {\n const options = this.replaceIdFun(example.options);\n const optionsNode = new OptionsNode({\n canDrag: true,\n dragType: \"component\",\n rootOptions: options,\n name: example.name\n });\n this.optionsNodes.set(optionsNode.id, optionsNode);\n this.preview.dragForOuter(optionsNode.toElementNode({ element }));\n }\n\n async onCmplibDragEnd() {\n const nodeId = this.preview.dragEndForOuter();\n if (nodeId) {\n await this.loadAndOptions()![0];\n this.tree.selectByNodeIds([nodeId]);\n this.preview.selectByNodeIds([nodeId]);\n this.loadSetting(nodeId);\n }\n }\n\n onPaste(objs: any[]) {\n const nodes: OptionsNode[] = []\n for (const obj of objs) {\n if (obj && obj.hasOwnProperty(\"id\") && obj.hasOwnProperty(\"component\")) {\n const options = this.replaceIdFun(obj);\n const optionsNode = new OptionsNode({\n canDrag: true,\n dragType: \"component\",\n rootOptions: options\n });\n nodes.push(optionsNode);\n this.optionsNodes.set(optionsNode.id, optionsNode);\n } else {\n nodes.push(new OptionsNode({\n canDrag: true,\n rootOptions: obj\n }));\n }\n }\n this.tree.addNodeForSelected(nodes, undefined, `粘贴${nodes.length}个组件`);\n }\n\n replaceIdFun(example: any): any {\n const idMap = new Map<string, string>();\n const idMap2 = new Map<string, string>();\n this.buildIdMap(example, idMap, idMap2);\n let exampleStr = JSON.stringify(example);\n while (idMap.size > 0) {\n idMap.forEach((newId, oldId) => {\n exampleStr = exampleStr.replaceAll(oldId, newId);\n idMap.delete(oldId);\n });\n }\n while (idMap2.size > 0) {\n idMap2.forEach((newId, oldId) => {\n exampleStr = exampleStr.replaceAll(oldId, newId);\n idMap2.delete(oldId);\n });\n }\n return JSON.parse(exampleStr);\n }\n\n private buildIdMap(obj: any, idMap: Map<string, string>, idMap2: Map<string, string>, globalOffset = 0, offsetMap = new Map<string, number>()): number {\n if (this.isComponentObj(obj)) {\n const offset = (offsetMap.get(obj.component) ?? 0) + 1;\n const res = this.genNewComponentId(obj.component, offset, new Set(idMap.values()))\n offsetMap.set(obj.component, res.offset);\n const tempId = `__temp__id__${globalOffset++}`;\n idMap.set(obj.id, tempId);\n idMap2.set(tempId, res.id);\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n globalOffset = this.buildIdMap(obj[i], idMap, idMap2, globalOffset, offsetMap);\n }\n } else if (typeof obj == \"object\") {\n for (const en of Object.entries(obj)) {\n globalOffset = this.buildIdMap(en[1], idMap, idMap2, globalOffset, offsetMap);\n }\n }\n }\n return globalOffset;\n }\n\n private isComponentObj(obj: any): boolean {\n return obj && obj.hasOwnProperty(\"id\") && obj.hasOwnProperty(\"component\");\n }\n\n onNodesMove(nodeIds: string[]) {\n if (this.tree.selectedNodeids().length == 1) {\n this.tree.addNodeForSelected(nodeIds.map(id => this.optionsNodes.get(id)!), true, `粘贴${nodeIds.length}个组件`);\n }\n }\n\n onEditorChange(optionsStr: string) {\n try {\n const options = JSON.parse(optionsStr);\n this.onSettingChange(options);\n } catch (_) { }\n }\n\n syncToSetting() {\n if (this.settingOptionsNodeId) {\n const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId);\n if (optionsNode) {\n if (optionsNode.canSetting && this.settingRef?.componentType == optionsNode.settingType) {\n this.settingRef?.instance?.writeValue(optionsNode.options);\n } else {\n this.loadSetting(optionsNode.id, true);\n }\n }\n }\n }\n\n syncToCode() {\n if (this.settingOptionsNodeId) {\n const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId);\n if (optionsNode) {\n this.settingOptionsStr.set(JSON.stringify(optionsNode.options, null, \" \"));\n }\n }\n setTimeout(() => {\n this.layoutEditor();\n });\n }\n\n layoutEditor(e?: number[]) {\n if (e) {\n if (e[0] > 0) {\n this.cacheSized[0] = e[0];\n }\n if (e[2] > 0) {\n this.cacheSized[1] = e[2];\n }\n }\n this.codeEditor?.onEvents?.({\n target: \"component\",\n name: \"layout\",\n })?.subscribe();\n }\n\n private resetSetting() {\n this.settingOptionsNodeId = undefined;\n this.setting.clear();\n this.settingOptionsStr.set(\"\");\n }\n\n private reset(): void {\n this.optionsNodes.clear();\n this.componentsInfo.clear();\n this.optionsNodeScopes.clear();\n this.scopeInfos.clear();\n this.componentsCounter.clear();\n }\n\n private getAllParentNodes(node: OptionsNode | string | undefined, parentNodes: OptionsNode[] = []): OptionsNode[] {\n if (typeof node == \"string\") {\n node = this.optionsNodes.get(node);\n }\n if (node?.parentId) {\n const parent = this.optionsNodes.get(node.parentId);\n if (parent) {\n parentNodes.push(parent);\n this.getAllParentNodes(parent, parentNodes);\n }\n }\n return parentNodes;\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n for (const s of this.scopInfoSubjects.values()) {\n s.unsubscribe();\n }\n }\n}","<nz-splitter (nzResize)=\"layoutEditor($event)\">\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[0]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\">\n <nz-tabs nzCentered>\n <nz-tab nzTitle=\"组件树\">\n <axis-design-tree style=\"margin-bottom: 300px;\" #tree [node]=\"treeNode()\" [optionsNodes]=\"optionsNodes\"\n (onSelect)=\"onTreeSelect($event)\" (onChange)=\"onChangeOptionsConfig($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"></axis-design-tree>\n </nz-tab>\n <nz-tab nzTitle=\"组件库\">\n <axis-cmplib selectMode=\"drag\" (dragStart)=\"onCmplibDragStart($event.example,$event.element)\"\n (dragEnd)=\"onCmplibDragEnd()\"></axis-cmplib>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n <nz-splitter-panel>\n <div nz-flex nzVertical style=\"height: 100%;width: 100%;position: relative;\">\n <h2 style=\"text-align: center;margin-top: 4px;\">预览</h2>\n <axis-toolbar #tools></axis-toolbar>\n <axis-design-preview #preview style=\"flex:1;overflow: auto;\" [loadAndOptions]=\"loadAndOptions()\"\n [optionsNodes]=\"optionsNodes\" [injectData]=\"injectDataObs\" [injectFunc]=\"injectFunc()\"\n [httpContextData]=\"options.httpContextData()\" [fileBaseUrl]=\"options.fileBaseUrl()\"\n (onChange)=\"onChangeOptionsConfig($event)\" (onSelect)=\"onPreviewSelect($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"\n (onForceRender)=\"triggeEvents('forceRender').subscribe()\"></axis-design-preview>\n </div>\n </nz-splitter-panel>\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[1]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\" style=\"position: relative;\">\n <nz-tabs nzCentered style=\"height: 100%;\">\n <nz-tab nzTitle=\"属性设置\" (nzClick)=\"syncToSetting()\">\n <ng-container #setting></ng-container>\n <div style=\"height: 300px;\"></div>\n @if (!settingOptionsStr()){\n <nz-empty style=\"height: 300px;\" nzNotFoundContent=\"请先选择一个组件\"></nz-empty>\n }\n </nz-tab>\n <nz-tab nzTitle=\"代码\" nzForceRender (nzSelect)=\"syncToCode();\">\n <ng-container #codeEditor=\"axisDynamic\"\n [axisDynamic]=\"{component:'axis-components/editor',inuse:true,mode:'json',readonly:!settingOptionsStr() && treeNode()!=null,otherOptions:{tabSize:2}}\"\n [standalone]=\"true\" [(ngModel)]=\"settingOptionsStr\"\n (ngModelChange)=\"onEditorChange($event)\"></ng-container>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n</nz-splitter>\n<ng-container #menu></ng-container>\n<nz-drawer [(nzVisible)]=\"chooseComponentVisible\" nzTitle=\"选择组件\" [nzBodyStyle]=\"{padding:0}\"\n (nzOnClose)=\"chooseComponentVisible.set(false);chooseComponentSubject.next(undefined)\">\n <ng-container *nzDrawerContent>\n <axis-cmplib selectMode=\"click\" [tags]=\"chooseComponentTags()\"\n (clickExample)=\"chooseComponentVisible.set(false);chooseComponentSubject.next($event)\"></axis-cmplib>\n </ng-container>\n</nz-drawer>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './design';\n"],"names":["i5","i1","i2","i3","i4","i6","i7","i8","i9","i10","i11"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-axis-appforge-axis-components-design.mjs","sources":["../../../axis-components/design/tree/drag-drop.ts","../../../axis-components/design/tree/tree.ts","../../../axis-components/design/tree/tree.html","../../../axis-components/design/preview/drop-handler.ts","../../../axis-components/design/preview/drag.service.ts","../../../axis-components/design/preview/select.service.ts","../../../axis-components/design/preview/preview.ts","../../../axis-components/design/preview/preview.html","../../../axis-components/design/cmplib/cmplib.ts","../../../axis-components/design/cmplib/cmplib.html","../../../axis-components/design/shortcut-key.ts","../../../axis-components/design/design.options.ts","../../../axis-components/design/toolbar/toolbar.ts","../../../axis-components/design/toolbar/toolbar.html","../../../axis-components/design/design.ts","../../../axis-components/design/design.html","../../../axis-components/design/ngx-axis-appforge-axis-components-design.ts"],"sourcesContent":["import { NzFormatBeforeDropEvent, NzFormatEmitEvent } from 'ng-zorro-antd/tree';\nimport { OptionsNode } from 'ngx-axis-appforge/core';\nimport { Tree } from './tree';\nimport { Observable, of } from 'rxjs';\n\nexport class DragDrop {\n\n constructor(private tree: Tree) { }\n\n dragNode?: OptionsNode;\n dropNode?: OptionsNode;\n targetIndex?: number | string;\n element?: HTMLElement;\n pos?: number;\n\n beforeDrop = (confirm: NzFormatBeforeDropEvent): Observable<boolean> => {\n const node = confirm.node!.origin['options'];\n const dragNode = confirm.dragNode!.origin['options'];\n return of(dragNode.canDrag && node.canDrop && dragNode.dragType == node.dropType);\n };\n\n onDragStart(e: NzFormatEmitEvent) {\n this.dragNode = e.dragNode!.origin['options'];\n if (this.dragNode?.children?.length) {\n e.dragNode!.setExpanded(false);\n this.tree.expandedNodeids.update(ids => {\n const index = ids.indexOf(this.dragNode!.id);\n if (index != -1) {\n ids.splice(index, 1);\n }\n return ids;\n });\n }\n }\n\n onDragOver(e: NzFormatEmitEvent) {\n const node = e.node!.origin['options'];\n const parent = node.parentId ? this.tree.optionsNodes().get(node.parentId) : undefined;\n let canDropIn = this.canDrop(node);\n let canDropSide = !!parent && this.canDrop(parent);\n if (!canDropIn && !canDropSide) {\n e.event?.preventDefault();\n return;\n }\n const pos = this.getPos(e.event as DragEvent, canDropIn, canDropSide);\n const element = (e.event?.currentTarget as HTMLElement);\n this.updateElementStyle(element, pos);\n if (pos == 0) {\n this.targetIndex = node?.defaultDropIndex;\n this.dropNode = node;\n this.tree.expandedNodeids.update(ids => {\n if (!ids.includes(node.id!)) {\n ids.push(node.id!);\n }\n return ids;\n });\n } else if (pos == -1) {\n this.targetIndex = node.indexOfParentObj;\n this.dropNode = parent;\n } else {\n this.targetIndex = (node.indexOfParentObj as number) + 1;\n this.dropNode = parent;\n }\n }\n\n private updateElementStyle(element?: HTMLElement, pos?: number) {\n if (element != this.element || pos != this.pos) {\n this.element?.classList.remove(\"drop_in\", \"drop_up\", \"drop_down\");\n if (element) {\n switch (pos) {\n case -1:\n element.classList.add(\"drop_up\");\n break;\n case 0:\n element.classList.add(\"drop_in\");\n break;\n default:\n element.classList.add(\"drop_down\");\n break;\n }\n }\n this.element = element;\n this.pos = pos;\n }\n }\n\n onDragEnd(e: NzFormatEmitEvent) {\n if (this.dropNode) {\n if (this.dropNode.dropObj == this.dragNode!.parentObj && this.dragNode!.indexOfParentObj == this.targetIndex) {\n this.updateElementStyle();\n return undefined;\n }\n if (this.dropNode.dropObj instanceof Array && this.dropNode.dropObj == this.dragNode!.parentObj && this.dragNode!.indexOfParentObj! < this.targetIndex!) {\n (this.targetIndex as number)!--;\n }\n const dragObj = this.dragNode!.options;\n if (!this.dragNode!.isRoot) {\n if (this.dragNode?.parentObj instanceof Array) {\n this.dragNode!.parentObj.splice(this.dragNode!.indexOfParentObj as number, 1);\n } else {\n this.dragNode!.parentObj[this.dragNode!.indexOfParentObj as number] = null;\n }\n }\n if (this.dropNode.dropObj instanceof Array) {\n this.dropNode.dropObj.splice(this.targetIndex as number, 0, dragObj);\n } else {\n this.dropNode.dropObj[this.targetIndex!] = dragObj;\n }\n this.tree.onChange.emit({ historyDesc: `拖拽${this.dragNode?.name}` });\n }\n this.dragNode = undefined;\n this.updateElementStyle();\n }\n\n private canDrop(node: OptionsNode | undefined): boolean {\n if (node && node.canDrop && node.dropType == this.dragNode!.dragType) {\n return !node.dropObj[node.defaultDropIndex!];\n }\n return false;\n }\n\n private getPos(e: DragEvent, canDropIn: boolean, canDropSide: boolean): number {\n const element = e.target as HTMLElement;\n const rect = element.getBoundingClientRect();\n const clientY = e.clientY - rect.top;\n const height = rect.height;\n if (canDropIn && canDropSide) {\n return 1 - Math.floor(clientY / height * 3);\n } else if (canDropSide) {\n return clientY < height / 2 ? -1 : 1;\n } else {\n return 0;\n }\n }\n\n}","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, OnDestroy, output, signal, untracked, ViewChild, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { BehaviorSubject, debounceTime, Subscription } from 'rxjs';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { DragDrop } from './drag-drop';\nimport { OptionsNode, OptionsChangeEvent } from 'ngx-axis-appforge/core';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\nimport { Design } from '../design';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzFormatEmitEvent, NzTreeComponent, NzTreeModule, NzTreeNodeOptions } from 'ng-zorro-antd/tree';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'axis-design-tree',\n imports: [FormsModule, NzInputModule, NzIconModule, NzTreeModule, NzFlexModule, NzButtonModule, NzTooltipModule, NzEmptyModule],\n templateUrl: './tree.html',\n styleUrl: './tree.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tree implements OnDestroy {\n\n constructor() {\n effect(() => {\n this.treeNode();\n untracked(() => {\n this.selectedNodeids.set(this.selectedNodeids().filter(nodeid => this.optionsNodes().has(nodeid)));\n this.expandedNodeids.set(this.expandedNodeids().filter(nodeid => this.optionsNodes().has(nodeid)));\n if (this.selectedNodeids().length == 0 && this.node()) {\n this.selectOne(this.node()!.id, { sendEvent: true });\n }\n });\n })\n }\n\n readonly node = input.required<OptionsNode | undefined | null>()\n readonly optionsNodes = input.required<Map<string, OptionsNode>>();\n readonly onChange = output<OptionsChangeEvent>();\n readonly onSelect = output<string[]>()\n readonly onContextMenu = output<{ nodeId: string, event: MouseEvent }>()\n readonly dragdrop = computed(() => new DragDrop(this));\n readonly searchValue$ = new BehaviorSubject<string>('');\n readonly searchValue = toSignal(this.searchValue$.pipe(debounceTime(300)));\n readonly design = inject(Design);\n private readonly subs: Subscription[] = [];\n @ViewChild(NzTreeComponent)\n tree?: NzTreeComponent;\n\n readonly treeNode = computed(() => {\n function mapTreeNode(node: OptionsNode): NzTreeNodeOptions {\n return {\n title: node.name ?? '',\n key: node.id,\n icon: node.icon,\n isLeaf: (node.children?.length ?? 0) == 0,\n children: node.children?.map(mapTreeNode),\n options: node\n }\n }\n return this.node() ? [mapTreeNode(this.node()!)] : [];\n });\n readonly selectedNodeids = signal<string[]>([]);\n readonly expandedNodeids = signal<string[]>([]);\n expandChange(e: NzFormatEmitEvent) {\n this.expandedNodeids.set(e.keys ?? []);\n }\n get hasExpanded(): boolean {\n return !!this.node() && this.expandedNodeids().includes(this.node()!.id);\n }\n\n onNodeClick(e: NzFormatEmitEvent) {\n if (e.event?.ctrlKey || e.event?.metaKey) {\n this.toggleSelect(e.node!.key, { sendEvent: true });\n } else {\n this.selectOne(e.node!.key, { sendEvent: true });\n }\n }\n\n select(nodeId: string, opt?: { sendEvent: boolean }) {\n this.selectedNodeids.update(ids => {\n if (!ids.includes(nodeId)) {\n ids.push(nodeId);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n selectOne(nodeId: string, opt?: { sendEvent: boolean }) {\n this.unSelectAll();\n this.selectedNodeids.update(ids => {\n if (!ids.includes(nodeId)) {\n ids.push(nodeId);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n toggleSelect(nodeId: string, opt?: { sendEvent: boolean }) {\n this.selectedNodeids.update(ids => {\n const index = ids.indexOf(nodeId);\n if (index >= 0) {\n ids.splice(index, 1);\n } else {\n ids.push(nodeId);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n unSelect(nodeId: string, opt?: { sendEvent: boolean }) {\n this.selectedNodeids.update(ids => {\n const index = ids.indexOf(nodeId);\n if (index >= 0) {\n ids.splice(index, 1);\n }\n return ids;\n });\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n unSelectAll(opt?: { sendEvent: boolean }) {\n this.selectedNodeids.set([]);\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n private sendSelectEvent() {\n this.onSelect.emit(Array.from(this.selectedNodeids()));\n }\n\n selectByNodeIds(nodeIds: string[]) {\n this.selectedNodeids.set(nodeIds.filter(nodeid => this.optionsNodes().has(nodeid)));\n }\n\n expandByNodeIds(nodeIds: string[]) {\n this.expandedNodeids.set(nodeIds.filter(nodeid => this.optionsNodes().has(nodeid)));\n }\n\n toggleExpanded() {\n if (this.hasExpanded) {\n this.expandedNodeids.set([]);\n this.tree?.getExpandedNodeList().forEach(node => {\n node.setExpanded(false);\n })\n } else {\n this.expandedNodeids.set(Array.from(this.optionsNodes().keys()));\n }\n }\n\n reset() {\n\n }\n\n contextMenu(e: NzFormatEmitEvent) {\n this.onNodeClick(e);\n this.onContextMenu.emit({ event: e.event!, nodeId: e.node!.key });\n }\n\n removeSelected() {\n let changed = false;\n let next = undefined;\n let nextNodeId;\n for (const nodeId of this.selectedNodeids()) {\n const node = this.optionsNodes().get(nodeId);\n if (node?.canSetting) {\n changed = true;\n if (node.isRoot) {\n next = null;\n } else {\n nextNodeId = node.parentId;\n if (Array.isArray(node.parentObj)) {\n node.parentObj.splice(node.parentObj.indexOf(node.options), 1);\n if (node.parentObj.length) {\n nextNodeId = node.parentObj[Math.min(node.indexOfParentObj as number, node.parentObj.length - 1)].id;\n }\n } else {\n node.parentObj[node.indexOfParentObj!] = null;\n }\n }\n }\n }\n if (changed) {\n this.onChange.emit({ value: next, nextNodeId: nextNodeId, historyDesc: `删除${this.selectedNodeids().length}个组件` });\n }\n }\n\n addNodeForSelected(nodes: OptionsNode[], deleteSuccess = false, historyDesc?: string) {\n if (nodes.length && this.selectedNodeids().length) {\n for (const nodeId of this.selectedNodeids()) {\n const parentNode = this.optionsNodes().get(nodeId);\n if (parentNode && parentNode.canDrop) {\n if (parentNode.dropType == \"component\") {\n if (Array.isArray(parentNode.dropObj)) {\n parentNode.dropObj.splice(parentNode.dropObj.length, 0, ...nodes.map(n => n.options));\n if (deleteSuccess) {\n nodes.forEach(n => this.deleteNode(n));\n }\n } else if (!parentNode.dropObj[parentNode.defaultDropIndex!]) {\n const n = nodes[nodes.length - 1];\n parentNode.dropObj[parentNode.defaultDropIndex!] = n.options;\n if (deleteSuccess) {\n this.deleteNode(n);\n }\n }\n } else {\n for (const node of nodes) {\n parentNode?.onPaste(node, this.design.replaceIdFun.bind(this.design));\n }\n }\n }\n }\n this.onChange.emit({ historyDesc });\n }\n }\n\n private deleteNode(node: OptionsNode) {\n if (node.parentObj) {\n if (Array.isArray(node.parentObj)) {\n node.parentObj.splice(node.indexOfParentObj as number, 1);\n } else {\n delete node.parentObj[node.indexOfParentObj!];\n }\n }\n }\n\n addRootComponent() {\n this.design.chooseComponent().subscribe(res => {\n const { options, config } = res;\n if (options && config) {\n this.onChange.emit({ value: options, historyDesc: `添加${config.componentName}` });\n }\n });\n }\n\n ngOnDestroy(): void {\n for (let sub of this.subs) {\n sub.unsubscribe();\n }\n }\n\n}","<div nz-flex [nzVertical]=\"true\" style=\"height: 100%;\">\n <div nz-flex style=\"padding-right: 8px;\" nzGap=\"4px\" nzAlign=\"center\">\n <input style=\"flex:1;\" type=\"text\" nz-input placeholder=\"搜索\" nzVariant=\"borderless\" ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" (click)=\"toggleExpanded()\">\n <nz-icon [nzType]=\"hasExpanded?'shrink':'arrows-alt'\" nzTheme=\"outline\" />\n </button>\n </div>\n @if (node() === null) {\n <nz-empty [nzNotFoundContent]=\"contentTpl\" [nzNotFoundFooter]=\"footerTpl\">\n <ng-template #contentTpl>\n 没有组件\n </ng-template>\n <ng-template #footerTpl>\n <button nz-button nzType=\"dashed\" (click)=\"addRootComponent()\">\n <nz-icon nzType=\"plus\"></nz-icon>\n 添加组件\n </button>\n </ng-template>\n </nz-empty>\n }@else {\n <nz-tree nzMultiple nzDraggable [nzSearchValue]=\"searchValue()??''\" [nzData]=\"treeNode()\"\n [(nzExpandedKeys)]=\"expandedNodeids\" (nzExpandChange)=\"expandChange($event)\"\n [(nzSelectedKeys)]=\"selectedNodeids\" nzBlockNode nzShowIcon (nzClick)=\"onNodeClick($event)\"\n (nzContextMenu)=\"contextMenu($event)\" [nzBeforeDrop]=\"dragdrop().beforeDrop\"\n (nzOnDragStart)=\"dragdrop().onDragStart($event)\" (nzOnDragOver)=\"dragdrop().onDragOver($event)\"\n (nzOnDragEnd)=\"dragdrop().onDragEnd($event)\" />\n <!-- <nz-tree-view nzDirectoryTree [nzTreeControl]=\"treeControl\" [nzDataSource]=\"dataSource\">\n <nz-tree-node *nzTreeNodeDef=\"let node\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle nzTreeNodeNoopToggle></nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node.id)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n <nz-tree-node *nzTreeNodeDef=\"let node; when: hasChild\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle>\n <nz-icon nzType=\"caret-down\" nzTreeNodeToggleRotateIcon />\n </nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node.id)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n </nz-tree-view> -->\n }\n</div>","import { ElementNode } from \"ngx-axis-appforge/core\";\n\nexport class DropHandler {\n\n private placeholder: HTMLElement;\n\n beforeElement?: HTMLElement | null;\n\n constructor(public dragNode: ElementNode, public dropNode: ElementNode, private elementOptionIds: Map<HTMLElement, string>, private isHorizontal: boolean) {\n this.placeholder = dragNode.element!.cloneNode(true) as HTMLElement;\n this.placeholder.style.display = \"inline\";\n this.placeholder.style.opacity = \"0.5\";\n }\n\n onDragEnd(): void {\n this.placeholder.remove();\n }\n\n onDragOver(e: DragEvent): void {\n const element = this.getBeforeElement(e)\n if (element === this.beforeElement) {\n return;\n }\n this.beforeElement = element;\n if (element) {\n this.dropNode.dropElement!.insertBefore(this.placeholder, element);\n } else {\n this.dropNode.dropElement!.appendChild(this.placeholder);\n }\n }\n\n close(): void {\n this.placeholder.remove();\n this.beforeElement = undefined;\n }\n\n protected getBeforeElement(e: DragEvent): HTMLElement | null {\n for (const child of this.dropNode.dropElement!.children) {\n if (this.elementOptionIds.has(child as HTMLElement)) {\n const rect = child.getBoundingClientRect();\n if (this.isHorizontal) {\n const middle = rect.left + (rect.width / 2);\n if (e.clientX <= middle) {\n return child as HTMLElement;\n }\n } else {\n const middle = rect.top + (rect.height / 2);\n if (e.clientY <= middle) {\n return child as HTMLElement;\n }\n }\n }\n }\n return null;\n }\n}","import { ElementNode, OptionsNode } from \"ngx-axis-appforge/core\";\nimport { DropHandler } from \"./drop-handler\";\nimport { Preview } from \"./preview\";\n\nexport class DragService {\n\n constructor(private preview: Preview) { }\n\n private canDropNodes: ElementNode[] = [];\n private oriDragDisplay?: string;\n private readonly currentDropNodes = new Map<ElementNode, any>();\n private dragEn?: ElementNode;\n private dropHandler?: DropHandler;\n\n initElement(node: OptionsNode, en: ElementNode) {\n if (!node.isRoot && node.canDrag) {\n this.bindDragEvent(en);\n }\n if (node.canDrop) {\n this.canDropNodes.push(en);\n }\n }\n\n private getOptionsNode(node: ElementNode): OptionsNode {\n return this.preview.optionsNodes().get(node.id)!;\n }\n\n private bindDragEvent(node: ElementNode) {\n node.element!.setAttribute(\"draggable\", \"true\");\n node.element!.ondragstart = (e) => {\n e.stopPropagation();\n this.dragStart(node);\n this.oriDragDisplay = node.element!.style.display;\n setTimeout(() => {\n node.element!.style.display = \"none\";\n });\n };\n node.element!.ondragend = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.dragEnd();\n }\n }\n\n private bindDropEvent(en: ElementNode) {\n this.currentDropNodes.set(en, null);\n setTimeout(() => {\n const { clientWidth, clientHeight } = en.dropElement!;\n if (!clientWidth || !clientHeight) {\n const { display, minWidth, minHeight } = en.dropElement!.style;\n this.currentDropNodes.set(en,\n { display, minWidth, minHeight }\n );\n if (!clientWidth) {\n en.dropElement!.style.minWidth = \"100px\";\n }\n if (!clientHeight) {\n en.dropElement!.style.minHeight = \"50px\";\n }\n en.dropElement!.style.display = \"block\";\n }\n });\n en.dropElement!.ondragenter = (e) => {\n e?.preventDefault();\n e.stopPropagation();\n if (this.dropHandler?.dropNode == en) {\n return;\n }\n this.dropHandler?.close();\n const node = this.getOptionsNode(en);\n this.dropHandler = new DropHandler(this.dragEn!, en, this.preview.elementOptionIds, node.childDirection == \"horizontal\");\n }\n en.dropElement!.ondragover = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.dropHandler?.onDragOver?.(e);\n }\n }\n\n dragStart(dragEn: ElementNode) {\n this.dragEn = dragEn;\n this.canDropNodes = this.canDropNodes.filter(en => this.preview.optionsNodes().has(en.id));\n this.canDropNodes\n .filter(dropEn => {\n const dropNode = this.getOptionsNode(dropEn);\n const dragNode = this.getOptionsNode(dragEn);\n return dropNode.dropType == dragNode.dragType && !dropNode.dropObj[dropNode.defaultDropIndex!] && dropEn.dropElement;\n })\n .forEach(node => this.bindDropEvent(node));\n this.preview.onDragStart();\n }\n\n dragEnd(): string | undefined {\n let dragId: string | undefined;\n if (this.dropHandler) {\n const dropEn = this.dropHandler.dropNode;\n const dropNode = this.getOptionsNode(dropEn);\n const dragNode = this.getOptionsNode(this.dragEn!);\n let targetIndex = this.dropHandler.beforeElement ? this.preview.getNodeByElement(this.dropHandler.beforeElement)?.indexOfParentObj : dropNode?.defaultDropIndex;\n if (dropNode!.dropObj == dragNode!.parentObj && dragNode!.indexOfParentObj == targetIndex) {\n this.preview.onDragEnd({ historyDesc: `拖拽${dragNode.name}` });\n } else {\n dragId = dragNode?.id;\n if (dropNode!.dropObj instanceof Array && dropNode!.dropObj == dragNode!.parentObj && dragNode!.indexOfParentObj! < targetIndex!) {\n (targetIndex as number)!--;\n }\n const dragObj = dragNode!.options;\n if (!dragNode!.isRoot) {\n if (dragNode?.parentObj instanceof Array) {\n dragNode!.parentObj.splice(dragNode!.indexOfParentObj as number, 1);\n } else {\n dragNode!.parentObj[dragNode!.indexOfParentObj!] = null;\n }\n }\n if (dropNode?.dropObj instanceof Array) {\n dropNode!.dropObj.splice(targetIndex as number, 0, dragObj);\n } else {\n dropNode!.dropObj[targetIndex!] = dragObj;\n }\n this.preview.onDragEnd({ historyDesc: `拖拽${dragNode.name}` });\n }\n this.dropHandler.onDragEnd();\n this.dropHandler = undefined;\n } else {\n this.preview.onDragEnd();\n }\n this.dragEn!.element!.style.display = this.oriDragDisplay!;\n this.dragEn = undefined;\n this.oriDragDisplay = undefined;\n this.currentDropNodes.forEach((style, en) => {\n if (style) {\n en.dropElement!.style.minWidth = style.minWidth;\n en.dropElement!.style.minHeight = style.minHeight;\n en.dropElement!.style.display = style.display;\n }\n en.dropElement!.ondragenter = null;\n en.dropElement!.ondragover = null;\n });\n this.currentDropNodes.clear();\n return dragId;\n }\n\n reset() {\n this.dropHandler?.close();\n this.dragEn = undefined;\n this.dropHandler = undefined;\n }\n}","import { Preview } from \"./preview\";\n\nexport class SelectService {\n private hoverElements: HTMLElement[] = [];\n private enable = true;\n private selectElements = new Set<HTMLElement>();\n\n constructor(private preview: Preview) { }\n\n initElement(element: HTMLElement) {\n element.style.outlineOffset = \"1px\";\n element.onclick = (e) => {\n e.stopPropagation();\n if (e.ctrlKey || e.metaKey) {\n this.toggleSelect(element, { sendEvent: true });\n } else {\n this.selectOne(element, { sendEvent: true });\n }\n };\n element.onmouseenter = () => {\n if (this.enable) {\n this.addHoverElement(element);\n }\n };\n element.onmouseleave = () => {\n if (this.enable) {\n this.popHoverElement(element);\n }\n };\n }\n\n enableHover() {\n this.enable = true;\n }\n\n disableHover() {\n this.enable = false;\n }\n\n private addHoverElement(element: HTMLElement) {\n this.hoverElements.unshift(element);\n this.refreshHoverElements();\n }\n\n private popHoverElement(element: HTMLElement) {\n const i = this.hoverElements.lastIndexOf(element);\n if (i != -1) {\n for (const e of this.hoverElements.splice(0, i + 1)) {\n if (!this.selectElements.has(element)) {\n element.style.outline = \"none\";\n }\n }\n }\n this.refreshHoverElements();\n }\n\n select(element: HTMLElement, opt?: { sendEvent: boolean }) {\n this.selectElements.add(element);\n element.style.outline = \"2px dashed green\";\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n selectOne(element: HTMLElement, opt?: { sendEvent: boolean }) {\n this.unSelectAll();\n this.selectElements.add(element);\n element.style.outline = \"2px dashed green\";\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n toggleSelect(element: HTMLElement, opt?: { sendEvent: boolean }) {\n if (this.selectElements.has(element)) {\n this.unSelect(element);\n } else {\n this.select(element);\n }\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n unSelect(element: HTMLElement, opt?: { sendEvent: boolean }) {\n if (this.selectElements.has(element)) {\n this.selectElements.delete(element);\n element.style.outline = \"none\";\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n }\n\n unSelectAll(opt?: { sendEvent: boolean }) {\n for (let element of this.selectElements) {\n this.unSelect(element);\n }\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n private sendSelectEvent() {\n this.preview.onSelectChange?.(Array.from(this.selectElements));\n }\n\n private refreshHoverElements() {\n this.hoverElements = this.hoverElements.filter(e => this.preview.elementOptionIds.has(e));\n if (this.hoverElements.length && !this.selectElements.has(this.hoverElements[0])) {\n this.hoverElements[0].style.outline = \"1.5px dashed rgb(255,0,0)\";\n }\n if (this.hoverElements.length > 1 && !this.selectElements.has(this.hoverElements[1])) {\n this.hoverElements[1].style.outline = \"1.5px dashed rgba(255,0,0,0.4)\";\n }\n if (this.hoverElements.length > 2) {\n this.hoverElements.slice(2).filter(r => !this.selectElements.has(r)).forEach((e) => {\n e.style.outline = \"none\";\n });\n }\n }\n\n reset(opt?: { sendEvent: boolean }): void {\n for (const element of this.hoverElements) {\n element.style.outline = \"none\";\n }\n for (const element of this.selectElements) {\n element.style.outline = \"none\";\n }\n this.hoverElements = [];\n this.selectElements.clear();\n if (opt?.sendEvent) {\n this.sendSelectEvent();\n }\n }\n\n getSelectElements(): HTMLElement[] {\n return [...this.selectElements.values()];\n }\n}","import { ChangeDetectionStrategy, Component, ComponentRef, effect, inject, input, OnDestroy, output, ViewChild } from '@angular/core';\nimport { DragService } from './drag.service';\nimport { SelectService } from './select.service';\nimport { Base, DynamicDirective, BaseOptions, OptionsNode, ElementNode, DesignConfig, DesignBuilder, AXIS_COMPONENTS_LOADER_TOKEN, AXIS_INJECT_DATA_TOKEN, ScopeDirective, OptionsChangeEvent, AXIS_HTTP_CONTEXT_DATA_TOKEN, AXIS_FILE_BASE_URL_TOKEN, AXIS_INJECT_FUNC_TOKEN } from 'ngx-axis-appforge/core';\nimport { CommonModule } from '@angular/common';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'axis-design-preview',\n imports: [DynamicDirective, CommonModule],\n templateUrl: './preview.html',\n styleUrl: './preview.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: DesignBuilder,\n useFactory: (preview: Preview) => {\n return new DesignBuilder((ref, options) => preview.initElement(ref, options), (scope) => preview.initScope(scope))\n },\n deps: [Preview]\n }, {\n provide: AXIS_INJECT_DATA_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.injectData();\n },\n deps: [Preview]\n }, {\n provide: AXIS_HTTP_CONTEXT_DATA_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.httpContextDataSubject;\n },\n deps: [Preview]\n }, {\n provide: AXIS_FILE_BASE_URL_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.fileBaseUrlSubject;\n },\n deps: [Preview]\n }, {\n provide: AXIS_INJECT_FUNC_TOKEN,\n useFactory: (preview: Preview) => {\n return preview.injectFuncSubject;\n },\n deps: [Preview]\n },\n ]\n})\nexport class Preview implements OnDestroy {\n\n constructor() {\n effect(async () => {\n if (this.loadAndOptions()) {\n await this.loadAndOptions()![0];\n this.refresh();\n }\n });\n let injectUrl = inject(AXIS_FILE_BASE_URL_TOKEN, { optional: true, skipSelf: true }) ?? \"\";\n effect(() => {\n this.fileBaseUrlSub?.unsubscribe();\n let url: string | BehaviorSubject<string> = this.fileBaseUrl() ?? \"\";\n if (!url) {\n url = injectUrl;\n }\n if (url instanceof BehaviorSubject) {\n this.fileBaseUrlSub = url.subscribe(this.fileBaseUrlSubject);\n } else {\n this.fileBaseUrlSubject.next(url);\n }\n })\n let injectHttpContextData = inject(AXIS_HTTP_CONTEXT_DATA_TOKEN, { optional: true, skipSelf: true });\n effect(() => {\n this.httpContextDataSub?.unsubscribe();\n let data: BehaviorSubject<any> | any = this.httpContextData();\n if (!data) {\n data = injectHttpContextData;\n }\n if (data instanceof BehaviorSubject) {\n this.httpContextDataSub = data.subscribe(this.httpContextDataSubject);\n } else {\n this.httpContextDataSubject.next(data);\n }\n })\n effect(() => {\n this.injectFuncSub?.unsubscribe();\n let func: BehaviorSubject<{ [name: string]: (Function | { func: Function, type: string }) }> | { [name: string]: (Function | { func: Function, type: string }) } | null = this.injectFunc() ?? null;\n if (func instanceof BehaviorSubject) {\n this.injectFuncSub = func.subscribe(this.injectFuncSubject);\n } else {\n this.injectFuncSubject.next(func ?? {});\n }\n })\n }\n\n readonly loadAndOptions = input.required<[Promise<any>, any] | undefined>()\n readonly optionsNodes = input.required<Map<string, OptionsNode>>();\n readonly injectData = input.required<Observable<any>>();\n readonly httpContextData = input<any>();\n readonly httpContextDataSubject = new BehaviorSubject<any>(undefined);\n httpContextDataSub?: Subscription;\n readonly fileBaseUrl = input<string>();\n readonly fileBaseUrlSubject = new BehaviorSubject<string>(\"\");\n fileBaseUrlSub?: Subscription;\n readonly injectFunc = input<{ [name: string]: (Function | { func: Function, type: string }) }>();\n readonly injectFuncSubject = new BehaviorSubject<{ [name: string]: (Function | { func: Function, type: string }) }>({});\n injectFuncSub?: Subscription;\n readonly loader = inject(AXIS_COMPONENTS_LOADER_TOKEN);\n\n readonly onChange = output<OptionsChangeEvent>();\n readonly onSelect = output<string[]>();\n readonly onContextMenu = output<{ nodeId: string, event: MouseEvent }>();\n readonly onForceRender = output<void>();\n\n readonly elementOptionIds = new Map<HTMLElement, string>();\n readonly elementComponentRefs = new Map<HTMLElement, ComponentRef<Base<BaseOptions>>>();\n readonly optionIdElements = new Map<string, HTMLElement[]>();\n readonly scopeSubjects = new Map<string, BehaviorSubject<ScopeDirective | undefined>>();\n\n private readonly dragService = new DragService(this);\n private readonly selectService = new SelectService(this);\n\n readonly selected = new Map<string, number>();\n\n @ViewChild(\"child\", { read: DynamicDirective })\n dynamicDirective?: DynamicDirective;\n\n initScope(scope: ScopeDirective) {\n this.getAndUpdateScopeSubject(scope.axisScope(), scope);\n }\n\n async initElement(ref: ComponentRef<Base<BaseOptions>>, options: any) {\n await this.loadAndOptions()![0];\n if (!options?.id || !this.optionsNodes().has(options.id)) {\n return;\n }\n\n try {\n const element: HTMLElement = ref.location.nativeElement;\n ref.onDestroy(() => {\n this.elementComponentRefs.delete(element);\n this.elementOptionIds.delete(element);\n if (this.optionIdElements.has(options.id)) {\n this.optionIdElements.set(options.id, this.optionIdElements.get(options.id)!.filter(e => e !== element));\n }\n });\n this.elementComponentRefs.set(element, ref);\n const { component } = options;\n const config: DesignConfig = await this.loader.loadComponent(`${component}/design`)!;\n if (config) {\n const binds = config.bindElementsOptionsNode?.(element, options);\n if (binds) {\n for (const en of Object.entries(binds)) {\n const nodeId = en[0];\n const element = en[1].element;\n const elements = en[1].elements ?? [];\n if (element) {\n elements.push(element);\n }\n const node = this.optionsNodes().get(nodeId);\n for (const element of elements) {\n if (node && element && !this.elementOptionIds.has(element)) {\n if (!this.optionIdElements.has(nodeId)) {\n this.optionIdElements.set(nodeId, []);\n }\n this.optionIdElements.get(nodeId)?.push(element);\n this.elementOptionIds.set(element, nodeId);\n this.selectService.initElement(element);\n if (node.canDrag || node.canDrop) {\n this.dragService.initElement(node, node.toElementNode({ element, dropElement: en[1].dropElement }));\n }\n if (node.contextMenu) {\n element.oncontextmenu = (e: MouseEvent) => {\n this.onContextMenu.emit({ event: e, nodeId: en[0] })\n }\n }\n if (this.selected.has(nodeId) && this.selected.get(nodeId) == this.optionIdElements.get(nodeId)!.length - 1) {\n this.selectService.select(element);\n }\n }\n }\n }\n }\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n getNodeByElement(element: HTMLElement): OptionsNode | undefined {\n const id = this.elementOptionIds.get(element);\n if (id) {\n return this.optionsNodes().get(id);\n }\n return undefined;\n }\n\n onSelectChange(elements: HTMLElement[]) {\n this.selected.clear();\n for (const element of elements) {\n const id = this.elementOptionIds.get(element);\n if (id) {\n const elementList = this.optionIdElements.get(id);\n this.selected.set(id, elementList?.indexOf(element) ?? 0);\n }\n }\n this.onSelect.emit(Array.from(this.selected.keys()));\n }\n\n onDragStart() {\n this.selectService.disableHover();\n }\n\n onDragEnd(e?: OptionsChangeEvent) {\n if (e) {\n this.onChange.emit(e);\n }\n this.selectService.enableHover();\n }\n\n forceRender() {\n this.elementOptionIds.clear();\n this.optionIdElements.clear();\n this.dragService.reset();\n this.selectService.reset();\n this.dynamicDirective?.forceRender();\n this.onForceRender.emit();\n }\n\n refresh() {\n Array.from(this.optionIdElements.keys()).forEach(id => {\n if (!this.optionsNodes().has(id)) {\n this.optionIdElements.get(id)?.forEach(element => {\n this.elementOptionIds.delete(element);\n });\n this.optionIdElements.delete(id);\n }\n });\n setTimeout(() => {\n this.selectService.getSelectElements().filter(e => !document.contains(e)).forEach(e => {\n const nodeId = this.elementOptionIds.get(e);\n this.elementComponentRefs.delete(e);\n if (nodeId) {\n const elements = this.optionIdElements.get(nodeId);\n elements?.splice(elements.indexOf(e), 1);\n const res = this.getParentComponentRef(nodeId);\n if (res) {\n this.initElement(res.ref, res.options);\n }\n }\n });\n }, 50);\n }\n\n private getParentComponentRef(nodeId: string): { ref: ComponentRef<Base<BaseOptions>>, options: any } | undefined {\n const node = this.optionsNodes().get(nodeId);\n if (node?.parentId) {\n const parent = this.optionsNodes().get(node.parentId);\n if (parent) {\n const ref = this.getComponentRef(parent.id);\n if (ref) {\n return { ref, options: parent.options };\n }\n return this.getParentComponentRef(parent.id);\n }\n }\n return undefined;\n }\n\n getComponentRef(nodeId: string): ComponentRef<Base<BaseOptions>> | undefined {\n const elements = this.optionIdElements.get(nodeId);\n if (elements) {\n const element = elements[this.selected.get(nodeId) ?? 0];\n if (element) {\n return this.elementComponentRefs.get(element);\n }\n }\n return undefined;\n }\n\n selectByNodeIds(nodeIds?: string[]) {\n if (nodeIds?.some(id => !this.selected.has(id))) {\n this.selectService.unSelectAll();\n this.selected.clear();\n for (const nodeId of nodeIds) {\n this.selected.set(nodeId, 0);\n const elements = this.optionIdElements.get(nodeId)\n if (elements?.[0]) {\n this.selectService.select(elements[0]);\n }\n }\n }\n }\n\n getAndUpdateScopeSubject(scopeId: string, initScope?: ScopeDirective): BehaviorSubject<ScopeDirective | undefined> {\n if (!this.scopeSubjects.has(scopeId)) {\n this.scopeSubjects.set(scopeId, new BehaviorSubject<ScopeDirective | undefined>(initScope));\n }\n const subject = this.scopeSubjects.get(scopeId)!;\n if (initScope && initScope != subject.value) {\n subject.next(initScope);\n }\n return subject;\n }\n\n updateScopeWithSelectedElement(scopeId: string) {\n const elements = this.selectService.getSelectElements();\n if (elements.length > 0) {\n const ref = this.elementComponentRefs.get(elements[0]);\n const scope = ref?.injector.get(ScopeDirective, null)?.findScope(scopeId);\n if (scope) {\n this.getAndUpdateScopeSubject(scope.axisScope(), scope);\n }\n }\n }\n\n dragForOuter(node: ElementNode) {\n this.dragService.dragStart(node);\n }\n\n dragEndForOuter(): string | undefined {\n return this.dragService.dragEnd();\n }\n\n ngOnDestroy(): void {\n for (const s of this.scopeSubjects.values()) {\n s.unsubscribe();\n }\n this.fileBaseUrlSub?.unsubscribe();\n this.httpContextDataSub?.unsubscribe();\n this.injectFuncSub?.unsubscribe();\n }\n\n}\n","<ng-container #child [axisDynamic]=\"loadAndOptions()?.[1]\" [standalone]=\"true\" [isDesign]=\"true\"></ng-container>","import { ChangeDetectionStrategy, Component, effect, ElementRef, inject, input, model, OnInit, output, signal, ViewChild } from '@angular/core';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzDropdownModule } from 'ng-zorro-antd/dropdown';\nimport { AXIS_DESIGN_CMPLIBS_TOKEN, DynamicDirective, Example, ExampleDesc, ExampleGroup } from 'ngx-axis-appforge/core';\nimport { auditTime, BehaviorSubject, map } from 'rxjs';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { FormsModule } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\n\n@Component({\n selector: 'axis-cmplib',\n imports: [NzCollapseModule, NzCardModule, NzGridModule, DynamicDirective, NzButtonModule, NzDropdownModule, NzInputModule, FormsModule, NzIconModule, NzFlexModule, NzSelectModule],\n templateUrl: './cmplib.html',\n styleUrl: './cmplib.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Cmplib implements OnInit {\n\n constructor() {\n effect(() => {\n this.tags();\n this.cmplib();\n this.searchValue$.next(this.searchValue$.value);\n });\n }\n readonly cmplibs = inject(AXIS_DESIGN_CMPLIBS_TOKEN, { optional: true });\n readonly cmplib = model<ExampleGroup[]>();\n readonly dragOptions = signal<any>(undefined);\n readonly selectMode = input.required<\"drag\" | \"click\">();\n readonly tags = input<string[]>();\n dragExample?: Example;\n readonly clickExample = output<any>();\n readonly dragStart = output<{ example: Example, element: HTMLElement }>();\n readonly dragEnd = output<void>();\n @ViewChild(\"dragElement\", { read: ElementRef, static: true })\n dragElement?: ElementRef;\n readonly searchValue$ = new BehaviorSubject<string>('');\n readonly displayCmpLib = toSignal(this.searchValue$.pipe(auditTime(300), map(v => {\n if (v || this.tags()?.length) {\n v = v.toLowerCase();\n return this.cmplib()?.map(group => ({\n groupName: group.groupName,\n children: group.children.filter(c => (!v || c.component.includes(v)) && (!this.tags()?.length || c.tags?.some(t => this.tags()!.includes(t))))\n })).filter(group => group.children.length);\n } else {\n return this.cmplib();\n }\n })));\n\n ngOnInit(): void {\n if (this.cmplibs?.length) {\n this.cmplib.set(this.cmplibs[0].lib);\n }\n }\n\n onClick(example: Example) {\n if (this.selectMode() == \"click\") {\n this.clickExample.emit(example);\n }\n }\n\n preloadDragElement(example: Example, desc?: ExampleDesc) {\n if (this.selectMode() == \"drag\") {\n this.dragOptions.set(example.options);\n this.dragExample = example;\n if (desc) {\n example.name ??= desc.component;\n }\n }\n }\n\n onDragStart(e: DragEvent) {\n if (this.selectMode() == \"drag\") {\n e.stopPropagation();\n if (e.dataTransfer) {\n e.dataTransfer.effectAllowed = 'move';\n }\n e.dataTransfer?.setDragImage(this.dragElement?.nativeElement, 0, 0);\n setTimeout(() => {\n this.dragStart.emit({ example: this.dragExample!, element: this.dragElement?.nativeElement });\n });\n }\n }\n\n onDragEnd(e: DragEvent) {\n if (this.selectMode() == \"drag\") {\n e.stopPropagation();\n e.preventDefault();\n this.dragEnd.emit();\n }\n }\n\n}\n","<div nz-flex nzAlign=\"center\">\n <input style=\"flex:1\" type=\"text\" nz-input placeholder=\"搜索\" nzVariant=\"borderless\" ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <nz-select [(ngModel)]=\"cmplib\" nzSize=\"small\" nzVariant=\"borderless\" style=\"width: auto;\">\n @for (lib of cmplibs; track $index) {\n <nz-option [nzValue]=\"lib.lib\" [nzLabel]=\"lib.libName\"></nz-option>\n }\n </nz-select>\n</div>\n<nz-collapse nzAccordion>\n @for (group of displayCmpLib(); track group.groupName) {\n <nz-collapse-panel [nzHeader]=\"`${group.groupName}(${group.children.length})`\">\n <div nz-row [nzGutter]=\"[8,8]\">\n @for (item of group.children; track item.component) {\n <div nz-col [nzSpan]=\"item.span\">\n <nz-card nzSize=\"small\" nzHoverable [nzCover]=\"coverTemplate\" [nzTitle]=\"item.component\"\n [nzExtra]=\"item.moreExamples? more:''\" [nzBodyStyle]=\"{padding:0}\" (click)=\"onClick(item.example)\"\n [draggable]=\"selectMode()=='drag'\" (mouseenter)=\"preloadDragElement(item.example,item)\"\n (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragEnd($event)\">\n </nz-card>\n <ng-template #coverTemplate>\n <img style=\"margin: 4px;object-fit: contain;\" [style.height.px]=\"item.height\"\n [src]=\"item.coverImg\" />\n </ng-template>\n <ng-template #more>\n <a nz-button nzType=\"link\" nzSize=\"small\" nz-dropdown [nzDropdownMenu]=\"examples\">\n <nz-icon nzType=\"ellipsis\"></nz-icon>\n </a>\n <nz-dropdown-menu #examples=\"nzDropdownMenu\">\n <ul nz-menu nzSelectable>\n @for (item of item.moreExamples; track item.name) {\n <li nz-menu-item (click)=\"onClick(item)\" [draggable]=\"selectMode()=='drag'\"\n (mouseenter)=\"preloadDragElement(item)\" (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\">{{item.name}}</li>\n }\n </ul>\n </nz-dropdown-menu>\n </ng-template>\n </div>\n }\n </div>\n </nz-collapse-panel>\n }\n</nz-collapse>\n<div class=\"dragElementContainer\">\n <div #dragElement>\n @if (dragOptions()) {\n <ng-container [axisDynamic]=\"dragOptions()\" [standalone]=\"true\"></ng-container>\n {{dragOptions().type}}\n }\n </div>\n</div>","import { Example, isEquals } from \"ngx-axis-appforge/core\";\nimport { Design } from \"./design\";\n\nexport class ShortcutKey {\n\n constructor(private design: Design) { }\n\n private cutNodeIds?: string[];\n\n onKeyPress(e: KeyboardEvent) {\n const isInput = (e.target as HTMLElement).matches(\n 'input:not([disabled]), textarea:not([disabled]), [contenteditable=\"true\"]'\n );\n if (isInput) {\n return;\n }\n let event;\n if (e.key == \"Backspace\") {\n event = \"delete\";\n } else if (e.key == \"z\" && (e.metaKey || e.ctrlKey) && !e.shiftKey) {\n event = \"undo\";\n } else if (e.key.toLowerCase() == \"z\" && (e.metaKey || e.ctrlKey) && e.shiftKey) {\n event = \"redo\";\n } else if (e.key == \"c\" && e.metaKey && e.ctrlKey) {\n event = \"onlyPreview\";\n } else if (e.key == \"r\" && e.metaKey && e.ctrlKey) {\n event = \"forceRender\";\n } else if (e.key == \"h\" && e.metaKey && e.ctrlKey) {\n event = \"shortcutKeysInfo\";\n } else if (e.key == \"c\" && (e.metaKey || e.ctrlKey) && (!getSelection()?.toString() || getSelection()?.anchorNode == document.body)) {\n event = \"copy\";\n } else if (e.key == \"x\" && (e.metaKey || e.ctrlKey)) {\n event = \"cut\";\n } else if (e.key == \"v\" && (e.metaKey || e.ctrlKey)) {\n event = \"paste\";\n }\n // console.log(event, e.key, \"meta\", e.metaKey, \"ctrl\", e.ctrlKey, \"shift\", e.shiftKey)\n if (event) {\n e.preventDefault();\n e.stopPropagation();\n this.doEvent(event);\n }\n }\n\n private doEvent(event: string) {\n switch (event) {\n case \"delete\":\n this.design.tree.removeSelected();\n this.design.element.nativeElement.focus();\n break;\n case \"undo\":\n this.design.tools.undo();\n break;\n case \"redo\":\n this.design.tools.redo();\n break;\n case \"onlyPreview\":\n this.onlyPreview();\n break;\n case \"forceRender\":\n this.forceRender();\n break;\n case \"shortcutKeysInfo\":\n this.shortcutKeysInfo();\n break;\n case \"copy\":\n this.copy();\n break;\n case \"cut\":\n this.cut();\n break;\n case \"paste\":\n this.paste();\n break;\n }\n }\n\n onlyPreview() {\n this.design.tools.onlyPreview.set(!this.design.tools.onlyPreview());\n }\n forceRender() {\n this.design.preview.forceRender();\n }\n shortcutKeysInfo() {\n this.design.tools.shortcutKeysModal.set(true);\n }\n\n copy() {\n let options = Array.from(this.design.tree.selectedNodeids()).map(nodeId => this.design.optionsNodes.get(nodeId)).map(node => node?.options);\n if (options.length == 1) {\n options = options[0];\n }\n this.design.clipboard.copy(JSON.stringify(options, null, 2));\n }\n\n cut() {\n const selected = Array.from(this.design.tree.selectedNodeids());\n this.cutNodeIds = selected;\n const options = selected.map(nodeId => this.design.optionsNodes.get(nodeId)).map(node => node?.options);\n this.design.clipboard.copy(JSON.stringify(options, null, 2));\n }\n\n async paste() {\n try {\n const text = await navigator.clipboard.readText();\n if (text) {\n const j = JSON.parse(text);\n let objs: any[] | undefined;\n if (Array.isArray(j)) {\n objs = j;\n } else {\n objs = [j];\n }\n if (objs?.length && this.design.tree.selectedNodeids().length > 0) {\n if (this.cutNodeIds?.length && isEquals(objs.map(r => r.id), this.cutNodeIds)) {\n this.design.onNodesMove(this.cutNodeIds);\n this.cutNodeIds = undefined;\n } else {\n this.design.onPaste(objs);\n }\n }\n }\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import { signal } from \"@angular/core\";\nimport { ValueAccessOptions } from \"ngx-axis-appforge/core\";\n\nexport class DesignOptions extends ValueAccessOptions {\n\n readonly injectData = signal<any>({});\n readonly injectFunc = signal<{ [name: string]: (Function | { func: Function, type: string }) } | undefined>(undefined);\n readonly allPermissions = signal<{ [permission: string]: string }>({});\n readonly httpContextData = signal<any>(undefined);\n readonly fileBaseUrl = signal<string>(\"\");\n\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, model, signal } from '@angular/core';\nimport { Design } from '../design';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\nimport { copy, HowLongPipe } from 'ngx-axis-appforge/core';\n\n@Component({\n selector: 'axis-toolbar',\n imports: [NzModalModule, NzTableModule, NzFlexModule, NzIconModule, NzTooltipModule, NzButtonModule, NzPopoverModule, HowLongPipe],\n templateUrl: './toolbar.html',\n styleUrl: './toolbar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toolbar {\n\n readonly design = inject(Design);\n readonly cdr = inject(ChangeDetectorRef);\n readonly onlyPreview = signal(false);\n readonly shortcutKeysModal = model(false);\n\n readonly history: { options: any, time: Date, desc: string }[] = [];\n historyIndex = 0;\n\n putHistory(options: any, desc: string) {\n if (this.historyIndex > 0) {\n this.history.splice(0, this.historyIndex);\n this.historyIndex = 0;\n }\n this.history.unshift({ options: copy(options, true), time: new Date(), desc });\n if (this.history.length > 50) {\n this.history.pop();\n }\n this.cdr.markForCheck();\n }\n\n undo() {\n if (this.historyIndex < this.history.length - 1) {\n this.historyIndex++;\n this.design.onChangeOptionsConfig({ value: copy(this.history[this.historyIndex].options, true), putHistory: false });\n this.cdr.markForCheck();\n }\n }\n\n redo() {\n if (this.historyIndex > 0) {\n this.historyIndex--;\n this.design.onChangeOptionsConfig({ value: copy(this.history[this.historyIndex].options, true), putHistory: false });\n this.cdr.markForCheck();\n }\n }\n\n switchHistory(index: number) {\n if (index != this.historyIndex && index > -1 && index < this.history.length) {\n this.historyIndex = index;\n this.design.onChangeOptionsConfig({ value: copy(this.history[this.historyIndex].options, true), putHistory: false });\n this.cdr.markForCheck();\n }\n }\n\n}\n","<div class=\"tools\" nz-flex nzGap=\"4px\">\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"快捷键说明\"\n (click)=\"shortcutKeysModal.set(true)\">\n <nz-icon nzType=\"exclamation-circle\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"编辑历史\" nz-popover\n [nzPopoverTitle]=\"historyTitle\" nzPopoverTrigger=\"click\" [nzPopoverContent]=\"historyTemp\"\n nzPopoverPlacement=\"bottom\" nzPopoverOverlayClassName=\"history-popover\">\n <nz-icon nzType=\"history\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" [nz-tooltip]=\"onlyPreview()?'恢复':'放大'\"\n (click)=\"onlyPreview.set(!onlyPreview())\">\n <nz-icon [nzType]=\"onlyPreview()?'fullscreen-exit':'fullscreen'\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"重新载入\"\n (click)=\"design.preview.forceRender()\">\n <nz-icon nzType=\"reload\" />\n </button>\n</div>\n\n<ng-template #historyTitle>\n <div nz-flex>\n <div style=\"flex:1\">编辑历史</div>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"撤销\" (click)=\"undo()\"\n [disabled]=\"historyIndex==history.length-1\">\n <nz-icon nzType=\"undo\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"重做\" (click)=\"redo()\"\n [disabled]=\"historyIndex==0\">\n <nz-icon nzType=\"redo\" nzTheme=\"outline\" />\n </button>\n </div>\n</ng-template>\n\n<ng-template #historyTemp>\n <div nz-flex nzVertical nzGap=\"6px\" style=\"max-height: 300px;overflow: auto;\">\n @for (item of history; track item.time;let i=$index) {\n <div nz-flex nzAlign=\"center\" [class.active]=\"i == historyIndex\" class=\"history-item\" (click)=\"switchHistory(i)\">\n <div style=\"width: 20px;\">\n @if (i == historyIndex) {\n <nz-icon nzType=\"aim\" nzTheme=\"outline\" />\n }\n </div>\n <div nz-flex nzVertical>\n <span>{{item.desc}}</span>\n <span style=\"font-size: 10px;color:rgba(0,0,0,0.38)\"> {{item.time | axisHowLong}}</span>\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n<nz-modal [(nzVisible)]=\"shortcutKeysModal\" nzTitle=\"快捷键说明\" nzDraggable [nzOkText]=\"null\" nzCancelText=\"关闭\"\n (nzOnCancel)=\"shortcutKeysModal.set(false)\">\n <ng-container *nzModalContent>\n <nz-table nzTemplateMode nzSize=\"small\">\n <thead>\n <tr>\n <th>功能</th>\n <th>快捷键</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>查看快捷键说明</td>\n <td>Ctrl Meta H</td>\n </tr>\n <tr>\n <td>多选&反选</td>\n <td>Ctrl 单击 / Meta 单击</td>\n </tr>\n <tr>\n <td>复制</td>\n <td>Ctrl C</td>\n </tr>\n <tr>\n <td>剪切</td>\n <td>Ctrl X</td>\n </tr>\n <tr>\n <td>粘贴</td>\n <td>Ctrl V</td>\n </tr>\n <tr>\n <td>撤销</td>\n <td>Ctrl Z</td>\n </tr>\n <tr>\n <td>重做</td>\n <td>Ctrl Shift Z</td>\n </tr>\n <tr>\n <td>预览放大&恢复</td>\n <td>Ctrl Meta C</td>\n </tr>\n <tr>\n <td>重新载入</td>\n <td>Ctrl Meta R</td>\n </tr>\n </tbody>\n </nz-table>\n </ng-container>\n</nz-modal>","import { ChangeDetectionStrategy, Component, ComponentRef, computed, ElementRef, HostListener, inject, Injector, model, OnDestroy, signal, ViewChild, ViewContainerRef } from '@angular/core';\nimport { NzSplitterModule } from 'ng-zorro-antd/splitter';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { Tree } from './tree/tree';\nimport { Preview } from './preview/preview';\nimport { NzFlexModule } from 'ng-zorro-antd/flex';\nimport { AXIS_COMPONENTS_LOADER_TOKEN, ValueAccess, FunFieldValueBase, ScopeInfo, NextInfo, OptionsNode, AXIS_DESIGN_OPTIONS_NODE_FOR_MENU, AXIS_DESIGN_ALL_PERMISSIONS_TOKEN, DynamicDirective, AXIS_DESIGN_SCOPE_INFOS_GETTER_TOKEN, Example, AXIS_DESIGN_COMPONENT_INFO_FOR_SETTING_TOKEN, EventHandlerDesc, AXIS_INJECT_FUNC_TOKEN, copy, AXIS_DESIGN_CHOOSE_COMPONENT_FUNC_TOKEN, DesignConfig, OptionsChangeEvent, BaseOptions, Base, AXIS_DESIGN_COMPONENT_REF_GETTER_TOKEN, AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN, AXIS_HTTP_CONTEXT_DATA_TOKEN, AXIS_DESIGN_CAN_LOOP_TOKEN, AXIS_DESIGN_SCOPE_INFOS_REFRESH_TOKEN } from 'ngx-axis-appforge/core';\nimport { Cmplib } from './cmplib/cmplib';\nimport { FormsModule } from '@angular/forms';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { ShortcutKey } from './shortcut-key';\nimport { DesignOptions } from './design.options';\nimport { BehaviorSubject, debounceTime, filter, from, map, merge, NEVER, Observable, of, Subject, switchMap, take } from 'rxjs';\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\nimport { Toolbar } from './toolbar/toolbar';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ClipboardService } from 'ngx-clipboard';\n\n@Component({\n selector: 'axis-design',\n imports: [NzSplitterModule, NzTabsModule, Preview, Tree, NzFlexModule, Cmplib, FormsModule, NzEmptyModule, DynamicDirective, NzDrawerModule, Toolbar],\n templateUrl: './design.html',\n styleUrl: './design.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n tabindex: \"-1\",\n autofocus: \"true\",\n }\n})\nexport class Design extends ValueAccess<DesignOptions> implements OnDestroy {\n\n constructor() {\n super();\n this.addSubscribe(this.changeSubject\n .pipe(debounceTime(300))\n .subscribe((value) => this.onChangeOptionsConfig(value)))\n }\n\n override options = new DesignOptions();\n\n element = inject(ElementRef);\n clipboard = inject(ClipboardService);\n loader = inject(AXIS_COMPONENTS_LOADER_TOKEN);\n injectDataObs = toObservable(this.options.injectData);\n private funcByInject = inject(AXIS_INJECT_FUNC_TOKEN, { optional: true });\n readonly injectFunc = computed(() => {\n if (this.options.injectFunc()) {\n return this.options.injectFunc();\n }\n if (this.funcByInject instanceof BehaviorSubject) {\n return this.funcByInject.value;\n } else {\n return this.funcByInject ?? {};\n }\n });\n\n treeNode = signal<OptionsNode | null | undefined>(undefined);\n loadAndOptions = signal<[Promise<any>, any] | undefined>(undefined);\n\n @ViewChild(\"menu\", { static: true, read: ViewContainerRef })\n menu!: ViewContainerRef;\n readonly chooseComponentVisible = model(false);\n readonly chooseComponentSubject = new Subject<Example | undefined>();\n readonly chooseComponentTags = signal<string[]>([]);\n\n readonly refreshScopeInfosSubject = new Subject<string | undefined>();\n\n cacheSized: [number, number] = [300, 300];\n @ViewChild(\"setting\", { static: true, read: ViewContainerRef })\n setting!: ViewContainerRef;\n settingRef?: ComponentRef<FunFieldValueBase>;\n settingOptionsNodeId?: string;\n settingOptionsStr = model(\"\");\n\n @ViewChild(\"preview\", { static: true })\n preview!: Preview;\n\n @ViewChild(\"tree\", { static: true })\n tree!: Tree;\n\n @ViewChild(\"codeEditor\")\n codeEditor?: DynamicDirective;\n\n @ViewChild(\"tools\", { static: true })\n tools!: Toolbar;\n\n readonly shortcutKey = new ShortcutKey(this);\n @HostListener(\"keydown\", ['$event'])\n onKeyPress(e: KeyboardEvent) {\n this.shortcutKey.onKeyPress(e);\n }\n\n readonly optionsNodes = new Map<string, OptionsNode>();\n readonly optionsNodeScopes = new Map<string, OptionsNode[]>();\n readonly scopeInfos = new Map<string, ScopeInfo>();\n\n readonly componentsInfo = new Map<string, { component: string, componentName: string, eventHandlerDescs: { [name: string]: EventHandlerDesc } }>\n readonly componentsCounter = new Map<string, number>();\n readonly scopInfoSubjects = new Map<string, BehaviorSubject<ScopeInfo[]>>();\n\n readonly changeSubject = new Subject<OptionsChangeEvent>();\n\n override setInitValue(value: any): void {\n super.setInitValue(value);\n this.tools.putHistory(value, \"初始化\");\n this.render(value);\n }\n\n override writeValue(value: any): void {\n super.writeValue(value);\n this.tools.putHistory(value, \"初始化\");\n this.render(value);\n }\n\n async inspect(nextInfo: NextInfo): Promise<OptionsNode | undefined> {\n if (!nextInfo.currentObject?.component) {\n return;\n }\n const config: DesignConfig = await this.loader.loadComponent(`${nextInfo.currentObject.component}/design`);\n if (!this.componentsInfo.has(nextInfo.currentObject.component)) {\n this.componentsInfo.set(nextInfo.currentObject.component, { component: nextInfo.currentObject.component, componentName: config.componentName, eventHandlerDescs: config.eventHandlerDescs! });\n }\n if (!this.componentsCounter.has(nextInfo.currentObject.component)) {\n this.componentsCounter.set(nextInfo.currentObject.component, 0);\n }\n this.componentsCounter.set(nextInfo.currentObject.component, this.componentsCounter.get(nextInfo.currentObject.component)! + 1);\n const res = config.buildOptionsNodes?.(nextInfo);\n if (res) {\n res.treeNode.canLoop = nextInfo.canLoop ?? false;\n if (nextInfo.canLoop && res.treeNode.options?.loop) {\n const newScope: ScopeInfo = {\n scopeId: res.treeNode.id + \".loop\",\n scopeName: \"循环\",\n parentScopeId: nextInfo.scopeId,\n ds: {\n loopRow: res.treeNode.options.loopTarget?.[0] ?? \"示例数据\"\n },\n };\n res.newScopes ??= [];\n res.newScopes.push(newScope);\n res.treeNode.scopeId = newScope.scopeId;\n }\n let nodes = [res.treeNode];\n while (nodes.length) {\n let next: OptionsNode[] = [];\n for (const node of nodes) {\n this.optionsNodes.set(node.id!, node);\n if (node.children) {\n next = next.concat(node.children);\n }\n nodes = next;\n }\n }\n if (res.treeNode.scopeId) {\n if (!this.optionsNodeScopes.has(res.treeNode.scopeId)) {\n this.optionsNodeScopes.set(res.treeNode.scopeId, []);\n }\n this.optionsNodeScopes.get(res.treeNode.scopeId)!.push(res.treeNode);\n }\n if (res.newScopes) {\n for (const scope of res.newScopes) {\n this.scopeInfos.set(scope.scopeId, scope);\n }\n }\n if (res.next?.length) {\n for (let r of res.next) {\n if (Array.isArray(r.parentObject)) {\n for (let i = 0; i < r.parentObject.length; i++) {\n r = copy(r)\n r.indexOfParent = i;\n r.currentObject = r.parentObject[i];\n const parent = this.optionsNodes.get(r.parentId!);\n const child = await this.inspect(r);\n if (child) {\n parent?.children?.push(child);\n }\n }\n } else if (r.indexOfParent != undefined) {\n r.currentObject = r.parentObject[r.indexOfParent];\n const child = await this.inspect(r);\n if (child) {\n this.optionsNodes.get(r.parentId!)?.children?.push(child);\n }\n }\n }\n }\n }\n return res?.treeNode;\n }\n\n onChangeOptionsConfig(e: OptionsChangeEvent) {\n this.reset();\n let value = e.value;\n if (value === undefined) {\n value = this.value();\n }\n this.value.set(copy(value, true));\n this.render(this.value());\n const putHistory = e.putHistory ?? true;\n this.loadAndOptions()?.[0].then(() => {\n if (!putHistory && this.settingOptionsNodeId) {\n const node = this.optionsNodes.get(this.settingOptionsNodeId);\n if (node) {\n this.settingRef?.instance.writeValue(node.options);\n }\n this.syncToCode();\n }\n if (e.nextNodeId) {\n this.tree.selectByNodeIds([e.nextNodeId]);\n this.preview.selectByNodeIds([e.nextNodeId]);\n if (e.sameSetting) {\n this.settingOptionsNodeId = e.nextNodeId;\n } else {\n this.loadSetting(e.nextNodeId);\n }\n }\n this.refreshScopeInfosSubject.next(undefined);\n });\n this.onChange?.(this.value());\n if (putHistory) {\n this.tools.putHistory(this.value(), e.historyDesc ?? \"未知变更\");\n }\n\n }\n\n render(value: any) {\n this.loadAndOptions.set([this.inspect({ currentObject: value }).then(v => {\n this.treeNode.set(v ?? null);\n return v;\n }), value])\n }\n\n onSettingChange(settingValue: any) {\n if (this.settingOptionsNodeId) {\n const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId!);\n if (optionsNode) {\n if (optionsNode.isRoot) {\n Object.assign(this.value(), settingValue);\n } else {\n optionsNode.updateOptions(settingValue);\n }\n this.changeSubject.next({ historyDesc: `设置属性${optionsNode.name}`, nextNodeId: optionsNode.id, sameSetting: true });\n }\n } else if (this.treeNode() == null) {\n this.value.set(settingValue);\n this.changeSubject.next({ historyDesc: \"修改配置\", nextNodeId: settingValue.id });\n }\n }\n\n onTreeSelect(nodeIds: string[]) {\n this.preview.selectByNodeIds(nodeIds);\n if (nodeIds.length == 1) {\n this.updateScopeWithNodeId(nodeIds[0]);\n this.loadSetting(nodeIds[0]);\n } else {\n this.settingOptionsNodeId = undefined;\n this.resetSetting();\n }\n }\n\n onPreviewSelect(nodeIds: string[]) {\n this.menu.clear();\n this.tree.selectByNodeIds(nodeIds);\n if (nodeIds.length == 1) {\n this.updateScopeWithNodeId(nodeIds[0]);\n this.loadSetting(nodeIds[0]);\n } else {\n this.settingOptionsNodeId = undefined;\n this.resetSetting();\n }\n let expandIds: string[] = [];\n for (const nodeid of nodeIds) {\n expandIds = expandIds.concat(this.getAllParentNodes(nodeid).map(n => n.id!));\n }\n this.tree.expandByNodeIds(expandIds);\n }\n\n private updateScopeWithNodeId(nodeId: string) {\n let scopeId = this.optionsNodes.get(nodeId)?.scopeId;\n while (scopeId && this.scopeInfos.has(scopeId)) {\n this.preview.updateScopeWithSelectedElement(scopeId);\n scopeId = this.scopeInfos.get(scopeId)?.parentScopeId;\n }\n }\n\n loadSetting(nodeId: string, force = false) {\n if (nodeId && this.optionsNodes.has(nodeId)) {\n if (!force) {\n if (this.settingOptionsNodeId == nodeId) {\n return;\n } else if (this.settingOptionsNodeId) {\n const oldNode = this.optionsNodes.get(this.settingOptionsNodeId)!;\n const newNode = this.optionsNodes.get(nodeId)!;\n if (newNode.canSetting && oldNode && oldNode.parentId == newNode.parentId && oldNode.settingType == newNode.settingType) {\n this.settingOptionsNodeId = nodeId;\n this.settingOptionsStr.set(JSON.stringify(newNode.options, null, \" \"));\n this.settingRef?.instance.writeValue(newNode.options);\n this.refreshScopeInfosSubject.next(undefined);\n return;\n }\n }\n }\n this.resetSetting();\n const optionsNode = this.optionsNodes.get(nodeId)!;\n if (!optionsNode.canSetting) {\n return;\n }\n this.settingOptionsNodeId = nodeId;\n this.settingOptionsStr.set(JSON.stringify(optionsNode.options, null, \" \"));\n if (optionsNode.settingType) {\n const injector = Injector.create({\n providers: [\n { provide: AXIS_DESIGN_CAN_LOOP_TOKEN, useValue: optionsNode.canLoop },\n { provide: AXIS_DESIGN_SCOPE_INFOS_REFRESH_TOKEN, useValue: this.refreshScopeInfosSubject },\n { provide: AXIS_DESIGN_SCOPE_INFOS_GETTER_TOKEN, useValue: this.buildScopeInfosGetter() },\n { provide: AXIS_DESIGN_COMPONENT_INFO_FOR_SETTING_TOKEN, useValue: this.buildComponentInfoForSetting(optionsNode) },\n { provide: AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN, useFactory: () => this.buildComponentRefForSetting(optionsNode) },\n { provide: AXIS_DESIGN_COMPONENT_REF_GETTER_TOKEN, useValue: (nodeId: string) => this.preview.getComponentRef(nodeId) },\n { provide: AXIS_DESIGN_ALL_PERMISSIONS_TOKEN, useValue: this.options.allPermissions() },\n { provide: AXIS_INJECT_FUNC_TOKEN, useValue: this.injectFunc() },\n { provide: AXIS_HTTP_CONTEXT_DATA_TOKEN, useValue: this.options.httpContextData() }\n ]\n })\n this.settingRef = this.setting.createComponent(optionsNode.settingType, { injector: injector });\n this.settingRef.instance.onChange = this.onSettingChange.bind(this);\n this.settingRef.instance.writeValue(optionsNode.options);\n }\n } else {\n this.resetSetting();\n }\n }\n\n private buildScopeInfosGetter(): (scopeId?: string) => BehaviorSubject<ScopeInfo[]> {\n return (scopeId?: string): BehaviorSubject<ScopeInfo[]> => {\n const node = this.optionsNodes.get(this.settingOptionsNodeId!);\n scopeId ??= node?.scopeId;\n if (scopeId) {\n if (!this.scopInfoSubjects.has(scopeId)) {\n this.scopInfoSubjects.set(scopeId, this.buildScopeInfoSubject(scopeId));\n }\n return this.scopInfoSubjects.get(scopeId)!;\n }\n return new BehaviorSubject<ScopeInfo[]>([]);\n }\n }\n\n private buildScopeInfoSubject(scopeId: string | undefined): BehaviorSubject<ScopeInfo[]> {\n const scopeObs: Observable<{ scopeInfo: ScopeInfo, index: number }>[] = [];\n const scopeInfosOrder: string[] = [];\n while (scopeId && this.scopeInfos.has(scopeId)) {\n const scopeInfo = this.scopeInfos.get(scopeId)!;\n scopeInfosOrder.push(scopeId);\n const scopeSubject = this.preview.getAndUpdateScopeSubject(scopeId);\n scopeObs.push(scopeSubject.pipe(\n filter(s => !!s),\n switchMap(s => {\n return merge(new Observable(sub => sub.next(s.getSnapshoptAllWithScopeId(s.axisScope()))), s.getAllWithScopeId(s.axisScope()) ?? NEVER);\n }),\n filter(realDs => !!realDs && this.scopeInfos.has(scopeInfo.scopeId)),\n map(realDs => {\n const _scopeInfo = this.scopeInfos.get(scopeInfo.scopeId)!;\n return {\n scopeInfo: { ..._scopeInfo, ds: { ..._scopeInfo.ds, ...realDs } },\n index: scopeInfosOrder.indexOf(scopeInfo.scopeId),\n };\n })\n ));\n scopeId = scopeInfo.parentScopeId;\n }\n const subject = new BehaviorSubject<ScopeInfo[]>([]);\n const res: ScopeInfo[] = scopeInfosOrder.map(scopeId => this.scopeInfos.get(scopeId)!);\n this.addSubscribe(merge(...scopeObs).pipe(map(row => {\n res[row.index] = row.scopeInfo;\n return [...res];\n })).subscribe(subject));\n return subject;\n }\n\n private buildComponentInfoForSetting(optionsNode: OptionsNode): { component: string, componentName: string, nodes: OptionsNode[], eventHandlerDescs: { [event: string]: EventHandlerDesc } }[] {\n const componentInfo: Map<string, { component: string, componentName: string, nodes: OptionsNode[], eventHandlerDescs: { [event: string]: EventHandlerDesc } }> = new Map();\n let scopeId = optionsNode.scopeId;\n while (scopeId) {\n let nodes = this.optionsNodeScopes.get(scopeId)!\n if (nodes) {\n for (const node of nodes) {\n const component = node.options.component;\n if (!componentInfo.has(component)) {\n const info = this.componentsInfo.get(component)!;\n componentInfo.set(component, { component: info.component, componentName: info.componentName, nodes: [], eventHandlerDescs: info.eventHandlerDescs ?? {} })\n }\n componentInfo.get(component)!.nodes.push(node);\n }\n }\n scopeId = this.scopeInfos.get(scopeId)?.parentScopeId;\n }\n return Array.from(componentInfo.values());\n }\n\n private buildComponentRefForSetting(node: OptionsNode | undefined): { ref?: ComponentRef<Base<BaseOptions>>, options: any } {\n while (node && !node.options.component) {\n if (node.parentId) {\n node = this.optionsNodes.get(node.parentId);\n } else {\n break;\n }\n }\n if (node) {\n return {\n options: node.options,\n ref: this.preview.getComponentRef(node.id)\n }\n }\n return { options: undefined };\n }\n\n onContextMenu(e: MouseEvent, nodeId: string) {\n const node = this.optionsNodes.get(nodeId);\n if (node?.contextMenu) {\n this.tree.selectOne(nodeId, { sendEvent: false });\n const parent = node.isRoot ? undefined : this.optionsNodes.get(node.parentId!)\n const injector = Injector.create({\n providers: [\n { provide: AXIS_DESIGN_OPTIONS_NODE_FOR_MENU, useValue: { current: node, parent } },\n { provide: AXIS_DESIGN_CHOOSE_COMPONENT_FUNC_TOKEN, useValue: this.chooseComponent.bind(this) },\n ]\n })\n this.menu.clear();\n const ref = this.menu.createComponent(node.contextMenu, { injector: injector });\n ref.instance.contextMenu(e);\n ref.instance.onChange = async (e) => {\n this.onChangeOptionsConfig(e);\n }\n }\n }\n\n chooseComponent(...tags: string[]): Observable<{ options?: any, config?: DesignConfig }> {\n this.chooseComponentTags.set(tags);\n this.chooseComponentVisible.set(true);\n return this.chooseComponentSubject.asObservable()\n .pipe(take(1), map((example) => example ? this.replaceIdFun(example.options) : null),\n switchMap(options => options ? from(this.loader.loadComponent(`${options.component}/design`)).pipe(map(config => ({ options, config }))) : of({})));\n }\n\n private genNewComponentId(component: string, offset = 1, existsIds?: Set<string>): { id: string, offset: number } {\n let id: string;\n if (this.componentsCounter.has(component)) {\n id = `${component}#${this.componentsCounter.get(component)! + offset}`\n } else {\n id = `${component}#${offset}`\n }\n if (existsIds?.has(id) || this.optionsNodes.has(id)) {\n return this.genNewComponentId(component, offset + 1, existsIds);\n }\n return { id, offset };\n }\n\n onCmplibDragStart(example: Example, element: HTMLElement) {\n const options = this.replaceIdFun(example.options);\n const optionsNode = new OptionsNode({\n canDrag: true,\n dragType: \"component\",\n rootOptions: options,\n name: example.name\n });\n this.optionsNodes.set(optionsNode.id, optionsNode);\n this.preview.dragForOuter(optionsNode.toElementNode({ element }));\n }\n\n async onCmplibDragEnd() {\n const nodeId = this.preview.dragEndForOuter();\n if (nodeId) {\n await this.loadAndOptions()![0];\n this.tree.selectByNodeIds([nodeId]);\n this.preview.selectByNodeIds([nodeId]);\n this.loadSetting(nodeId);\n }\n }\n\n onPaste(objs: any[]) {\n const nodes: OptionsNode[] = []\n for (const obj of objs) {\n if (obj && obj.hasOwnProperty(\"id\") && obj.hasOwnProperty(\"component\")) {\n const options = this.replaceIdFun(obj);\n const optionsNode = new OptionsNode({\n canDrag: true,\n dragType: \"component\",\n rootOptions: options\n });\n nodes.push(optionsNode);\n this.optionsNodes.set(optionsNode.id, optionsNode);\n } else {\n nodes.push(new OptionsNode({\n canDrag: true,\n rootOptions: obj\n }));\n }\n }\n this.tree.addNodeForSelected(nodes, undefined, `粘贴${nodes.length}个组件`);\n }\n\n replaceIdFun(example: any): any {\n const idMap = new Map<string, string>();\n const idMap2 = new Map<string, string>();\n this.buildIdMap(example, idMap, idMap2);\n let exampleStr = JSON.stringify(example);\n while (idMap.size > 0) {\n idMap.forEach((newId, oldId) => {\n exampleStr = exampleStr.replaceAll(oldId, newId);\n idMap.delete(oldId);\n });\n }\n while (idMap2.size > 0) {\n idMap2.forEach((newId, oldId) => {\n exampleStr = exampleStr.replaceAll(oldId, newId);\n idMap2.delete(oldId);\n });\n }\n return JSON.parse(exampleStr);\n }\n\n private buildIdMap(obj: any, idMap: Map<string, string>, idMap2: Map<string, string>, globalOffset = 0, offsetMap = new Map<string, number>()): number {\n if (this.isComponentObj(obj)) {\n const offset = (offsetMap.get(obj.component) ?? 0) + 1;\n const res = this.genNewComponentId(obj.component, offset, new Set(idMap.values()))\n offsetMap.set(obj.component, res.offset);\n const tempId = `__temp__id__${globalOffset++}`;\n idMap.set(obj.id, tempId);\n idMap2.set(tempId, res.id);\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n globalOffset = this.buildIdMap(obj[i], idMap, idMap2, globalOffset, offsetMap);\n }\n } else if (typeof obj == \"object\") {\n for (const en of Object.entries(obj)) {\n globalOffset = this.buildIdMap(en[1], idMap, idMap2, globalOffset, offsetMap);\n }\n }\n }\n return globalOffset;\n }\n\n private isComponentObj(obj: any): boolean {\n return obj && obj.hasOwnProperty(\"id\") && obj.hasOwnProperty(\"component\");\n }\n\n onNodesMove(nodeIds: string[]) {\n if (this.tree.selectedNodeids().length == 1) {\n this.tree.addNodeForSelected(nodeIds.map(id => this.optionsNodes.get(id)!), true, `粘贴${nodeIds.length}个组件`);\n }\n }\n\n onEditorChange(optionsStr: string) {\n try {\n const options = JSON.parse(optionsStr);\n this.onSettingChange(options);\n } catch (_) { }\n }\n\n syncToSetting() {\n if (this.settingOptionsNodeId) {\n const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId);\n if (optionsNode) {\n if (optionsNode.canSetting && this.settingRef?.componentType == optionsNode.settingType) {\n this.settingRef?.instance?.writeValue(optionsNode.options);\n } else {\n this.loadSetting(optionsNode.id, true);\n }\n }\n }\n }\n\n syncToCode() {\n if (this.settingOptionsNodeId) {\n const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId);\n if (optionsNode) {\n this.settingOptionsStr.set(JSON.stringify(optionsNode.options, null, \" \"));\n }\n }\n setTimeout(() => {\n this.layoutEditor();\n });\n }\n\n layoutEditor(e?: number[]) {\n if (e) {\n if (e[0] > 0) {\n this.cacheSized[0] = e[0];\n }\n if (e[2] > 0) {\n this.cacheSized[1] = e[2];\n }\n }\n this.codeEditor?.onEvents?.({\n target: \"component\",\n name: \"layout\",\n })?.subscribe();\n }\n\n private resetSetting() {\n this.settingOptionsNodeId = undefined;\n this.setting.clear();\n this.settingOptionsStr.set(\"\");\n }\n\n private reset(): void {\n this.optionsNodes.clear();\n this.componentsInfo.clear();\n this.optionsNodeScopes.clear();\n this.scopeInfos.clear();\n this.componentsCounter.clear();\n }\n\n private getAllParentNodes(node: OptionsNode | string | undefined, parentNodes: OptionsNode[] = []): OptionsNode[] {\n if (typeof node == \"string\") {\n node = this.optionsNodes.get(node);\n }\n if (node?.parentId) {\n const parent = this.optionsNodes.get(node.parentId);\n if (parent) {\n parentNodes.push(parent);\n this.getAllParentNodes(parent, parentNodes);\n }\n }\n return parentNodes;\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n for (const s of this.scopInfoSubjects.values()) {\n s.unsubscribe();\n }\n }\n}","<nz-splitter (nzResize)=\"layoutEditor($event)\">\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[0]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\">\n <nz-tabs nzCentered>\n <nz-tab nzTitle=\"组件树\">\n <axis-design-tree style=\"margin-bottom: 300px;\" #tree [node]=\"treeNode()\" [optionsNodes]=\"optionsNodes\"\n (onSelect)=\"onTreeSelect($event)\" (onChange)=\"onChangeOptionsConfig($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"></axis-design-tree>\n </nz-tab>\n <nz-tab nzTitle=\"组件库\">\n <axis-cmplib selectMode=\"drag\" (dragStart)=\"onCmplibDragStart($event.example,$event.element)\"\n (dragEnd)=\"onCmplibDragEnd()\"></axis-cmplib>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n <nz-splitter-panel>\n <div nz-flex nzVertical style=\"height: 100%;width: 100%;position: relative;\">\n <h2 style=\"text-align: center;margin-top: 4px;\">预览</h2>\n <axis-toolbar #tools></axis-toolbar>\n <axis-design-preview #preview style=\"flex:1;overflow: auto;\" [loadAndOptions]=\"loadAndOptions()\"\n [optionsNodes]=\"optionsNodes\" [injectData]=\"injectDataObs\" [injectFunc]=\"injectFunc()\"\n [httpContextData]=\"options.httpContextData()\" [fileBaseUrl]=\"options.fileBaseUrl()\"\n (onChange)=\"onChangeOptionsConfig($event)\" (onSelect)=\"onPreviewSelect($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"\n (onForceRender)=\"triggeEvents('forceRender').subscribe()\"></axis-design-preview>\n </div>\n </nz-splitter-panel>\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[1]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\" style=\"position: relative;\">\n <nz-tabs nzCentered style=\"height: 100%;\">\n <nz-tab nzTitle=\"属性设置\" (nzClick)=\"syncToSetting()\">\n <ng-container #setting></ng-container>\n <div style=\"height: 300px;\"></div>\n @if (!settingOptionsStr()){\n <nz-empty style=\"height: 300px;\" nzNotFoundContent=\"请先选择一个组件\"></nz-empty>\n }\n </nz-tab>\n <nz-tab nzTitle=\"代码\" nzForceRender (nzSelect)=\"syncToCode();\">\n <ng-container #codeEditor=\"axisDynamic\"\n [axisDynamic]=\"{component:'axis-components/editor',inuse:true,mode:'json',readonly:!settingOptionsStr() && treeNode()!=null,otherOptions:{tabSize:2}}\"\n [standalone]=\"true\" [(ngModel)]=\"settingOptionsStr\"\n (ngModelChange)=\"onEditorChange($event)\"></ng-container>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n</nz-splitter>\n<ng-container #menu></ng-container>\n<nz-drawer [(nzVisible)]=\"chooseComponentVisible\" nzTitle=\"选择组件\" [nzBodyStyle]=\"{padding:0}\"\n (nzOnClose)=\"chooseComponentVisible.set(false);chooseComponentSubject.next(undefined)\">\n <ng-container *nzDrawerContent>\n <axis-cmplib selectMode=\"click\" [tags]=\"chooseComponentTags()\"\n (clickExample)=\"chooseComponentVisible.set(false);chooseComponentSubject.next($event)\"></axis-cmplib>\n </ng-container>\n</nz-drawer>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './design';\n"],"names":["i5","i1","i2","i3","i4","i6","i7","i8","i9","i10","i11"],"mappings":"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"}