123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- "use strict";
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
- var utils = require('../../api/utils');
- var browserPath = utils.browserPath;
- var posix = browserPath();
- function processRelationPath(self, relation) {
- var from = self.is;
- var to = relation;
- if (to[0] === '.') {
- to = "../".concat(to);
- }
- var _p = posix.join(from, to);
- return _p;
- }
- function _relationNode(node, info) {
- var relationInfo = info.relationInfo,
- relation = info.relation,
- _p = info._p; // 触发父级组件的 relations
- var type = relationInfo.type;
- var parentType = '';
- if (type === 'parent') {
- parentType = 'child';
- } else if (type === 'ancestor') {
- parentType = 'descendant';
- }
- var parentCtx = node.$self;
- var childCtx = this;
- if (_typeof(parentCtx.props.theRelations) === 'object') {
- Object.keys(parentCtx.props.theRelations).forEach(function (_relation) {
- var _relationInfo = parentCtx.props.theRelations[_relation];
- if (_relationInfo.type === parentType) {
- _relationNode.call(parentCtx, childCtx.$node, {
- relationInfo: _relationInfo,
- relation: _relation,
- _p: processRelationPath(parentCtx, _relation)
- });
- return true;
- }
- });
- }
- node = node.$self;
- this._storeRelationNodes = this._storeRelationNodes || {};
- if (this._storeRelationNodes[_p]) {
- this._storeRelationNodes[_p].push(node);
- } else {
- this._storeRelationNodes[_p] = [node];
- }
- if (this._storeRelationNodes[relation]) {
- this._storeRelationNodes[relation].push(node);
- } else {
- this._storeRelationNodes[relation] = [node];
- }
- var ctx = this || {};
- this.getRelationNodes = function (__p) {
- this._storeRelationNodes = this._storeRelationNodes || {};
- return this._storeRelationNodes[__p] || [];
- };
- if (typeof relationInfo.linked === 'function') {
- relationInfo.linked.call(ctx, node);
- }
- if (typeof relationInfo.linkChanged === 'function') {
- var self = this;
- ctx._lifes = ctx._lifes || {};
- ctx._lifes.didUpdate = ctx._lifes.didUpdate || [];
- ctx._lifes.didUpdate.push(function () {
- relationInfo.linkChanged.call(self, node);
- });
- }
- if (typeof relationInfo.unlinked === 'function') {
- var _self = this;
- ctx._lifes = ctx._lifes || {};
- ctx._lifes.didUnmount = ctx._lifes.didUnmount || [];
- ctx._lifes.didUnmount.push(function () {
- relationInfo.unlinked.call(_self, node);
- });
- }
- }
- module.exports = _relationNode;
|