UNPKG

@carrot-farm/mongsil-ui

Version:
80 lines (79 loc) 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.breakPointsStringify = exports.areasConvert = void 0; /** * 문자열을 grid areas에서 사용가능한 형태로 변형한다 */ var areasConvert = function (areas) { var _a, _b; var parse = function (arr, i, acc) { if (i < arr.length) { var cur = arr[i].trim(); var matched = cur.match(matchReg); // # 지정된 형식의 row가 아닐경우 if (!matched) { return parse(arr, i + 1, acc); } // # row 처리 var result = matched.map(function (a) { var r = funcReg.exec(a); // # 함수일 경우 처리 if (r) { var name_1 = r[0].slice(0, r[0].indexOf('(')); var params = r[2].replace(/[()'"\s]/g, '').split(','); return func.route(name_1, params); } return a; }); return parse(arr, i + 1, acc + (i > 0 ? '\n' : '') + ("'" + result.join(' ') + "'")); } else { // console.log('> done: \n', acc); return acc; } }; var matchReg = /([0-9a-zA-Z_.]+(\(.*\))?)/g; var funcReg = /([0-9a-zA-Z_]+(\(.*\)))/; var func = { repeat: function (count, str) { var _count = Number(count); var acc = ''; for (var i = 0; i < _count; i++) { acc += i > 0 ? ' ' + str : str; } return acc; }, route: function (name, params) { if (name === 'repeat' && params && params.length > 0) { return this.repeat(params[0], params[1]); } return ''; }, }; return parse((_b = (_a = areas.trim()) === null || _a === void 0 ? void 0 : _a.split('\n')) !== null && _b !== void 0 ? _b : [], 0, ''); }; exports.areasConvert = areasConvert; var breakPointsStringify = function (arr, defaultColumn) { var recursive = function (arr, i, acc) { // console.log('> ', arr); if (i < arr.length) { var _a = arr[i], width = _a.width, column = _a.column; var st = 'clamp('; var c = "100% / " + (column + 1) + " + 0.1%"; var w = "(" + width + "px - 100vw) * 1000"; var str = ''; if (i === 0) { str += c + ", " + w + ", "; } else { str += c + "), " + w + ", "; } return recursive(arr, i + 1, st + acc + str); } else { return acc + ("100% / " + (defaultColumn ? defaultColumn + 1 : 2) + " + 0.1%)"); } }; return recursive(arr.sort(function (a, b) { return (a.width > b.width ? -1 : 1); }), 0, ''); }; exports.breakPointsStringify = breakPointsStringify;