@leofavre/memory-game-component
Version:
A memory game web component.
62 lines (45 loc) • 3.31 kB
JavaScript
"use strict";
function _templateObject2() {
var data = _taggedTemplateLiteral(["\n <style>\n :host {\n --flip-card-perspective: none;\n --flip-card-proportion: 3.5/4.2;\n --flip-card-border: #91a4a4;\n --flip-card-border-radius: 2px;\n --flip-card-background: #aab9b9;\n\n display: block;\n width: 100%;\n font-family: \"Whitney SSm A\", \"Whitney SSm B\", sans-serif;\n font-style: normal;\n font-weight: 400;\n perspective: 1800px;\n}\n\n.memory-game--wrapper {\n display: grid;\n grid-template-columns: repeat(var(--memory-game-cards-per-line, 6), 1fr);\n grid-gap: var(--memory-game-gap, 20px) var(--memory-game-gap, 20px);\n pointer-events: none;\n}\n\n.memory-game--wrapper-interactive {\n pointer-events: all;\n}\n\n.memory-game--wrapper-interactive .memory-game--card {\n cursor: pointer;\n}\n\n.memory-game--media {\n position: absolute;\n display: block;\n top: calc(4% * var(--flip-card-proportion));\n left: 4%;\n width: 92%;\n height: auto;\n background: #fff;\n}\n\n.memory-game--text {\n position: absolute;\n top: 82.5%;\n left: 4%;\n font-size: 12px;\n}\n\n.memory-game--bg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: #fff;\n}\n\n </style>\n <div class=\"memory-game--wrapper", "\">\n ", "\n </div>\n "]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = _taggedTemplateLiteral(["\n <flip-card\n ?revealed=", "\n @click=", "\n class=\"memory-game--card\">\n <span class=\"memory-game--bg\"></span>\n <span class=\"memory-game--text\">", "</span>\n <img class=\"memory-game--media\" src=\"", "\">\n </flip-card>\n "]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _elmnt = require("@leofavre/elmnt");
require("@leofavre/flip-card-component");
var _sequence = _interopRequireDefault(require("../helpers/sequence.js"));
var _memoryGameSelectors = require("../state/memoryGameSelectors.js");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var renderCard = function renderCard(_ref) {
var state = _ref.state,
handleClick = _ref.handleClick;
return function (position) {
var _ref2 = (0, _memoryGameSelectors.getCardAtPosition)(position, state),
name = _ref2.name,
img = _ref2.img;
var revealed = (0, _memoryGameSelectors.isCardRevealed)(position, state) || (0, _memoryGameSelectors.isCardMatched)(position, state);
return _elmnt.html(_templateObject(), revealed, handleClick(position), name, img);
};
};
var _default = function _default(props) {
var interactiveClass = props.state.isInteractive ? ' memory-game--wrapper-interactive' : '';
return _elmnt.html(_templateObject2(), interactiveClass, (0, _sequence.default)((0, _memoryGameSelectors.getNumberOfCards)(props.state)).map(renderCard(props)));
};
exports.default = _default;