UNPKG

@patternplate/client

Version:

Universal javascript client application for patternplate

56 lines (41 loc) 2.33 kB
"use strict"; 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