1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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) || [],
- });
- },
- }),
- };
- }
|