@patternplate/client
Version:
Universal javascript client application for patternplate
143 lines (113 loc) • 7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactRedux = require("react-redux");
var _react = _interopRequireDefault(require("react"));
var _remark = _interopRequireDefault(require("remark"));
var _remarkGemojiToEmoji = _interopRequireDefault(require("remark-gemoji-to-emoji"));
var _components = require("@patternplate/components");
var item = _interopRequireWildcard(require("../../selectors/item"));
var _triggerFullscreen = _interopRequireDefault(require("../../containers/trigger-fullscreen"));
var _toggleOpacity = _interopRequireDefault(require("../../containers/toggle-opacity"));
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 }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
const processor = (0, _remark.default)().use(_remarkGemojiToEmoji.default);
var _default = (0, _reactRedux.connect)(mapProps)(PatternSheet);
exports.default = _default;
function PatternSheet(props) {
return _react.default.createElement(StyledPatternSheet, {
screenshot: props.screenshot
}, _react.default.createElement(StyledPatternSheetContainer, null, _react.default.createElement(StyledControlsBox, null, _react.default.createElement(StyledName, null, props.name, _react.default.createElement(StyledVersion, null, "@", props.version)), _react.default.createElement(_components.ThemeProvider, {
theme: _components.themes.getThemes().dark
}, _react.default.createElement(StyledControlsArea, {
orient: "right"
}, _react.default.createElement(StyledControlsItem, null, _react.default.createElement(_toggleOpacity.default, null)), _react.default.createElement(StyledControlsItem, null, _react.default.createElement(_triggerFullscreen.default, null))))), props.description && _react.default.createElement(StyledDescription, null, processor.processSync(props.description).contents), _react.default.createElement(StyledBoxLine, null, _react.default.createElement(SearchTrigger, {
field: "flag",
search: props.flag
}, _react.default.createElement(_components.Flag, null, props.flag)), _react.default.createElement(StyledTagList, null, props.tags.map((tag, index) => _react.default.createElement(SearchTrigger, {
key: `${tag}-${index}`,
field: "tags",
search: tag
}, _react.default.createElement(_components.Tag, null, tag))))), typeof props.doc === "string" && _react.default.createElement(StyledMarkdownBox, null, _react.default.createElement(_components.Markdown, {
linkable: true,
source: props.doc
}))));
}
const StyledSearchTrigger = _components.styled.span.withConfig({
displayName: "pattern-sheet__StyledSearchTrigger"
})(["&:not(:first-child){margin-left:10px;}"]);
const StyledLink = (0, _components.styled)(_components.Link).withConfig({
displayName: "pattern-sheet__StyledLink"
})(["text-decoration:none;"]);
function SearchTrigger(props) {
return _react.default.createElement(StyledSearchTrigger, null, _react.default.createElement(StyledLink, {
className: props.className,
query: {
"search-enabled": true,
search: `${props.field}=${props.search}`
},
title: `Search other patterns with ${props.field} "${props.search}"`
}, props.children));
}
function mapProps(state) {
return {
doc: item.selectContents(state),
description: item.selectDescription(state),
id: state.id,
icon: item.selectIcon(state),
type: item.selectType(state),
name: item.selectName(state),
flag: item.selectFlag(state),
tags: item.selectTags(state),
version: item.selectVersion(state),
screenshot: state.routing.locationBeforeTransitions.query.screenshot === "true"
};
}
const TOOLBAR_HEIGHT = 60;
const StyledName = (0, _components.styled)(props => _react.default.createElement(_components.Headline, _extends({}, props, {
as: "h1",
order: 1
}))).withConfig({
displayName: "pattern-sheet__StyledName"
})(["margin:0 0 10px 0;"]);
const StyledVersion = (0, _components.styled)(props => _react.default.createElement(_components.Headline, _extends({}, props, {
as: "small",
order: 3
}))).withConfig({
displayName: "pattern-sheet__StyledVersion"
})(["display:inline-block;color:", ";margin:0;"], props => props.theme.colors.color);
const StyledDescription = (0, _components.styled)(_components.Text).withConfig({
displayName: "pattern-sheet__StyledDescription"
})(["color:", ";margin-bottom:20px;"], props => props.theme.colors.recess);
const StyledPatternSheet = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledPatternSheet"
})(["position:relative;z-index:2;box-sizing:border-box;width:100%;min-height:30vh;margin-top:70vh;padding:30px 60px;border-top:1px solid ", ";background:", ";"], props => props.theme.colors.border, props => props.theme.colors.background);
const ORIENTATION = props => {
const direction = props.orient === "right" ? "left" : "right";
return `margin-${direction}: auto`;
};
const StyledPatternSheetContainer = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledPatternSheetContainer"
})(["margin:0 auto;max-width:740px;"]);
const StyledControlsArea = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledControlsArea"
})(["display:flex;", ";"], ORIENTATION);
const StyledControlsBox = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledControlsBox"
})(["display:flex;align-items:center;flex:0 0 auto;position:relative;z-index:2;box-sizing:border-box;background:white;"]);
const StyledControlsItem = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledControlsItem"
})(["& + &{padding-left:10px;}"]);
const StyledTagList = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledTagList"
})(["display:inline-block;margin-left:10px;padding:2px 10px;border-left:1px solid ", ";"], props => props.theme.colors.border);
const StyledBoxLine = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledBoxLine"
})(["display:flex;align-items:center;min-height:32px;"]);
const StyledMarkdownBox = _components.styled.div.withConfig({
displayName: "pattern-sheet__StyledMarkdownBox"
})(["margin-top:30px;"]);
//# sourceMappingURL=pattern-sheet.js.map