UNPKG

2.17 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _react = require("react");
8
9var _reactDom = require("react-dom");
10
11var _reactDom2 = _interopRequireDefault(_reactDom);
12
13var _utils = require("./utils");
14
15var _platform = require("./platform");
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19var createElement = function createElement(x) {
20 return _platform.isClient ? document.createElement(x) : _utils.noop;
21};
22
23var bodyAppendElement = function bodyAppendElement(x) {
24 return _platform.isClient ? document.body.appendChild(x) : _utils.noop;
25};
26
27var bodyRemoveElement = function bodyRemoveElement(x) {
28 return _platform.isClient ? document.body.removeChild(x) : _utils.noop;
29};
30
31var ReactLayerMixin = function ReactLayerMixin() {
32 return {
33 componentWillMount: function componentWillMount() {
34 this.targetBounds = null;
35 /* Create a DOM node for mounting the React Layer. */
36 this.layerContainerNode = createElement("div");
37 },
38 componentDidMount: function componentDidMount() {
39 /* Mount the mount. */
40 bodyAppendElement(this.layerContainerNode);
41 this._layerRender();
42 },
43 componentDidUpdate: function componentDidUpdate() {
44 this._layerRender();
45 },
46 componentWillUnmount: function componentWillUnmount() {
47 this._layerUnrender();
48 /* Unmount the mount. */
49 bodyRemoveElement(this.layerContainerNode);
50 },
51 _layerRender: function _layerRender() {
52 var layerReactEl = this.renderLayer();
53 if (!layerReactEl) {
54 this.layerReactComponent = null;
55 _reactDom2.default.unstable_renderSubtreeIntoContainer(this, _react.DOM.noscript(), this.layerContainerNode);
56 } else {
57 this.layerReactComponent = _reactDom2.default.unstable_renderSubtreeIntoContainer(this, layerReactEl, this.layerContainerNode);
58 }
59 },
60 _layerUnrender: function _layerUnrender() {
61 if (this.layerWillUnmount) this.layerWillUnmount(this.layerContainerNode);
62 _reactDom2.default.unmountComponentAtNode(this.layerContainerNode);
63 }
64 };
65};
66
67exports.default = ReactLayerMixin;
\No newline at end of file