56 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							56 lines
						
					
					
						
							1.8 KiB
						
					
					
				| export function useParent(name, onEffect) { | |
|     const path = `../${name}/index`; | |
|     return { | |
|         relations: { | |
|             [path]: { | |
|                 type: 'ancestor', | |
|                 linked() { | |
|                     onEffect && onEffect.call(this); | |
|                 }, | |
|                 linkChanged() { | |
|                     onEffect && onEffect.call(this); | |
|                 }, | |
|                 unlinked() { | |
|                     onEffect && onEffect.call(this); | |
|                 }, | |
|             }, | |
|         }, | |
|         mixin: Behavior({ | |
|             created() { | |
|                 Object.defineProperty(this, 'parent', { | |
|                     get: () => this.getRelationNodes(path)[0], | |
|                 }); | |
|                 Object.defineProperty(this, 'index', { | |
|                     // @ts-ignore | |
|                     get: () => { var _a, _b; return (_b = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.indexOf(this); }, | |
|                 }); | |
|             }, | |
|         }), | |
|     }; | |
| } | |
| export function useChildren(name, onEffect) { | |
|     const path = `../${name}/index`; | |
|     return { | |
|         relations: { | |
|             [path]: { | |
|                 type: 'descendant', | |
|                 linked(target) { | |
|                     onEffect && onEffect.call(this, target); | |
|                 }, | |
|                 linkChanged(target) { | |
|                     onEffect && onEffect.call(this, target); | |
|                 }, | |
|                 unlinked(target) { | |
|                     onEffect && onEffect.call(this, target); | |
|                 }, | |
|             }, | |
|         }, | |
|         mixin: Behavior({ | |
|             created() { | |
|                 Object.defineProperty(this, 'children', { | |
|                     get: () => this.getRelationNodes(path) || [], | |
|                 }); | |
|             }, | |
|         }), | |
|     }; | |
| }
 | |
| 
 |