UNPKG

kitchen-simulator

Version:

It is a kitchen simulator (self-contained micro-frontend).

200 lines (191 loc) 9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.areaPolygon = void 0; exports.getInstallationSuffix = getInstallationSuffix; exports.getToeKickSKU = void 0; exports.isEmpty = isEmpty; exports.isEqualInstallationType = isEqualInstallationType; exports.makeSKUForMagento = makeSKUForMagento; exports.searchForSkuValue = exports.returnReplaceableDeepSearchType = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _helper = require("../../utils/helper"); var _constants = require("../../constants"); var searchForSkuValue = exports.searchForSkuValue = function searchForSkuValue(catalog, selectedLayer, elementType) { return new Promise(function (resolve) { if (elementType) { Object.values(catalog.elements).forEach(function (value) { if (value.obj && value.obj.skuArray) { if (value.obj.skuArray.find(function (skItem) { return skItem.sku === elementType; })) { saveDeepSearchType(elementType, value.name); resolve({ isAvailable: true, rootType: value.name }); } } }); } else { selectedLayer.items.valueSeq().forEach(function (item) { Object.values(catalog.elements).forEach(function (value) { if (value.obj && value.obj.skuArray) { if (value.obj.skuArray.find(function (skItem) { return skItem.sku === item.type; })) { resolve({ isAvailable: true, rootType: value.name }); } } }); }); } resolve({ isAvailable: false }); }); }; var returnReplaceableDeepSearchType = exports.returnReplaceableDeepSearchType = function returnReplaceableDeepSearchType(type) { var DeepSearchTypes = JSON.parse(sessionStorage.getItem('deepSearchTypes')) || []; var replaceableType = DeepSearchTypes.find(function (item) { return item.type === type; }); return replaceableType && replaceableType.foundType || ''; }; function getInstallationSuffix(type) { var _doorColor$isAssemble, _doorColor$install; var doorColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (!doorColor) { console.error('getInstallationSuffix received false argument : ', doorColor); return doorColor; } doorColor = (0, _helper.toPlainObject)(doorColor); // If doorColor.isAssembled is explicitly set → trust it. // Else → fall back to checking install. var isAssembled = (_doorColor$isAssemble = doorColor.isAssembled) !== null && _doorColor$isAssemble !== void 0 ? _doorColor$isAssemble : ((_doorColor$install = doorColor.install) === null || _doorColor$install === void 0 ? void 0 : _doorColor$install.toLowerCase()) === _constants.INSTALLATION_TYPE_NAME.ASSEMBLED.toLowerCase(); if (type === _constants.INSTALLATION_SUFFIX_TYPE.SKU) { return isAssembled ? _constants.INSTALLATION_TYPE_SKU_SUFFIX.ASSEMBLED : _constants.INSTALLATION_TYPE_SKU_SUFFIX.RTA; } else { return isAssembled ? _constants.INSTALLATION_TYPE_NAME.ASSEMBLED : _constants.INSTALLATION_TYPE_NAME.RTA; } } function isEqualInstallationType(doorColor1, doorColor2) { var _getInstallationSuffi, _getInstallationSuffi2; return ((_getInstallationSuffi = getInstallationSuffix(_constants.INSTALLATION_SUFFIX_TYPE.NAME, doorColor1)) === null || _getInstallationSuffi === void 0 ? void 0 : _getInstallationSuffi.toLowerCase()) === ((_getInstallationSuffi2 = getInstallationSuffix(_constants.INSTALLATION_SUFFIX_TYPE.NAME, doorColor2)) === null || _getInstallationSuffi2 === void 0 ? void 0 : _getInstallationSuffi2.toLowerCase()); } function buildSKU(baseSKU) { var doorColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var colorSuffix = doorColor.color_sku_alias || doorColor.sku || ''; var installationSuffix = getInstallationSuffix(_constants.INSTALLATION_SUFFIX_TYPE.SKU, doorColor); return [baseSKU, colorSuffix, installationSuffix].filter(Boolean).join('-'); } function buildToeKickSKU() { var doorColor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var catalog = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // Base toe kick SKU (can be swapped between ['TKC', 'TK8', 'TK96']) var baseSKU = getToeKickSKU(doorColor, catalog); if (baseSKU === false) return false; return buildSKU(baseSKU, doorColor); } function buildRegularSKU(element, catalog) { var _internal_sku; var doorColor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; // Try to resolve element in catalog var _element = catalog.elements[element.type] || catalog.elements[returnReplaceableDeepSearchType(element.type)]; if (!_element) return false; // Start from default SKU var internal_sku = _element.obj.sku_number; // Override with SKU matching door color if found var tempSKU = _element.obj.skuArray.find(function (el) { return el.door_color_id === doorColor.id; }); if (tempSKU !== null && tempSKU !== void 0 && tempSKU.sku) { internal_sku = tempSKU.sku; } // Normalize left/right variants internal_sku = (_internal_sku = internal_sku) === null || _internal_sku === void 0 ? void 0 : _internal_sku.replace(/-([RL])$/, ''); // Reuse generic builder for suffixes return buildSKU(internal_sku, doorColor); } // element : cabinet // catalog : all cabinet info function makeSKUForMagento(element, catalog, categoryData) { var _element$category; if ((_element$category = element.category) !== null && _element$category !== void 0 && _element$category.toLowerCase().includes('molding')) { element.type = element.name; } var doorColor = (0, _helper.toPlainObject)(element.doorStyle); if (!doorColor) return false; return element.name === _constants.TOE_KICK_MOLDING ? buildToeKickSKU(doorColor, catalog) : buildRegularSKU(element, catalog, doorColor); } function isEmpty(value) { if (value === undefined || value === null || (0, _typeof2["default"])(value) === 'object' && Object.keys(value).length === 0 || typeof value === 'string' && value.trim().length === 0) return true;else return false; } var saveDeepSearchType = function saveDeepSearchType(type, foundType) { var DeepSearchTypes = JSON.parse(sessionStorage.getItem('deepSearchTypes')) || []; var isAlreadyAvailable = DeepSearchTypes.find(function (item) { return item.type === type; }); if (!isAlreadyAvailable) { DeepSearchTypes.push({ type: type, foundType: foundType }); } sessionStorage.setItem('deepSearchTypes', JSON.stringify(DeepSearchTypes)); }; /** * @param {Boolean} flag true: for thumbnail, false: default value * @returns */ var getToeKickSKU = exports.getToeKickSKU = function getToeKickSKU() { var doorColor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var catalog = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var flag = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var catalogData = catalog.elements || []; var itemDoorColorID = (doorColor === null || doorColor === void 0 ? void 0 : doorColor.id) || []; var skuData = ''; Object.keys(catalogData).forEach(function (data) { var obj = catalogData[data].obj; if ((obj === null || obj === void 0 ? void 0 : obj.cabinet_category) === _constants.TOE_KICK_MOLDING) { var _obj$skuArray; var found = (_obj$skuArray = obj.skuArray) === null || _obj$skuArray === void 0 ? void 0 : _obj$skuArray.find(function (cData) { return cData.door_color_id === itemDoorColorID; }); if (found) { skuData = flag ? data : found === null || found === void 0 ? void 0 : found.sku; } } }); if (!skuData) return false; return skuData; }; function normalize(point) { if (Array.isArray(point)) { return { x: point[0], y: point[1] }; } return point; } var areaPolygon = exports.areaPolygon = function areaPolygon(points) { var signed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (!Array.isArray(points) || points.length < 3) return 0; // normalize and ensure closed ring (without mutating input) var pts = points.map(normalize); var closed = pts.length > 0 && (pts[0].x !== pts[pts.length - 1].x || pts[0].y !== pts[pts.length - 1].y) ? [].concat((0, _toConsumableArray2["default"])(pts), [pts[0]]) : pts; var det = 0; var l = closed.length - 1; // last index before the duplicated first point for (var i = 0; i < l; i++) { det += closed[i].x * closed[i + 1].y - closed[i].y * closed[i + 1].x; } var area = det / 2; return signed ? area : Math.abs(area); };