@patternplate/client
Version:
Universal javascript client application for patternplate
56 lines (41 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _xmldom = require("xmldom");
var _pretty = _interopRequireDefault(require("pretty"));
var _reactRedux = require("react-redux");
var _reselect = require("reselect");
var _behaviours = require("../behaviours");
var _components = require("@patternplate/components");
var item = _interopRequireWildcard(require("../selectors/item"));
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Import * as actions from '../actions';
var _default = (0, _reactRedux.connect)(mapProps)((0, _behaviours.skippable)((0, _behaviours.mountable)(_components.CodePane)));
exports.default = _default;
const parser = new _xmldom.DOMParser();
const serializer = new _xmldom.XMLSerializer();
const selectDemoSource = (0, _reselect.createSelector)(state => state.demo.contents, docSource => {
if (typeof docSource !== "string") {
return docSource;
}
const doc = parser.parseFromString(docSource, "text/html");
const container = findContainer(doc);
const serialized = serializer.serializeToString(container, "text/html");
const start = serialized.replace(/^<div xmlns="http:\/\/www\.w3\.org\/1999\/xhtml">/, "");
return start.replace(/<\/div>$/, "");
});
const selectSource = (0, _reselect.createSelector)(selectDemoSource, contents => typeof contents === "string" ? (0, _pretty.default)(contents) : contents);
function findContainer(doc) {
const body = [...doc.documentElement.childNodes].find(node => node.nodeName.toLowerCase() === "body");
return [...body.childNodes].find(node => node.nodeName.toLowerCase() === "div");
}
function mapProps(state) {
return {
active: item.selectType(state) === "pattern",
source: selectSource(state)
};
}
//# sourceMappingURL=code-pane.js.map