UNPKG

1.85 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _mapKeys = require('lodash/fp/mapKeys');
6
7var _mapKeys2 = _interopRequireDefault(_mapKeys);
8
9var _react = require('react');
10
11var _react2 = _interopRequireDefault(_react);
12
13var _reactDom = require('react-dom');
14
15var _reactDom2 = _interopRequireDefault(_reactDom);
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19const DefaultProvider = props => props.children;
20
21const link = (Provider, Component) => (scope, element, attrs) => {
22 const update = vTree => {
23 _reactDom2.default.render(vTree, element[0]);
24 };
25
26 const refresh = (context = {}, props = {}) => {
27 const vTree = _react2.default.createElement(
28 Provider,
29 context,
30 _react2.default.createElement(Component, props)
31 );
32
33 update(vTree);
34 };
35
36 scope.$watch('context', () => refresh(scope.context, scope.props), true);
37 scope.$watch('props', () => refresh(scope.context, scope.props), true);
38
39 scope.$on('$destroy', () => window.angular.element(element).remove());
40};
41
42const createDirective = (app, componentName, Provider, Component) => {
43 const directive = () => {
44 return {
45 restrict: 'E',
46 link: link(Provider, Component),
47 scope: {
48 props: '=',
49 context: '='
50 }
51 };
52 };
53
54 app.directive(componentName, [directive]);
55};
56
57/**
58 * examples :
59 * <slide value="slideContent"></slide>
60 * <module-bubble value="modData()"></module-bubble>
61 */
62const createDirectives = (app, Provider, components) => {
63 const toDirective = key => {
64 const componentName = `coorp${key}`;
65 const Component = components[key];
66 createDirective(app, componentName, Provider || DefaultProvider, Component);
67 };
68
69 return (0, _mapKeys2.default)(toDirective, components);
70};
71
72exports.default = createDirectives;
73//# sourceMappingURL=index.js.map
\No newline at end of file