@bigbinary/neeto-themes-frontend 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -36
- package/app/javascript/src/translations/en.json +5 -1
- package/dist/NeetoThemesBuilder.js +1894 -0
- package/dist/NeetoThemesBuilder.js.map +1 -0
- package/dist/{index.cjs.js → cjs/NeetoThemesBuilder.js} +407 -507
- package/dist/cjs/NeetoThemesBuilder.js.map +1 -0
- package/dist/cjs/hooks.js +22 -0
- package/dist/cjs/hooks.js.map +1 -0
- package/dist/cjs/index.js +56 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/utils.js +17 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/hooks.js +14 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index-09d44807.js +174 -0
- package/dist/index-09d44807.js.map +1 -0
- package/dist/index-383fae09.js +159 -0
- package/dist/index-383fae09.js.map +1 -0
- package/dist/index.js +45 -1990
- package/dist/index.js.map +1 -1
- package/dist/useThemeUtils-148b9f27.js +111 -0
- package/dist/useThemeUtils-148b9f27.js.map +1 -0
- package/dist/useThemeUtils-3875c1d1.js +102 -0
- package/dist/useThemeUtils-3875c1d1.js.map +1 -0
- package/dist/utils.js +6 -0
- package/dist/utils.js.map +1 -0
- package/package.json +24 -11
- package/dist/index.cjs.js.map +0 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var neetoCist = require('@bigbinary/neeto-cist');
|
|
4
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
5
|
+
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
6
|
+
var Toastr = require('@bigbinary/neetoui/Toastr');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
|
|
11
|
+
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
|
|
12
|
+
var Toastr__default = /*#__PURE__*/_interopDefaultLegacy(Toastr);
|
|
13
|
+
|
|
14
|
+
var BASE_URL = "neeto_themes_engine";
|
|
15
|
+
var WHITE = "255, 255, 255";
|
|
16
|
+
var BLACK = "0, 0, 0";
|
|
17
|
+
|
|
18
|
+
var getImageFromUrl = function getImageFromUrl(source) {
|
|
19
|
+
var image = new Image();
|
|
20
|
+
image.crossOrigin = "anonymous";
|
|
21
|
+
image.src = source;
|
|
22
|
+
return new Promise(function (resolve) {
|
|
23
|
+
image.onload = function () {
|
|
24
|
+
resolve(image);
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
var getDominantColorFromUrl = /*#__PURE__*/function () {
|
|
29
|
+
var _ref = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(imageUrl) {
|
|
30
|
+
var image, context, c;
|
|
31
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
32
|
+
while (1) switch (_context.prev = _context.next) {
|
|
33
|
+
case 0:
|
|
34
|
+
_context.prev = 0;
|
|
35
|
+
_context.next = 3;
|
|
36
|
+
return getImageFromUrl(imageUrl);
|
|
37
|
+
case 3:
|
|
38
|
+
image = _context.sent;
|
|
39
|
+
context = document.createElement("canvas").getContext("2d");
|
|
40
|
+
context === null || context === void 0 || context.drawImage(image, 0, 0, 1, 1);
|
|
41
|
+
c = context === null || context === void 0 ? void 0 : context.getImageData(0, 0, 1, 1).data;
|
|
42
|
+
if (!c) {
|
|
43
|
+
_context.next = 9;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
return _context.abrupt("return", "#".concat(((1 << 24) + (c[0] << 16) + (c[1] << 8) + c[2]).toString(16).slice(1)));
|
|
47
|
+
case 9:
|
|
48
|
+
return _context.abrupt("return", null);
|
|
49
|
+
case 12:
|
|
50
|
+
_context.prev = 12;
|
|
51
|
+
_context.t0 = _context["catch"](0);
|
|
52
|
+
Toastr__default["default"].error(_context.t0);
|
|
53
|
+
return _context.abrupt("return", null);
|
|
54
|
+
case 16:
|
|
55
|
+
case "end":
|
|
56
|
+
return _context.stop();
|
|
57
|
+
}
|
|
58
|
+
}, _callee, null, [[0, 12]]);
|
|
59
|
+
}));
|
|
60
|
+
return function getDominantColorFromUrl(_x) {
|
|
61
|
+
return _ref.apply(this, arguments);
|
|
62
|
+
};
|
|
63
|
+
}();
|
|
64
|
+
var scrollElementIntoView = function scrollElementIntoView(elementId) {
|
|
65
|
+
var elementToScroll = document.getElementById(elementId);
|
|
66
|
+
elementToScroll === null || elementToScroll === void 0 || elementToScroll.scrollIntoView({
|
|
67
|
+
behavior: "smooth"
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
var isFunction = function isFunction(obj) {
|
|
71
|
+
return typeof obj === "function";
|
|
72
|
+
};
|
|
73
|
+
var hexToRgba = function hexToRgba(hex) {
|
|
74
|
+
var result = /^#?(?:([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?|([a-f\d]{2})([a-f\d]{2})([a-f\d]{2}))$/i.exec(hex);
|
|
75
|
+
if (!result) return null;
|
|
76
|
+
var r = parseInt(result[1] || result[5], 16);
|
|
77
|
+
var g = parseInt(result[2] || result[6], 16);
|
|
78
|
+
var b = parseInt(result[3] || result[7], 16);
|
|
79
|
+
var a = result[4] ? Math.round(parseInt(result[4], 16) / 2.55) / 100 : undefined;
|
|
80
|
+
return "".concat(r, ", ").concat(g, ", ").concat(b).concat(a !== undefined ? ", ".concat(a) : "");
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var root = document.querySelector(":root");
|
|
84
|
+
var applyNesting = function applyNesting(css, parent) {
|
|
85
|
+
return "\n.".concat(parent, " {\n ").concat(css, "\n}");
|
|
86
|
+
};
|
|
87
|
+
var setVariable = function setVariable(name, value, variableNamesMap) {
|
|
88
|
+
var variableName = variableNamesMap[name];
|
|
89
|
+
if (!variableName) return;
|
|
90
|
+
root.style.setProperty(variableName, value);
|
|
91
|
+
};
|
|
92
|
+
var isPropertyIndependent = function isPropertyIndependent(key, theme, schema) {
|
|
93
|
+
var property = neetoCist.findBy({
|
|
94
|
+
key: key
|
|
95
|
+
}, schema);
|
|
96
|
+
if (neetoCist.isNotPresent(property)) return false;
|
|
97
|
+
var conditionalKey = property === null || property === void 0 ? void 0 : property.dependsOn;
|
|
98
|
+
if (neetoCist.isNotPresent(conditionalKey)) return true;
|
|
99
|
+
var dependentPropertySchema = neetoCist.findBy({
|
|
100
|
+
key: conditionalKey
|
|
101
|
+
}, schema);
|
|
102
|
+
var dependentProperty = neetoCist.findBy({
|
|
103
|
+
key: conditionalKey
|
|
104
|
+
}, theme.properties);
|
|
105
|
+
if (dependentPropertySchema.kind === "image") {
|
|
106
|
+
var _theme$snakeToCamelCa;
|
|
107
|
+
return neetoCist.isPresent((_theme$snakeToCamelCa = theme[neetoCist.snakeToCamelCase(conditionalKey)]) === null || _theme$snakeToCamelCa === void 0 ? void 0 : _theme$snakeToCamelCa.url);
|
|
108
|
+
} else if (dependentPropertySchema.kind === "boolean") {
|
|
109
|
+
return (dependentProperty === null || dependentProperty === void 0 ? void 0 : dependentProperty.value) !== "false";
|
|
110
|
+
}
|
|
111
|
+
return neetoCist.isPresent(dependentProperty === null || dependentProperty === void 0 ? void 0 : dependentProperty.value);
|
|
112
|
+
};
|
|
113
|
+
var setCustomCSS = function setCustomCSS(_ref) {
|
|
114
|
+
var css = _ref.css,
|
|
115
|
+
elementId = _ref.elementId,
|
|
116
|
+
parentElementClass = _ref.parentElementClass;
|
|
117
|
+
var wrapper = document.querySelector(".".concat(parentElementClass));
|
|
118
|
+
if (!wrapper) return;
|
|
119
|
+
var styleTag = wrapper.querySelector("#".concat(elementId));
|
|
120
|
+
if (!styleTag) {
|
|
121
|
+
styleTag = document.createElement("style");
|
|
122
|
+
}
|
|
123
|
+
styleTag.textContent = applyNesting(css, parentElementClass);
|
|
124
|
+
styleTag.id = elementId;
|
|
125
|
+
wrapper.appendChild(styleTag);
|
|
126
|
+
};
|
|
127
|
+
var setTheme = function setTheme(theme, variableNamesMap, themeConfig) {
|
|
128
|
+
if (neetoCist.isNotPresent(theme === null || theme === void 0 ? void 0 : theme.properties)) return;
|
|
129
|
+
theme.properties.forEach(function (property) {
|
|
130
|
+
var attribute = neetoCist.snakeToCamelCase(property.key);
|
|
131
|
+
if (property.kind !== "overlay_opacity" && !isPropertyIndependent(property.key, theme, themeConfig)) {
|
|
132
|
+
setVariable(attribute, "", variableNamesMap);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (property.kind === "color") {
|
|
136
|
+
setVariable(attribute, hexToRgba(property.value), variableNamesMap);
|
|
137
|
+
} else if (property.kind === "overlay_opacity") {
|
|
138
|
+
var overlayOpacity = Number(property.value);
|
|
139
|
+
setVariable(neetoCist.snakeToCamelCase("".concat(property.key, "_overlay_opacity")), Math.abs(overlayOpacity / 100), variableNamesMap);
|
|
140
|
+
setVariable(neetoCist.snakeToCamelCase("".concat(property.key, "_overlay_color")), overlayOpacity < 0 ? BLACK : WHITE, variableNamesMap);
|
|
141
|
+
} else if (property.kind === "radius") {
|
|
142
|
+
setVariable(attribute, "".concat(property.value, "px"), variableNamesMap);
|
|
143
|
+
} else if (property.kind === "custom_css") {
|
|
144
|
+
var _findBy;
|
|
145
|
+
setCustomCSS({
|
|
146
|
+
css: property.value,
|
|
147
|
+
elementId: property.key,
|
|
148
|
+
parentElementClass: (_findBy = neetoCist.findBy({
|
|
149
|
+
kind: "custom_css"
|
|
150
|
+
}, themeConfig)) === null || _findBy === void 0 ? void 0 : _findBy.parentClass
|
|
151
|
+
});
|
|
152
|
+
} else {
|
|
153
|
+
setVariable(attribute, property.value, variableNamesMap);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
neetoCist.filterBy({
|
|
157
|
+
kind: "image"
|
|
158
|
+
}, themeConfig).forEach(function (_ref2) {
|
|
159
|
+
var _theme$attribute;
|
|
160
|
+
var key = _ref2.key;
|
|
161
|
+
var attribute = neetoCist.snakeToCamelCase(key);
|
|
162
|
+
setVariable(attribute, "url(".concat((_theme$attribute = theme[attribute]) === null || _theme$attribute === void 0 ? void 0 : _theme$attribute.url, ")"), variableNamesMap);
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
exports.BASE_URL = BASE_URL;
|
|
167
|
+
exports.getDominantColorFromUrl = getDominantColorFromUrl;
|
|
168
|
+
exports.isFunction = isFunction;
|
|
169
|
+
exports.isPropertyIndependent = isPropertyIndependent;
|
|
170
|
+
exports.scrollElementIntoView = scrollElementIntoView;
|
|
171
|
+
exports.setCustomCSS = setCustomCSS;
|
|
172
|
+
exports.setTheme = setTheme;
|
|
173
|
+
exports.setVariable = setVariable;
|
|
174
|
+
//# sourceMappingURL=index-09d44807.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-09d44807.js","sources":["../app/javascript/src/constants/index.js","../app/javascript/src/components/utils.js","../app/javascript/src/utils/index.js"],"sourcesContent":["export const BASE_URL = \"neeto_themes_engine\";\nexport const WHITE = \"255, 255, 255\";\nexport const BLACK = \"0, 0, 0\";\n","import { Toastr } from \"neetoui\";\n\nexport const getImageFromUrl = source => {\n const image = new Image();\n image.crossOrigin = \"anonymous\";\n image.src = source;\n\n return new Promise(resolve => {\n image.onload = () => {\n resolve(image);\n };\n });\n};\n\nexport const getDominantColorFromUrl = async imageUrl => {\n try {\n const image = await getImageFromUrl(imageUrl);\n const context = document.createElement(\"canvas\").getContext(\"2d\");\n context?.drawImage(image, 0, 0, 1, 1);\n const c = context?.getImageData(0, 0, 1, 1).data;\n\n if (c) {\n return `#${((1 << 24) + (c[0] << 16) + (c[1] << 8) + c[2])\n .toString(16)\n .slice(1)}`;\n }\n\n return null;\n } catch (error) {\n Toastr.error(error);\n\n return null;\n }\n};\n\nexport const scrollElementIntoView = elementId => {\n const elementToScroll = document.getElementById(elementId);\n elementToScroll?.scrollIntoView({ behavior: \"smooth\" });\n};\n\nexport const isFunction = obj => typeof obj === \"function\";\n\nexport const hexToRgba = hex => {\n const result =\n /^#?(?:([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?|([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2}))$/i.exec(\n hex\n );\n\n if (!result) return null;\n\n const r = parseInt(result[1] || result[5], 16);\n const g = parseInt(result[2] || result[6], 16);\n const b = parseInt(result[3] || result[7], 16);\n const a = result[4]\n ? Math.round(parseInt(result[4], 16) / 2.55) / 100\n : undefined;\n\n return `${r}, ${g}, ${b}${a !== undefined ? `, ${a}` : \"\"}`;\n};\n\nexport const hexToRgb = hex => hexToRgba(hex?.slice(0, 7));\n","import {\n filterBy,\n findBy,\n isNotPresent,\n isPresent,\n snakeToCamelCase,\n} from \"neetocist\";\n\nimport { hexToRgba } from \"components/utils\";\nimport { BLACK, WHITE } from \"src/constants\";\n\nconst root = document.querySelector(\":root\");\n\nconst applyNesting = (css, parent) => `\n.${parent} {\n ${css}\n}`;\n\nexport const setVariable = (name, value, variableNamesMap) => {\n const variableName = variableNamesMap[name];\n if (!variableName) return;\n\n root.style.setProperty(variableName, value);\n};\n\nexport const isPropertyIndependent = (key, theme, schema) => {\n const property = findBy({ key }, schema);\n\n if (isNotPresent(property)) return false;\n\n const conditionalKey = property?.dependsOn;\n if (isNotPresent(conditionalKey)) return true;\n\n const dependentPropertySchema = findBy({ key: conditionalKey }, schema);\n\n const dependentProperty = findBy({ key: conditionalKey }, theme.properties);\n\n if (dependentPropertySchema.kind === \"image\") {\n return isPresent(theme[snakeToCamelCase(conditionalKey)]?.url);\n } else if (dependentPropertySchema.kind === \"boolean\") {\n return dependentProperty?.value !== \"false\";\n }\n\n return isPresent(dependentProperty?.value);\n};\n\nexport const setCustomCSS = ({ css, elementId, parentElementClass }) => {\n const wrapper = document.querySelector(`.${parentElementClass}`);\n if (!wrapper) return;\n\n let styleTag = wrapper.querySelector(`#${elementId}`);\n if (!styleTag) {\n styleTag = document.createElement(\"style\");\n }\n\n styleTag.textContent = applyNesting(css, parentElementClass);\n styleTag.id = elementId;\n wrapper.appendChild(styleTag);\n};\n\nexport const setTheme = (theme, variableNamesMap, themeConfig) => {\n if (isNotPresent(theme?.properties)) return;\n\n theme.properties.forEach(property => {\n const attribute = snakeToCamelCase(property.key);\n\n if (\n property.kind !== \"overlay_opacity\" &&\n !isPropertyIndependent(property.key, theme, themeConfig)\n ) {\n setVariable(attribute, \"\", variableNamesMap);\n\n return;\n }\n\n if (property.kind === \"color\") {\n setVariable(attribute, hexToRgba(property.value), variableNamesMap);\n } else if (property.kind === \"overlay_opacity\") {\n const overlayOpacity = Number(property.value);\n\n setVariable(\n snakeToCamelCase(`${property.key}_overlay_opacity`),\n Math.abs(overlayOpacity / 100),\n variableNamesMap\n );\n\n setVariable(\n snakeToCamelCase(`${property.key}_overlay_color`),\n overlayOpacity < 0 ? BLACK : WHITE,\n variableNamesMap\n );\n } else if (property.kind === \"radius\") {\n setVariable(attribute, `${property.value}px`, variableNamesMap);\n } else if (property.kind === \"custom_css\") {\n setCustomCSS({\n css: property.value,\n elementId: property.key,\n parentElementClass: findBy({ kind: \"custom_css\" }, themeConfig)\n ?.parentClass,\n });\n } else {\n setVariable(attribute, property.value, variableNamesMap);\n }\n });\n\n filterBy({ kind: \"image\" }, themeConfig).forEach(({ key }) => {\n const attribute = snakeToCamelCase(key);\n setVariable(attribute, `url(${theme[attribute]?.url})`, variableNamesMap);\n });\n};\n"],"names":["BASE_URL","WHITE","BLACK","getImageFromUrl","source","image","Image","crossOrigin","src","Promise","resolve","onload","getDominantColorFromUrl","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","imageUrl","context","c","wrap","_callee$","_context","prev","next","sent","document","createElement","getContext","drawImage","getImageData","data","abrupt","concat","toString","slice","t0","Toastr","error","stop","_x","apply","arguments","scrollElementIntoView","elementId","elementToScroll","getElementById","scrollIntoView","behavior","isFunction","obj","hexToRgba","hex","result","exec","r","parseInt","g","b","a","Math","round","undefined","root","querySelector","applyNesting","css","parent","setVariable","name","value","variableNamesMap","variableName","style","setProperty","isPropertyIndependent","key","theme","schema","property","findBy","isNotPresent","conditionalKey","dependsOn","dependentPropertySchema","dependentProperty","properties","kind","_theme$snakeToCamelCa","isPresent","snakeToCamelCase","url","setCustomCSS","parentElementClass","wrapper","styleTag","textContent","id","appendChild","setTheme","themeConfig","forEach","attribute","overlayOpacity","Number","abs","_findBy","parentClass","filterBy","_ref2","_theme$attribute"],"mappings":";;;;;;;;;;;;;AAAO,IAAMA,QAAQ,GAAG,sBAAqB;AACtC,IAAMC,KAAK,GAAG,eAAe,CAAA;AAC7B,IAAMC,KAAK,GAAG,SAAS;;ACAvB,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAGC,MAAM,EAAI;AACvC,EAAA,IAAMC,KAAK,GAAG,IAAIC,KAAK,EAAE,CAAA;EACzBD,KAAK,CAACE,WAAW,GAAG,WAAW,CAAA;EAC/BF,KAAK,CAACG,GAAG,GAAGJ,MAAM,CAAA;AAElB,EAAA,OAAO,IAAIK,OAAO,CAAC,UAAAC,OAAO,EAAI;IAC5BL,KAAK,CAACM,MAAM,GAAG,YAAM;MACnBD,OAAO,CAACL,KAAK,CAAC,CAAA;KACf,CAAA;AACH,GAAC,CAAC,CAAA;AACJ,CAAC,CAAA;IAEYO,uBAAuB,gBAAA,YAAA;EAAA,IAAAC,IAAA,GAAAC,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAG,SAAAC,OAAAA,CAAMC,QAAQ,EAAA;AAAA,IAAA,IAAAb,KAAA,EAAAc,OAAA,EAAAC,CAAA,CAAA;AAAA,IAAA,OAAAL,uCAAA,CAAAM,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAAAF,UAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,UAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAE7BtB,eAAe,CAACe,QAAQ,CAAC,CAAA;AAAA,QAAA,KAAA,CAAA;UAAvCb,KAAK,GAAAkB,QAAA,CAAAG,IAAA,CAAA;UACLP,OAAO,GAAGQ,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC,CAACC,UAAU,CAAC,IAAI,CAAC,CAAA;AACjEV,UAAAA,OAAO,aAAPA,OAAO,KAAA,KAAA,CAAA,IAAPA,OAAO,CAAEW,SAAS,CAACzB,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC/Be,UAAAA,CAAC,GAAGD,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEY,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAACC,IAAI,CAAA;AAAA,UAAA,IAAA,CAE5CZ,CAAC,EAAA;AAAAG,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAAA,UAAA,OAAAF,QAAA,CAAAU,MAAA,eAAAC,MAAA,CACQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAKd,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,EACtDe,QAAQ,CAAC,EAAE,CAAC,CACZC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;AAAA,UAAA,OAAAb,QAAA,CAAAU,MAAA,CAAA,QAAA,EAGN,IAAI,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAAV,UAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA,CAAA;UAAAD,QAAA,CAAAc,EAAA,GAAAd,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEXe,UAAAA,0BAAM,CAACC,KAAK,CAAAhB,QAAA,CAAAc,EAAM,CAAC,CAAA;AAAC,UAAA,OAAAd,QAAA,CAAAU,MAAA,CAAA,QAAA,EAEb,IAAI,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAAV,QAAA,CAAAiB,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAvB,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;GAEd,CAAA,CAAA,CAAA;EAAA,OAnBYL,SAAAA,uBAAuBA,CAAA6B,EAAA,EAAA;AAAA,IAAA,OAAA5B,IAAA,CAAA6B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAmBnC,GAAA;IAEYC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGC,SAAS,EAAI;AAChD,EAAA,IAAMC,eAAe,GAAGnB,QAAQ,CAACoB,cAAc,CAACF,SAAS,CAAC,CAAA;AAC1DC,EAAAA,eAAe,aAAfA,eAAe,KAAA,KAAA,CAAA,IAAfA,eAAe,CAAEE,cAAc,CAAC;AAAEC,IAAAA,QAAQ,EAAE,QAAA;AAAS,GAAC,CAAC,CAAA;AACzD,EAAC;IAEYC,UAAU,GAAG,SAAbA,UAAUA,CAAGC,GAAG,EAAA;EAAA,OAAI,OAAOA,GAAG,KAAK,UAAU,CAAA;AAAA,EAAA;AAEnD,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAGC,GAAG,EAAI;AAC9B,EAAA,IAAMC,MAAM,GACV,iGAAiG,CAACC,IAAI,CACpGF,GACF,CAAC,CAAA;AAEH,EAAA,IAAI,CAACC,MAAM,EAAE,OAAO,IAAI,CAAA;AAExB,EAAA,IAAME,CAAC,GAAGC,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC,IAAIA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC9C,EAAA,IAAMI,CAAC,GAAGD,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC,IAAIA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC9C,EAAA,IAAMK,CAAC,GAAGF,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC,IAAIA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;EAC9C,IAAMM,CAAC,GAAGN,MAAM,CAAC,CAAC,CAAC,GACfO,IAAI,CAACC,KAAK,CAACL,QAAQ,CAACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,GAChDS,SAAS,CAAA;EAEb,OAAA7B,EAAAA,CAAAA,MAAA,CAAUsB,CAAC,EAAA,IAAA,CAAA,CAAAtB,MAAA,CAAKwB,CAAC,EAAAxB,IAAAA,CAAAA,CAAAA,MAAA,CAAKyB,CAAC,EAAAzB,MAAA,CAAG0B,CAAC,KAAKG,SAAS,QAAA7B,MAAA,CAAQ0B,CAAC,CAAA,GAAK,EAAE,CAAA,CAAA;AAC3D,CAAC;;AC/CD,IAAMI,IAAI,GAAGrC,QAAQ,CAACsC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE5C,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,GAAG,EAAEC,MAAM,EAAA;AAAA,EAAA,OAAA,KAAA,CAAAlC,MAAA,CAC9BkC,MAAM,EAAAlC,QAAAA,CAAAA,CAAAA,MAAA,CACLiC,GAAG,EAAA,KAAA,CAAA,CAAA;AAAA,CACL,CAAA;AAEK,IAAME,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAI,EAAEC,KAAK,EAAEC,gBAAgB,EAAK;AAC5D,EAAA,IAAMC,YAAY,GAAGD,gBAAgB,CAACF,IAAI,CAAC,CAAA;EAC3C,IAAI,CAACG,YAAY,EAAE,OAAA;EAEnBT,IAAI,CAACU,KAAK,CAACC,WAAW,CAACF,YAAY,EAAEF,KAAK,CAAC,CAAA;AAC7C,EAAC;AAEM,IAAMK,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,GAAG,EAAEC,KAAK,EAAEC,MAAM,EAAK;EAC3D,IAAMC,QAAQ,GAAGC,gBAAM,CAAC;AAAEJ,IAAAA,GAAG,EAAHA,GAAAA;GAAK,EAAEE,MAAM,CAAC,CAAA;AAExC,EAAA,IAAIG,sBAAY,CAACF,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAA;EAExC,IAAMG,cAAc,GAAGH,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEI,SAAS,CAAA;AAC1C,EAAA,IAAIF,sBAAY,CAACC,cAAc,CAAC,EAAE,OAAO,IAAI,CAAA;EAE7C,IAAME,uBAAuB,GAAGJ,gBAAM,CAAC;AAAEJ,IAAAA,GAAG,EAAEM,cAAAA;GAAgB,EAAEJ,MAAM,CAAC,CAAA;EAEvE,IAAMO,iBAAiB,GAAGL,gBAAM,CAAC;AAAEJ,IAAAA,GAAG,EAAEM,cAAAA;AAAe,GAAC,EAAEL,KAAK,CAACS,UAAU,CAAC,CAAA;AAE3E,EAAA,IAAIF,uBAAuB,CAACG,IAAI,KAAK,OAAO,EAAE;AAAA,IAAA,IAAAC,qBAAA,CAAA;AAC5C,IAAA,OAAOC,mBAAS,CAAAD,CAAAA,qBAAA,GAACX,KAAK,CAACa,0BAAgB,CAACR,cAAc,CAAC,CAAC,MAAAM,IAAAA,IAAAA,qBAAA,uBAAvCA,qBAAA,CAAyCG,GAAG,CAAC,CAAA;AAChE,GAAC,MAAM,IAAIP,uBAAuB,CAACG,IAAI,KAAK,SAAS,EAAE;IACrD,OAAO,CAAAF,iBAAiB,KAAjBA,IAAAA,IAAAA,iBAAiB,uBAAjBA,iBAAiB,CAAEf,KAAK,MAAK,OAAO,CAAA;AAC7C,GAAA;EAEA,OAAOmB,mBAAS,CAACJ,iBAAiB,KAAA,IAAA,IAAjBA,iBAAiB,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAiB,CAAEf,KAAK,CAAC,CAAA;AAC5C,EAAC;IAEYsB,YAAY,GAAG,SAAfA,YAAYA,CAAAhF,IAAA,EAA+C;AAAA,EAAA,IAAzCsD,GAAG,GAAAtD,IAAA,CAAHsD,GAAG;IAAEtB,SAAS,GAAAhC,IAAA,CAATgC,SAAS;IAAEiD,kBAAkB,GAAAjF,IAAA,CAAlBiF,kBAAkB,CAAA;EAC/D,IAAMC,OAAO,GAAGpE,QAAQ,CAACsC,aAAa,KAAA/B,MAAA,CAAK4D,kBAAkB,CAAE,CAAC,CAAA;EAChE,IAAI,CAACC,OAAO,EAAE,OAAA;EAEd,IAAIC,QAAQ,GAAGD,OAAO,CAAC9B,aAAa,KAAA/B,MAAA,CAAKW,SAAS,CAAE,CAAC,CAAA;EACrD,IAAI,CAACmD,QAAQ,EAAE;AACbA,IAAAA,QAAQ,GAAGrE,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC,CAAA;AAC5C,GAAA;EAEAoE,QAAQ,CAACC,WAAW,GAAG/B,YAAY,CAACC,GAAG,EAAE2B,kBAAkB,CAAC,CAAA;EAC5DE,QAAQ,CAACE,EAAE,GAAGrD,SAAS,CAAA;AACvBkD,EAAAA,OAAO,CAACI,WAAW,CAACH,QAAQ,CAAC,CAAA;AAC/B,EAAC;AAEM,IAAMI,QAAQ,GAAG,SAAXA,QAAQA,CAAItB,KAAK,EAAEN,gBAAgB,EAAE6B,WAAW,EAAK;EAChE,IAAInB,sBAAY,CAACJ,KAAK,KAALA,IAAAA,IAAAA,KAAK,uBAALA,KAAK,CAAES,UAAU,CAAC,EAAE,OAAA;AAErCT,EAAAA,KAAK,CAACS,UAAU,CAACe,OAAO,CAAC,UAAAtB,QAAQ,EAAI;AACnC,IAAA,IAAMuB,SAAS,GAAGZ,0BAAgB,CAACX,QAAQ,CAACH,GAAG,CAAC,CAAA;AAEhD,IAAA,IACEG,QAAQ,CAACQ,IAAI,KAAK,iBAAiB,IACnC,CAACZ,qBAAqB,CAACI,QAAQ,CAACH,GAAG,EAAEC,KAAK,EAAEuB,WAAW,CAAC,EACxD;AACAhC,MAAAA,WAAW,CAACkC,SAAS,EAAE,EAAE,EAAE/B,gBAAgB,CAAC,CAAA;AAE5C,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIQ,QAAQ,CAACQ,IAAI,KAAK,OAAO,EAAE;MAC7BnB,WAAW,CAACkC,SAAS,EAAEnD,SAAS,CAAC4B,QAAQ,CAACT,KAAK,CAAC,EAAEC,gBAAgB,CAAC,CAAA;AACrE,KAAC,MAAM,IAAIQ,QAAQ,CAACQ,IAAI,KAAK,iBAAiB,EAAE;AAC9C,MAAA,IAAMgB,cAAc,GAAGC,MAAM,CAACzB,QAAQ,CAACT,KAAK,CAAC,CAAA;MAE7CF,WAAW,CACTsB,0BAAgB,CAAAzD,EAAAA,CAAAA,MAAA,CAAI8C,QAAQ,CAACH,GAAG,EAAkB,kBAAA,CAAA,CAAC,EACnDhB,IAAI,CAAC6C,GAAG,CAACF,cAAc,GAAG,GAAG,CAAC,EAC9BhC,gBACF,CAAC,CAAA;MAEDH,WAAW,CACTsB,0BAAgB,CAAAzD,EAAAA,CAAAA,MAAA,CAAI8C,QAAQ,CAACH,GAAG,EAAgB,gBAAA,CAAA,CAAC,EACjD2B,cAAc,GAAG,CAAC,GAAGtG,KAAK,GAAGD,KAAK,EAClCuE,gBACF,CAAC,CAAA;AACH,KAAC,MAAM,IAAIQ,QAAQ,CAACQ,IAAI,KAAK,QAAQ,EAAE;MACrCnB,WAAW,CAACkC,SAAS,EAAA,EAAA,CAAArE,MAAA,CAAK8C,QAAQ,CAACT,KAAK,EAAMC,IAAAA,CAAAA,EAAAA,gBAAgB,CAAC,CAAA;AACjE,KAAC,MAAM,IAAIQ,QAAQ,CAACQ,IAAI,KAAK,YAAY,EAAE;AAAA,MAAA,IAAAmB,OAAA,CAAA;AACzCd,MAAAA,YAAY,CAAC;QACX1B,GAAG,EAAEa,QAAQ,CAACT,KAAK;QACnB1B,SAAS,EAAEmC,QAAQ,CAACH,GAAG;AACvBiB,QAAAA,kBAAkB,EAAAa,CAAAA,OAAA,GAAE1B,gBAAM,CAAC;AAAEO,UAAAA,IAAI,EAAE,YAAA;AAAa,SAAC,EAAEa,WAAW,CAAC,cAAAM,OAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA3CA,OAAA,CAChBC,WAAAA;AACN,OAAC,CAAC,CAAA;AACJ,KAAC,MAAM;MACLvC,WAAW,CAACkC,SAAS,EAAEvB,QAAQ,CAACT,KAAK,EAAEC,gBAAgB,CAAC,CAAA;AAC1D,KAAA;AACF,GAAC,CAAC,CAAA;AAEFqC,EAAAA,kBAAQ,CAAC;AAAErB,IAAAA,IAAI,EAAE,OAAA;GAAS,EAAEa,WAAW,CAAC,CAACC,OAAO,CAAC,UAAAQ,KAAA,EAAa;AAAA,IAAA,IAAAC,gBAAA,CAAA;AAAA,IAAA,IAAVlC,GAAG,GAAAiC,KAAA,CAAHjC,GAAG,CAAA;AACrD,IAAA,IAAM0B,SAAS,GAAGZ,0BAAgB,CAACd,GAAG,CAAC,CAAA;AACvCR,IAAAA,WAAW,CAACkC,SAAS,EAAA,MAAA,CAAArE,MAAA,CAAA6E,CAAAA,gBAAA,GAASjC,KAAK,CAACyB,SAAS,CAAC,MAAA,IAAA,IAAAQ,gBAAA,KAAhBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAkBnB,GAAG,EAAA,GAAA,CAAA,EAAKpB,gBAAgB,CAAC,CAAA;AAC3E,GAAC,CAAC,CAAA;AACJ;;;;;;;;;;;"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { findBy, isNotPresent, isPresent, snakeToCamelCase, filterBy } from '@bigbinary/neeto-cist';
|
|
2
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
3
|
+
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
4
|
+
import Toastr from '@bigbinary/neetoui/Toastr';
|
|
5
|
+
|
|
6
|
+
var BASE_URL = "neeto_themes_engine";
|
|
7
|
+
var WHITE = "255, 255, 255";
|
|
8
|
+
var BLACK = "0, 0, 0";
|
|
9
|
+
|
|
10
|
+
var getImageFromUrl = function getImageFromUrl(source) {
|
|
11
|
+
var image = new Image();
|
|
12
|
+
image.crossOrigin = "anonymous";
|
|
13
|
+
image.src = source;
|
|
14
|
+
return new Promise(function (resolve) {
|
|
15
|
+
image.onload = function () {
|
|
16
|
+
resolve(image);
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
var getDominantColorFromUrl = /*#__PURE__*/function () {
|
|
21
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(imageUrl) {
|
|
22
|
+
var image, context, c;
|
|
23
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
24
|
+
while (1) switch (_context.prev = _context.next) {
|
|
25
|
+
case 0:
|
|
26
|
+
_context.prev = 0;
|
|
27
|
+
_context.next = 3;
|
|
28
|
+
return getImageFromUrl(imageUrl);
|
|
29
|
+
case 3:
|
|
30
|
+
image = _context.sent;
|
|
31
|
+
context = document.createElement("canvas").getContext("2d");
|
|
32
|
+
context === null || context === void 0 || context.drawImage(image, 0, 0, 1, 1);
|
|
33
|
+
c = context === null || context === void 0 ? void 0 : context.getImageData(0, 0, 1, 1).data;
|
|
34
|
+
if (!c) {
|
|
35
|
+
_context.next = 9;
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
return _context.abrupt("return", "#".concat(((1 << 24) + (c[0] << 16) + (c[1] << 8) + c[2]).toString(16).slice(1)));
|
|
39
|
+
case 9:
|
|
40
|
+
return _context.abrupt("return", null);
|
|
41
|
+
case 12:
|
|
42
|
+
_context.prev = 12;
|
|
43
|
+
_context.t0 = _context["catch"](0);
|
|
44
|
+
Toastr.error(_context.t0);
|
|
45
|
+
return _context.abrupt("return", null);
|
|
46
|
+
case 16:
|
|
47
|
+
case "end":
|
|
48
|
+
return _context.stop();
|
|
49
|
+
}
|
|
50
|
+
}, _callee, null, [[0, 12]]);
|
|
51
|
+
}));
|
|
52
|
+
return function getDominantColorFromUrl(_x) {
|
|
53
|
+
return _ref.apply(this, arguments);
|
|
54
|
+
};
|
|
55
|
+
}();
|
|
56
|
+
var scrollElementIntoView = function scrollElementIntoView(elementId) {
|
|
57
|
+
var elementToScroll = document.getElementById(elementId);
|
|
58
|
+
elementToScroll === null || elementToScroll === void 0 || elementToScroll.scrollIntoView({
|
|
59
|
+
behavior: "smooth"
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
var isFunction = function isFunction(obj) {
|
|
63
|
+
return typeof obj === "function";
|
|
64
|
+
};
|
|
65
|
+
var hexToRgba = function hexToRgba(hex) {
|
|
66
|
+
var result = /^#?(?:([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?|([a-f\d]{2})([a-f\d]{2})([a-f\d]{2}))$/i.exec(hex);
|
|
67
|
+
if (!result) return null;
|
|
68
|
+
var r = parseInt(result[1] || result[5], 16);
|
|
69
|
+
var g = parseInt(result[2] || result[6], 16);
|
|
70
|
+
var b = parseInt(result[3] || result[7], 16);
|
|
71
|
+
var a = result[4] ? Math.round(parseInt(result[4], 16) / 2.55) / 100 : undefined;
|
|
72
|
+
return "".concat(r, ", ").concat(g, ", ").concat(b).concat(a !== undefined ? ", ".concat(a) : "");
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
var root = document.querySelector(":root");
|
|
76
|
+
var applyNesting = function applyNesting(css, parent) {
|
|
77
|
+
return "\n.".concat(parent, " {\n ").concat(css, "\n}");
|
|
78
|
+
};
|
|
79
|
+
var setVariable = function setVariable(name, value, variableNamesMap) {
|
|
80
|
+
var variableName = variableNamesMap[name];
|
|
81
|
+
if (!variableName) return;
|
|
82
|
+
root.style.setProperty(variableName, value);
|
|
83
|
+
};
|
|
84
|
+
var isPropertyIndependent = function isPropertyIndependent(key, theme, schema) {
|
|
85
|
+
var property = findBy({
|
|
86
|
+
key: key
|
|
87
|
+
}, schema);
|
|
88
|
+
if (isNotPresent(property)) return false;
|
|
89
|
+
var conditionalKey = property === null || property === void 0 ? void 0 : property.dependsOn;
|
|
90
|
+
if (isNotPresent(conditionalKey)) return true;
|
|
91
|
+
var dependentPropertySchema = findBy({
|
|
92
|
+
key: conditionalKey
|
|
93
|
+
}, schema);
|
|
94
|
+
var dependentProperty = findBy({
|
|
95
|
+
key: conditionalKey
|
|
96
|
+
}, theme.properties);
|
|
97
|
+
if (dependentPropertySchema.kind === "image") {
|
|
98
|
+
var _theme$snakeToCamelCa;
|
|
99
|
+
return isPresent((_theme$snakeToCamelCa = theme[snakeToCamelCase(conditionalKey)]) === null || _theme$snakeToCamelCa === void 0 ? void 0 : _theme$snakeToCamelCa.url);
|
|
100
|
+
} else if (dependentPropertySchema.kind === "boolean") {
|
|
101
|
+
return (dependentProperty === null || dependentProperty === void 0 ? void 0 : dependentProperty.value) !== "false";
|
|
102
|
+
}
|
|
103
|
+
return isPresent(dependentProperty === null || dependentProperty === void 0 ? void 0 : dependentProperty.value);
|
|
104
|
+
};
|
|
105
|
+
var setCustomCSS = function setCustomCSS(_ref) {
|
|
106
|
+
var css = _ref.css,
|
|
107
|
+
elementId = _ref.elementId,
|
|
108
|
+
parentElementClass = _ref.parentElementClass;
|
|
109
|
+
var wrapper = document.querySelector(".".concat(parentElementClass));
|
|
110
|
+
if (!wrapper) return;
|
|
111
|
+
var styleTag = wrapper.querySelector("#".concat(elementId));
|
|
112
|
+
if (!styleTag) {
|
|
113
|
+
styleTag = document.createElement("style");
|
|
114
|
+
}
|
|
115
|
+
styleTag.textContent = applyNesting(css, parentElementClass);
|
|
116
|
+
styleTag.id = elementId;
|
|
117
|
+
wrapper.appendChild(styleTag);
|
|
118
|
+
};
|
|
119
|
+
var setTheme = function setTheme(theme, variableNamesMap, themeConfig) {
|
|
120
|
+
if (isNotPresent(theme === null || theme === void 0 ? void 0 : theme.properties)) return;
|
|
121
|
+
theme.properties.forEach(function (property) {
|
|
122
|
+
var attribute = snakeToCamelCase(property.key);
|
|
123
|
+
if (property.kind !== "overlay_opacity" && !isPropertyIndependent(property.key, theme, themeConfig)) {
|
|
124
|
+
setVariable(attribute, "", variableNamesMap);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (property.kind === "color") {
|
|
128
|
+
setVariable(attribute, hexToRgba(property.value), variableNamesMap);
|
|
129
|
+
} else if (property.kind === "overlay_opacity") {
|
|
130
|
+
var overlayOpacity = Number(property.value);
|
|
131
|
+
setVariable(snakeToCamelCase("".concat(property.key, "_overlay_opacity")), Math.abs(overlayOpacity / 100), variableNamesMap);
|
|
132
|
+
setVariable(snakeToCamelCase("".concat(property.key, "_overlay_color")), overlayOpacity < 0 ? BLACK : WHITE, variableNamesMap);
|
|
133
|
+
} else if (property.kind === "radius") {
|
|
134
|
+
setVariable(attribute, "".concat(property.value, "px"), variableNamesMap);
|
|
135
|
+
} else if (property.kind === "custom_css") {
|
|
136
|
+
var _findBy;
|
|
137
|
+
setCustomCSS({
|
|
138
|
+
css: property.value,
|
|
139
|
+
elementId: property.key,
|
|
140
|
+
parentElementClass: (_findBy = findBy({
|
|
141
|
+
kind: "custom_css"
|
|
142
|
+
}, themeConfig)) === null || _findBy === void 0 ? void 0 : _findBy.parentClass
|
|
143
|
+
});
|
|
144
|
+
} else {
|
|
145
|
+
setVariable(attribute, property.value, variableNamesMap);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
filterBy({
|
|
149
|
+
kind: "image"
|
|
150
|
+
}, themeConfig).forEach(function (_ref2) {
|
|
151
|
+
var _theme$attribute;
|
|
152
|
+
var key = _ref2.key;
|
|
153
|
+
var attribute = snakeToCamelCase(key);
|
|
154
|
+
setVariable(attribute, "url(".concat((_theme$attribute = theme[attribute]) === null || _theme$attribute === void 0 ? void 0 : _theme$attribute.url, ")"), variableNamesMap);
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
export { BASE_URL as B, scrollElementIntoView as a, setCustomCSS as b, setVariable as c, isPropertyIndependent as d, getDominantColorFromUrl as g, isFunction as i, setTheme as s };
|
|
159
|
+
//# sourceMappingURL=index-383fae09.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-383fae09.js","sources":["../app/javascript/src/constants/index.js","../app/javascript/src/components/utils.js","../app/javascript/src/utils/index.js"],"sourcesContent":["export const BASE_URL = \"neeto_themes_engine\";\nexport const WHITE = \"255, 255, 255\";\nexport const BLACK = \"0, 0, 0\";\n","import { Toastr } from \"neetoui\";\n\nexport const getImageFromUrl = source => {\n const image = new Image();\n image.crossOrigin = \"anonymous\";\n image.src = source;\n\n return new Promise(resolve => {\n image.onload = () => {\n resolve(image);\n };\n });\n};\n\nexport const getDominantColorFromUrl = async imageUrl => {\n try {\n const image = await getImageFromUrl(imageUrl);\n const context = document.createElement(\"canvas\").getContext(\"2d\");\n context?.drawImage(image, 0, 0, 1, 1);\n const c = context?.getImageData(0, 0, 1, 1).data;\n\n if (c) {\n return `#${((1 << 24) + (c[0] << 16) + (c[1] << 8) + c[2])\n .toString(16)\n .slice(1)}`;\n }\n\n return null;\n } catch (error) {\n Toastr.error(error);\n\n return null;\n }\n};\n\nexport const scrollElementIntoView = elementId => {\n const elementToScroll = document.getElementById(elementId);\n elementToScroll?.scrollIntoView({ behavior: \"smooth\" });\n};\n\nexport const isFunction = obj => typeof obj === \"function\";\n\nexport const hexToRgba = hex => {\n const result =\n /^#?(?:([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?|([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2}))$/i.exec(\n hex\n );\n\n if (!result) return null;\n\n const r = parseInt(result[1] || result[5], 16);\n const g = parseInt(result[2] || result[6], 16);\n const b = parseInt(result[3] || result[7], 16);\n const a = result[4]\n ? Math.round(parseInt(result[4], 16) / 2.55) / 100\n : undefined;\n\n return `${r}, ${g}, ${b}${a !== undefined ? `, ${a}` : \"\"}`;\n};\n\nexport const hexToRgb = hex => hexToRgba(hex?.slice(0, 7));\n","import {\n filterBy,\n findBy,\n isNotPresent,\n isPresent,\n snakeToCamelCase,\n} from \"neetocist\";\n\nimport { hexToRgba } from \"components/utils\";\nimport { BLACK, WHITE } from \"src/constants\";\n\nconst root = document.querySelector(\":root\");\n\nconst applyNesting = (css, parent) => `\n.${parent} {\n ${css}\n}`;\n\nexport const setVariable = (name, value, variableNamesMap) => {\n const variableName = variableNamesMap[name];\n if (!variableName) return;\n\n root.style.setProperty(variableName, value);\n};\n\nexport const isPropertyIndependent = (key, theme, schema) => {\n const property = findBy({ key }, schema);\n\n if (isNotPresent(property)) return false;\n\n const conditionalKey = property?.dependsOn;\n if (isNotPresent(conditionalKey)) return true;\n\n const dependentPropertySchema = findBy({ key: conditionalKey }, schema);\n\n const dependentProperty = findBy({ key: conditionalKey }, theme.properties);\n\n if (dependentPropertySchema.kind === \"image\") {\n return isPresent(theme[snakeToCamelCase(conditionalKey)]?.url);\n } else if (dependentPropertySchema.kind === \"boolean\") {\n return dependentProperty?.value !== \"false\";\n }\n\n return isPresent(dependentProperty?.value);\n};\n\nexport const setCustomCSS = ({ css, elementId, parentElementClass }) => {\n const wrapper = document.querySelector(`.${parentElementClass}`);\n if (!wrapper) return;\n\n let styleTag = wrapper.querySelector(`#${elementId}`);\n if (!styleTag) {\n styleTag = document.createElement(\"style\");\n }\n\n styleTag.textContent = applyNesting(css, parentElementClass);\n styleTag.id = elementId;\n wrapper.appendChild(styleTag);\n};\n\nexport const setTheme = (theme, variableNamesMap, themeConfig) => {\n if (isNotPresent(theme?.properties)) return;\n\n theme.properties.forEach(property => {\n const attribute = snakeToCamelCase(property.key);\n\n if (\n property.kind !== \"overlay_opacity\" &&\n !isPropertyIndependent(property.key, theme, themeConfig)\n ) {\n setVariable(attribute, \"\", variableNamesMap);\n\n return;\n }\n\n if (property.kind === \"color\") {\n setVariable(attribute, hexToRgba(property.value), variableNamesMap);\n } else if (property.kind === \"overlay_opacity\") {\n const overlayOpacity = Number(property.value);\n\n setVariable(\n snakeToCamelCase(`${property.key}_overlay_opacity`),\n Math.abs(overlayOpacity / 100),\n variableNamesMap\n );\n\n setVariable(\n snakeToCamelCase(`${property.key}_overlay_color`),\n overlayOpacity < 0 ? BLACK : WHITE,\n variableNamesMap\n );\n } else if (property.kind === \"radius\") {\n setVariable(attribute, `${property.value}px`, variableNamesMap);\n } else if (property.kind === \"custom_css\") {\n setCustomCSS({\n css: property.value,\n elementId: property.key,\n parentElementClass: findBy({ kind: \"custom_css\" }, themeConfig)\n ?.parentClass,\n });\n } else {\n setVariable(attribute, property.value, variableNamesMap);\n }\n });\n\n filterBy({ kind: \"image\" }, themeConfig).forEach(({ key }) => {\n const attribute = snakeToCamelCase(key);\n setVariable(attribute, `url(${theme[attribute]?.url})`, variableNamesMap);\n });\n};\n"],"names":["BASE_URL","WHITE","BLACK","getImageFromUrl","source","image","Image","crossOrigin","src","Promise","resolve","onload","getDominantColorFromUrl","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","imageUrl","context","c","wrap","_callee$","_context","prev","next","sent","document","createElement","getContext","drawImage","getImageData","data","abrupt","concat","toString","slice","t0","Toastr","error","stop","_x","apply","arguments","scrollElementIntoView","elementId","elementToScroll","getElementById","scrollIntoView","behavior","isFunction","obj","hexToRgba","hex","result","exec","r","parseInt","g","b","a","Math","round","undefined","root","querySelector","applyNesting","css","parent","setVariable","name","value","variableNamesMap","variableName","style","setProperty","isPropertyIndependent","key","theme","schema","property","findBy","isNotPresent","conditionalKey","dependsOn","dependentPropertySchema","dependentProperty","properties","kind","_theme$snakeToCamelCa","isPresent","snakeToCamelCase","url","setCustomCSS","parentElementClass","wrapper","styleTag","textContent","id","appendChild","setTheme","themeConfig","forEach","attribute","overlayOpacity","Number","abs","_findBy","parentClass","filterBy","_ref2","_theme$attribute"],"mappings":"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"}
|