UNPKG

@nodegui/vue-nodegui

Version:

library to render native desktop applications using vue js

52 lines (49 loc) 1.65 kB
import { RendererOptions } from '@vue/runtime-core'; import { VNNode, VNWidget } from 'widgets/config'; import { VNText } from 'widgets/Text/VNText'; import { VNButton } from 'widgets/Button/VNButton'; import { VNMetaWidget } from '../widgets/MetaWidget/VNMetaWidget'; import { ValidNativeWidgets } from '../widgets/nativeWidget'; import getConfigByType from '../widgets/widgetMap'; import patchProp from './patchProp'; const nodeOps: RendererOptions<VNWidget<any>, VNNode<any>> = { insert: (child: VNWidget<any>, parent: VNNode<any>, anchor) => { // TODO: implement insertBefore in widgets if (anchor) { parent.insertBefore(child, anchor); } else { parent.insertChild(child as VNWidget<any>); } (child as VNWidget<any>).setNodeParent(parent); }, remove: (child: VNWidget<any>) => { const { nodeParent } = child; if (nodeParent) { (nodeParent as VNNode<any>).removeChild(child); } }, createElement: (type: ValidNativeWidgets) => { const config = getConfigByType(type); return config.createElement(); }, createText: () => new VNMetaWidget(), createComment: () => new VNMetaWidget(), setText: (node: VNText | VNButton, text: string) => { node.setText(text); }, setElementText: (node: VNText | VNButton, text: string) => { node.setText(text); }, parentNode: (node: VNWidget<any>) => { if (node) { return node.nodeParent as VNNode<any>; } return null; }, nextSibling: (node) => { const nodeParent = node.nodeParent as VNNode<any>; return nodeParent.getNextSibling(node) as VNWidget<any>; }, patchProp, }; export default nodeOps;