@front10/helpers 2.0.16 → 2.0.17

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.
@@ -809,6 +809,20 @@ var buildClass = function buildClass(props) {
809
809
  } else content = "".concat(styles[p] ? "{".concat(prop, ":").concat(styles[p], "}") : "");
810
810
  }
811
811
 
812
+ if (prop === "@theme" && styles[p] && Array.isArray(styles[p])) {
813
+ styles[p].forEach(function (item) {
814
+ var result = content;
815
+ var newItem = item;
816
+ if (!newItem.startsWith("@theme:")) newItem = "@theme:".concat(newItem);
817
+ newItem = (0, _ThemeProvider.getValueFromPath)(newItem, tokenTheme) || {};
818
+ Object.keys(newItem).map(function (k) {
819
+ result += "".concat(k, ":").concat(newItem[k], ";");
820
+ });
821
+ content = result;
822
+ });
823
+ content = "{".concat(content, "}");
824
+ }
825
+
812
826
  if (styles[p] && _typeof(styles[p]) === "object" && styles[p].constructor === Object) {
813
827
  content = "{".concat(Object.entries(styles[p]).reduce(function (content, _ref) {
814
828
  var _ref2 = _slicedToArray(_ref, 2),
@@ -12,29 +12,78 @@ var _canI = require("../canI");
12
12
  function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13
13
 
14
14
  var generateTypographyStyles = function generateTypographyStyles(typography) {
15
- var style = "";
16
-
17
- if (typography.fonts && _typeof(typography.fonts) === "object") {
18
- Object.keys(typography.fonts).map(function (fontName) {
19
- if (_typeof(typography.fonts[fontName]) === "object") {
20
- if (typography.fonts[fontName].preset) style += "@import url('".concat(typography.fonts[fontName].preset, "');");else if (Array.isArray(typography.fonts[fontName].src)) {
21
- style += "@font-face {\n font-family: '".concat(typography.fonts[fontName].alias ? typography.fonts[fontName].alias : fontName, "';\n ").concat(typography.fonts[fontName].fontStyle ? "font-style:".concat(typography.fonts[fontName].fontStyle, ";") : "", "\n ").concat(typography.fonts[fontName].fontWeight ? "font-weight:".concat(typography.fonts[fontName].fontWeight, ";") : "", "\n ").concat(typography.fonts[fontName].fontDisplay ? "font-display:".concat(typography.fonts[fontName].fontDisplay, ";") : "", "\n src:");
22
- typography.fonts[fontName].local && typography.fonts[fontName].local.forEach(function (local) {
23
- style += "local('".concat(local, "'),");
15
+ var style, dataFonts, rawResponse, cssObject, css;
16
+ return regeneratorRuntime.async(function generateTypographyStyles$(_context) {
17
+ while (1) {
18
+ switch (_context.prev = _context.next) {
19
+ case 0:
20
+ style = "";
21
+
22
+ if (!(_typeof(typography) === "object" && Array.isArray(typography))) {
23
+ _context.next = 12;
24
+ break;
25
+ }
26
+
27
+ dataFonts = typography.map(function (item) {
28
+ return {
29
+ name: item,
30
+ outputType: "string"
31
+ };
24
32
  });
25
- typography.fonts[fontName].src.forEach(function (fontSrc, index) {
26
- style += "url('".concat(fontSrc.url, "') format('").concat(fontSrc.format, "')").concat(index < typography.fonts[fontName].src.length - 1 ? "," : "");
33
+ _context.next = 5;
34
+ return regeneratorRuntime.awrap(fetch("https://em-font-service-prod.airtrfx.com", {
35
+ headers: {
36
+ Accept: "application/json",
37
+ "Content-Type": "application/json"
38
+ },
39
+ method: "POST",
40
+ body: JSON.stringify({
41
+ fonts: dataFonts
42
+ })
43
+ }));
44
+
45
+ case 5:
46
+ rawResponse = _context.sent;
47
+ _context.next = 8;
48
+ return regeneratorRuntime.awrap(rawResponse.json());
49
+
50
+ case 8:
51
+ cssObject = _context.sent;
52
+ css = "";
53
+ Object.keys(cssObject).forEach(function (item) {
54
+ css += cssObject[item].css;
27
55
  });
28
- style += "}";
29
- }
30
- style += ".fr-font-name-".concat(fontName.toLocaleLowerCase().replace(/ /g, "-"), "{font-family: '").concat(typography.fonts[fontName].alias ? typography.fonts[fontName].alias : fontName, "', 'sans-serif'}");
31
- }
56
+ return _context.abrupt("return", css);
57
+
58
+ case 12:
59
+ if (typography.fonts && _typeof(typography.fonts) === "object") {
60
+ Object.keys(typography.fonts).map(function (fontName) {
61
+ if (_typeof(typography.fonts[fontName]) === "object") {
62
+ if (typography.fonts[fontName].preset) style += "@import url('".concat(typography.fonts[fontName].preset, "');");else if (Array.isArray(typography.fonts[fontName].src)) {
63
+ style += "@font-face {\n font-family: '".concat(typography.fonts[fontName].alias ? typography.fonts[fontName].alias : fontName, "';\n ").concat(typography.fonts[fontName].fontStyle ? "font-style:".concat(typography.fonts[fontName].fontStyle, ";") : "", "\n ").concat(typography.fonts[fontName].fontWeight ? "font-weight:".concat(typography.fonts[fontName].fontWeight, ";") : "", "\n ").concat(typography.fonts[fontName].fontDisplay ? "font-display:".concat(typography.fonts[fontName].fontDisplay, ";") : "", "\n src:");
64
+ typography.fonts[fontName].local && typography.fonts[fontName].local.forEach(function (local) {
65
+ style += "local('".concat(local, "'),");
66
+ });
67
+ typography.fonts[fontName].src.forEach(function (fontSrc, index) {
68
+ style += "url('".concat(fontSrc.url, "') format('").concat(fontSrc.format, "')").concat(index < typography.fonts[fontName].src.length - 1 ? "," : "");
69
+ });
70
+ style += "}";
71
+ }
72
+ style += ".fr-font-name-".concat(fontName.toLocaleLowerCase().replace(/ /g, "-"), "{font-family: '").concat(typography.fonts[fontName].alias ? typography.fonts[fontName].alias : fontName, "', 'sans-serif'}");
73
+ }
32
74
 
33
- return fontName;
34
- });
35
- }
75
+ return fontName;
76
+ });
77
+ }
36
78
 
37
- return style;
79
+ return _context.abrupt("return", style);
80
+
81
+ case 14:
82
+ case "end":
83
+ return _context.stop();
84
+ }
85
+ }
86
+ });
38
87
  };
39
88
 
40
89
  var generateStylesPalette = function generateStylesPalette(palette, item, i) {
@@ -61,94 +110,121 @@ var generateStylesPalette = function generateStylesPalette(palette, item, i) {
61
110
  };
62
111
 
63
112
  var initTheme = function initTheme(theme) {
64
- var generatedStyles = [];
65
- var themeToken = {
66
- palette: {},
67
- designTokens: theme.designTokens || {}
68
- };
69
- var outputFields = [];
70
-
71
- if (theme.config && theme.config.outputFields) {
72
- outputFields = theme.config.outputFields;
73
- }
74
-
75
- if (outputFields.includes("colors")) themeToken.colors = theme.colors;
76
- if (outputFields.includes("typography")) themeToken.typography = theme.typography;
77
-
78
- if (theme) {
79
- if (theme.typography) {
80
- generatedStyles.push(generateTypographyStyles(theme.typography));
81
- }
82
-
83
- if (theme.colors) {
84
- generatedStyles.push(["button.fr-btn:disabled{\n background-color:".concat(theme.components && theme.components.button && theme.components.button.disabled && theme.components.button.disabled.bgColor ? theme.components.button.disabled.bgColor : "#d4d4d4", ";\n border-color:").concat(theme.components && theme.components.button && theme.components.button.disabled && theme.components.button.disabled.bgColor ? theme.components.button.disabled.bgColor : "#d4d4d4", ";\n color:").concat(theme.components && theme.components.button && theme.components.button.disabled && theme.components.button.disabled.bgColor ? theme.components.button.disabled.bgColor : "#afafaf", "\n }\n ")]);
85
- var themeColorsKeys = Object.keys(theme.colors);
86
-
87
- for (var index = 0; index < themeColorsKeys.length; index += 1) {
88
- var colorName = themeColorsKeys[index];
89
- var colorValue = theme.colors[themeColorsKeys[index]];
113
+ var generatedStyles, themeToken, outputFields, themeColorsKeys, index, colorName, colorValue, primaryHover, element, themeStyleNode, body, style;
114
+ return regeneratorRuntime.async(function initTheme$(_context2) {
115
+ while (1) {
116
+ switch (_context2.prev = _context2.next) {
117
+ case 0:
118
+ generatedStyles = [];
119
+ themeToken = {
120
+ palette: {},
121
+ designTokens: theme.designTokens || {}
122
+ };
123
+ outputFields = [];
124
+
125
+ if (theme.config && theme.config.outputFields) {
126
+ outputFields = theme.config.outputFields;
127
+ }
128
+
129
+ if (outputFields.includes("colors")) themeToken.colors = theme.colors;
130
+ if (outputFields.includes("typography")) themeToken.typography = theme.typography;
131
+
132
+ if (!theme) {
133
+ _context2.next = 15;
134
+ break;
135
+ }
136
+
137
+ if (!theme.typography) {
138
+ _context2.next = 13;
139
+ break;
140
+ }
141
+
142
+ _context2.t0 = generatedStyles;
143
+ _context2.next = 11;
144
+ return regeneratorRuntime.awrap(generateTypographyStyles(theme.typography));
145
+
146
+ case 11:
147
+ _context2.t1 = _context2.sent;
148
+
149
+ _context2.t0.push.call(_context2.t0, _context2.t1);
150
+
151
+ case 13:
152
+ if (theme.colors) {
153
+ generatedStyles.push(["button.fr-btn:disabled{\n background-color:".concat(theme.components && theme.components.button && theme.components.button.disabled && theme.components.button.disabled.bgColor ? theme.components.button.disabled.bgColor : "#d4d4d4", ";\n border-color:").concat(theme.components && theme.components.button && theme.components.button.disabled && theme.components.button.disabled.bgColor ? theme.components.button.disabled.bgColor : "#d4d4d4", ";\n color:").concat(theme.components && theme.components.button && theme.components.button.disabled && theme.components.button.disabled.bgColor ? theme.components.button.disabled.bgColor : "#afafaf", "\n }\n ")]);
154
+ themeColorsKeys = Object.keys(theme.colors);
155
+
156
+ for (index = 0; index < themeColorsKeys.length; index += 1) {
157
+ colorName = themeColorsKeys[index];
158
+ colorValue = theme.colors[themeColorsKeys[index]];
159
+
160
+ if (colorValue !== "none") {
161
+ (function () {
162
+ // Adding base color to palette
163
+ themeToken.palette["".concat(colorName)] = colorValue;
164
+ var palette = (0, _Color.generatePalette)(colorValue, colorName);
165
+
166
+ if (theme.config && theme.config.generatePalette) {
167
+ palette.forEach(function (item, i) {
168
+ // Adding color variations to the palette
169
+ themeToken.palette["".concat(item.name)] = item.color; // Avoiding executing unnecessary code that is not needed in the SSR
170
+
171
+ if ((0, _canI.canIExecuteClientCode)()) {
172
+ var styles = generateStylesPalette(palette, item, i);
173
+ generatedStyles.push(styles.replace(/\n. |\r/g, ""));
174
+ }
175
+ });
176
+ } else {
177
+ if ((0, _canI.canIExecuteClientCode)()) {
178
+ var styles = generateStylesPalette(palette, {
179
+ color: colorValue,
180
+ name: colorName,
181
+ textColor: (0, _Color.getContrast)(colorValue)
182
+ }, 11);
183
+ generatedStyles.push(styles.replace(/\n. |\r/g, ""));
184
+ }
185
+ }
186
+ })();
187
+ }
188
+ }
90
189
 
91
- if (colorValue !== "none") {
92
- (function () {
93
- // Adding base color to palette
94
- themeToken.palette["".concat(colorName)] = colorValue;
95
- var palette = (0, _Color.generatePalette)(colorValue, colorName);
190
+ if (theme.colors.primary) {
191
+ primaryHover = (0, _Color.hexToRGBA)(theme.colors.primary, 0.25);
192
+ generatedStyles.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem ".concat(primaryHover, ";outline: 0;}"));
193
+ }
194
+ }
96
195
 
97
- if (theme.config && theme.config.generatePalette) {
98
- palette.forEach(function (item, i) {
99
- // Adding color variations to the palette
100
- themeToken.palette["".concat(item.name)] = item.color; // Avoiding executing unnecessary code that is not needed in the SSR
196
+ if ((0, _canI.canIExecuteClientCode)() && typeof document != "undefined") {
197
+ element = document.getElementById("frTheming");
101
198
 
102
- if ((0, _canI.canIExecuteClientCode)()) {
103
- var styles = generateStylesPalette(palette, item, i);
104
- generatedStyles.push(styles.replace(/\n. |\r/g, ""));
105
- }
106
- });
199
+ if (element) {
200
+ element.innerHTML = generatedStyles.join(" ");
107
201
  } else {
108
- if ((0, _canI.canIExecuteClientCode)()) {
109
- var styles = generateStylesPalette(palette, {
110
- color: colorValue,
111
- name: colorName,
112
- textColor: (0, _Color.getContrast)(colorValue)
113
- }, 11);
114
- generatedStyles.push(styles.replace(/\n. |\r/g, ""));
202
+ themeStyleNode = "".concat(generatedStyles.join(" "));
203
+ body = document.body || document.getElementsByTagName("body")[0];
204
+ style = document.createElement("style");
205
+ style.type = "text/css";
206
+ style.id = "frTheming";
207
+
208
+ if (style.styleSheet) {
209
+ // This is required for IE8 and below.
210
+ style.styleSheet.cssText = themeStyleNode;
211
+ } else {
212
+ style.appendChild(document.createTextNode(themeStyleNode));
115
213
  }
214
+
215
+ body.appendChild(style);
116
216
  }
117
- })();
118
- }
119
- }
217
+ }
120
218
 
121
- if (theme.colors.primary) {
122
- var primaryHover = (0, _Color.hexToRGBA)(theme.colors.primary, 0.25);
123
- generatedStyles.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem ".concat(primaryHover, ";outline: 0;}"));
124
- }
125
- }
219
+ case 15:
220
+ return _context2.abrupt("return", themeToken);
126
221
 
127
- if ((0, _canI.canIExecuteClientCode)() && typeof document != "undefined") {
128
- var element = document.getElementById("frTheming");
129
-
130
- if (element) {
131
- element.innerHTML = generatedStyles.join(" ");
132
- } else {
133
- var themeStyleNode = "".concat(generatedStyles.join(" "));
134
- var body = document.body || document.getElementsByTagName("body")[0];
135
- var style = document.createElement("style");
136
- style.type = "text/css";
137
- style.id = "frTheming";
138
-
139
- if (style.styleSheet) {
140
- // This is required for IE8 and below.
141
- style.styleSheet.cssText = themeStyleNode;
142
- } else {
143
- style.appendChild(document.createTextNode(themeStyleNode));
144
- }
145
-
146
- body.appendChild(style);
222
+ case 16:
223
+ case "end":
224
+ return _context2.stop();
147
225
  }
148
226
  }
149
- }
150
-
151
- return themeToken;
227
+ });
152
228
  };
153
229
 
154
230
  exports.initTheme = initTheme;
@@ -0,0 +1,2 @@
1
+ var o=function(o){var n=o.toString(16);return 1===n.length?"0"+n:n},n=function(o,n){var t;return void 0===n&&(n=.5),!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(o)&&(3===(t=o.substring(1).split("")).length&&(t=[t[0],t[0],t[1],t[1],t[2],t[2]]),"rgba("+((t="0x"+t.join(""))>>16&255)+","+(t>>8&255)+","+(255&t)+","+n+")")},t=function(o){var n;return!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(o)&&(3===(n=o.substring(1).split("")).length&&(n=[n[0],n[0],n[1],n[1],n[2],n[2]]),{r:(n="0x"+n.join(""))>>16&255,g:n>>8&255,b:255&n})},r=function(o){var n=t(o);return!!n&&((299*n.r+587*n.g+114*n.b)/1e3>=128?"#000000":"#FFFFFF")},e=function(o,n,t){return o/n*t},a=function(n,r){var a,l,i=t(n),c={};return!!i&&(r<0?(c.r=i.r-parseInt(i.r/100*-r,10),c.g=i.g-parseInt(i.g/100*-r,10),c.b=i.b-parseInt(i.b/100*-r,10)):(c.r=parseInt(e(255-i.r,100,r),10)+i.r,c.g=parseInt(e(255-i.g,100,r),10)+i.g,c.b=parseInt(e(255-i.b,100,r),10)+i.b),a=c.g,l=c.b,"#"+o(c.r)+o(a)+o(l))},l=function(o,n,e){void 0===e&&(e=22);var l=100/Math.ceil(e/2),i=l*Math.floor(e/2),c=[];if(t(o))for(var f=0;f<e;f+=1){var s=a(o,i-f*l),d=r(s);c.push({name:f>e/2?n+"-"+f:f===e/2?n:n+"-"+(f+1),color:s,textColor:d})}return c},i=function(){return"undefined"!=typeof window},c=function(o,t,r){var e=t.color,a=t.color,l=t.color,i=t.color,c=t.color,f=t.textColor,s=t.textColor,d=t.color,b=t.textColor;return o[r+2]?a=o[r+2].color:o[r-2]&&(a=o[r-2].color),o[r+1]?l=o[r+1].color:o[r-1]&&(l=o[r-1].color),o[r+2]?i=o[r+2].color:o[r-2]&&(i=o[r-2].color),o[r+4]?c=o[r+4].color:o[r-4]&&(c=o[r-4].color),o[r+4]?f=o[r+4].textColor:o[r-4]&&(f=o[r-4].textColor),o[r+2]?e=o[r+2].color:o[r-2]&&(e=o[r-2].color),o[r+2]?s=o[r+2].textColor:o[r-2]&&(s=o[r-2].textColor),o[r+3]?d=o[r+3].color:o[r-3]&&(d=o[r-3].color),o[r+3]?b=o[r+3].textColor:o[r-3]&&(b=o[r-3].textColor),"\n button.fr-btn-"+t.name+"{\n background-color:"+t.color+";\n border-color:"+t.color+";\n color:"+t.textColor+" !important;\n }\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):hover{\n background-color:"+e+";\n border-color:"+e+";\n color:"+s+"\n }\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled).fr-active,\n button.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled).fr-active,\n button.fr-show > .fr-btn-outline-"+t.name+".fr-dropdown-toggle{\n color: "+b+";\n background-color: "+d+";\n border-color: "+d+";\n }\n .fr-border-"+t.name+"{border-color: "+t.color+" !important;}\n .fr-bg-"+t.name+"{background-color: "+t.color+" !important;}\n .gradient.fr-bg-"+t.name+",fr-btn-outline-"+t.name+":hover,\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled){\n background-image: linear-gradient(to bottom,"+t.color+","+a+");\n }\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):hover,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):hover{\n background-image: linear-gradient(to bottom,"+t.color+","+l+");\n color: "+t.textColor+";\n }\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active{\n background-image: linear-gradient(to bottom,"+i+","+c+");\n color: "+f+";\n }\n .fr-text-"+t.name+"{color: "+t.color+" !important;}\n .fr-btn-outline-"+t.name+"{\n color: "+t.color+";\n border-color: "+t.color+";\n }\n .fr-btn-outline-"+t.name+":hover{\n color: "+t.textColor+";\n background-color: "+t.color+";\n border-color: "+t.color+";\n }\n .fr-btn-outline-"+t.name+".fr-disabled,\n .fr-btn-outline-"+t.name+":disabled{\n color: "+t.color+" !important;\n background-color: transparent !important;\n border-color: "+t.color+" !important;\n }\n .fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled).fr-active:focus,\n .fr-show > .fr-btn-outline-"+t.name+".fr-dropdown-toggle:focus{\n box-shadow: 0 0 0 0.2rem "+n(t.color)+";\n }\n .fr-btn-"+t.name+":focus, .fr-btn-outline-"+t.name+":focus{\n box-shadow: 0 0 0 0.2rem "+n(t.color)+";\n }\n .fr-component-hover-"+t.name+":hover:not(.fr-row):not([class^=fr-col]):not(button)>*{\n color:"+t.textColor+" !important;\n }\n .fr-component-hover-"+t.name+":hover:not(button){\n background-color:"+t.color+" !important;\n border-color:"+e+" !important;\n }\n .fr-icon.fr-i-"+t.name+" path{\n fill: "+t.color+";\n }\n .fr-btn-"+t.name+" .fr-icon path{\n fill: "+t.textColor+";\n }\n"};"undefined"!=typeof window&&(window.FR||(window.FR={}),window.FR.initTheme=function(o){try{var t=[],e={palette:{},designTokens:o.designTokens||{}},a=[];o.config&&o.config.outputFields&&(a=o.config.outputFields),a.includes("colors")&&(e.colors=o.colors),a.includes("typography")&&(e.typography=o.typography);var f=function(){if(o){function a(){if(o.colors){t.push(["button.fr-btn:disabled{\n background-color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#d4d4d4")+";\n border-color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#d4d4d4")+";\n color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#afafaf")+"\n }\n "]);for(var a=Object.keys(o.colors),f=0;f<a.length;f+=1){var s=a[f],d=o.colors[a[f]];if("none"!==d){e.palette[""+s]=d;var b=l(d,s);if(o.config&&o.config.generatePalette)b.forEach(function(o,n){if(e.palette[""+o.name]=o.color,i()){var r=c(b,o,n);t.push(r.replace(/\n. |\r/g,""))}});else if(i()){var u=c(b,{color:d,name:s,textColor:r(d)},11);t.push(u.replace(/\n. |\r/g,""))}}}if(o.colors.primary){var m=n(o.colors.primary,.25);t.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem "+m+";outline: 0;}")}}if(i()&&"undefined"!=typeof document){var p=document.getElementById("frTheming");if(p)p.innerHTML=t.join(" ");else{var g=""+t.join(" "),h=document.body||document.getElementsByTagName("body")[0],v=document.createElement("style");v.type="text/css",v.id="frTheming",v.styleSheet?v.styleSheet.cssText=g:v.appendChild(document.createTextNode(g)),h.appendChild(v)}}}var f=function(){if(o.typography){var n=t.push;return Promise.resolve(function(o){try{var n=!1;function t(t){return n?t:(o.fonts&&"object"==typeof o.fonts&&Object.keys(o.fonts).map(function(n){return"object"==typeof o.fonts[n]&&(o.fonts[n].preset?r+="@import url('"+o.fonts[n].preset+"');":Array.isArray(o.fonts[n].src)&&(r+="@font-face {\n font-family: '"+(o.fonts[n].alias?o.fonts[n].alias:n)+"';\n "+(o.fonts[n].fontStyle?"font-style:"+o.fonts[n].fontStyle+";":"")+"\n "+(o.fonts[n].fontWeight?"font-weight:"+o.fonts[n].fontWeight+";":"")+"\n "+(o.fonts[n].fontDisplay?"font-display:"+o.fonts[n].fontDisplay+";":"")+"\n src:",o.fonts[n].local&&o.fonts[n].local.forEach(function(o){r+="local('"+o+"'),"}),o.fonts[n].src.forEach(function(t,e){r+="url('"+t.url+"') format('"+t.format+"')"+(e<o.fonts[n].src.length-1?",":"")}),r+="}"),r+=".fr-font-name-"+n.toLocaleLowerCase().replace(/ /g,"-")+"{font-family: '"+(o.fonts[n].alias?o.fonts[n].alias:n)+"', 'sans-serif'}"),n}),r)}var r="",e=function(){if("object"==typeof o&&Array.isArray(o)){var t=o.map(function(o){return{name:o,outputType:"string"}});return Promise.resolve(fetch("https://em-font-service-prod.airtrfx.com",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({fonts:t})})).then(function(o){return Promise.resolve(o.json()).then(function(o){var t="";return Object.keys(o).forEach(function(n){t+=o[n].css}),n=!0,t})})}}();return Promise.resolve(e&&e.then?e.then(t):t(e))}catch(o){return Promise.reject(o)}}(o.typography)).then(function(o){n.call(t,o)})}}();return f&&f.then?f.then(a):a()}}();return Promise.resolve(f&&f.then?f.then(function(){return e}):e)}catch(o){return Promise.reject(o)}});
2
+ //# sourceMappingURL=front10-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front10-helpers.js","sources":["../src/Color/Color.js","../src/canI/canI.js","../src/ThemeBuilder/ThemeBuilder.js","../src/index.js"],"sourcesContent":["const componentToHex = c => {\n const hex = c.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n};\n\nconst rgb2Hex = (r, g, b) =>\n `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;\n\nconst hexToRGBA = (hex, alpha = 0.5) => {\n let c;\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n c = hex.substring(1).split(\"\");\n if (c.length === 3) {\n c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n }\n c = `0x${c.join(\"\")}`;\n return `rgba(${(c >> 16) & 255},${(c >> 8) & 255},${c & 255},${alpha})`;\n } else {\n // console.error(\"Bad Hex:\", hex, \"Alpha: \", alpha);\n return false;\n }\n};\n\nconst isColor = color => {\n if (hex2RGB(color)) return true;\n else return false;\n};\n\nconst hex2RGB = hex => {\n let c;\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n c = hex.substring(1).split(\"\");\n if (c.length === 3) {\n c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n }\n c = `0x${c.join(\"\")}`;\n // eslint-disable-next-line no-bitwise\n return { r: (c >> 16) & 255, g: (c >> 8) & 255, b: c & 255 };\n } else {\n return false;\n // throw new Error(\"Bad Hex\");\n }\n};\n\n// https://24ways.org/2010/calculating-color-contrast\n// https://www.w3.org/WAI/ER/WD-AERT/#color-contrast\nconst getContrast = hexColor => {\n const rgb = hex2RGB(hexColor);\n if (rgb) {\n const yiq = (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n return yiq >= 128 ? \"#000000\" : \"#FFFFFF\";\n } else return false;\n};\n\nconst variacion = (H, Z, value) => {\n return (H / Z) * value;\n};\n\n// https://www.w3.org/TR/WCAG20/#relativeluminancedef\nconst colorBrightness = (color, value) => {\n const rgb = hex2RGB(color);\n const t = {};\n if (rgb) {\n if (value < 0) {\n t.r = rgb.r - parseInt((rgb.r / 100) * -value, 10);\n t.g = rgb.g - parseInt((rgb.g / 100) * -value, 10);\n t.b = rgb.b - parseInt((rgb.b / 100) * -value, 10);\n } else {\n t.r = parseInt(variacion(255 - rgb.r, 100, value), 10) + rgb.r;\n t.g = parseInt(variacion(255 - rgb.g, 100, value), 10) + rgb.g;\n t.b = parseInt(variacion(255 - rgb.b, 100, value), 10) + rgb.b;\n }\n return rgb2Hex(t.r, t.g, t.b);\n } else return false;\n};\n\n/**\n * Function to generate a colors palette.\n * This function return a array of colors\n * in the following format: [{color: 'string', textColor: 'string', name: 'string' }]\n * @param {string} hexColor Color in hexadecimal format\n * @param {string} name Name of color\n * @param {integer} cantShape Cant of variations\n */\nconst generatePalette = (hexColor, name, cantShape = 22) => {\n const step = 100 / Math.ceil(cantShape / 2);\n const startVal = step * Math.floor(cantShape / 2);\n const colors = [];\n if (isColor(hexColor)) {\n for (let i = 0; i < cantShape; i += 1) {\n const color = colorBrightness(hexColor, startVal - i * step);\n const textColor = getContrast(color);\n let tmpName;\n if (i > cantShape / 2) tmpName = `${name}-${i}`;\n else if (i === cantShape / 2) tmpName = name;\n else tmpName = `${name}-${i + 1}`;\n colors.push({\n name: tmpName,\n color,\n textColor\n });\n }\n }\n return colors;\n};\n\nexport { generatePalette, getContrast, hex2RGB, hexToRGBA, rgb2Hex, isColor };\n","const subscribersMap = {};\nconst addedGlobalEventListeners = false;\n\n/**\n * Returns an element\n * @param {*} elementSelector\n */\nconst getElement = elementSelector => {\n return document.querySelector(elementSelector);\n};\n\n/**\n * Iterate through the listeners list and try to resolve\n * the promise if they are visible in the viewport\n * TODO: Fix the viewport detection part\n */\nconst resolveListeners = () => {\n const subscribersKeyList = Object.keys(subscribersMap);\n if (subscribersKeyList.length > 0) {\n for (let index = 0; index < subscribersKeyList.length; index++) {\n const key = subscribersKeyList[index];\n if (subscribersMap[key]) {\n //Only full load component when is visible in viewport\n if (isElementInViewport(getElement(key))) {\n subscribersMap[key].resolve(true);\n subscribersMap[key] = null;\n delete subscribersMap[key];\n }\n }\n }\n }\n};\n\n/**\n * Helper function to simulate a setInterval but\n * wthout hurting the browser performance\n * @param {*} fn\n * @param {*} delay\n */\nconst requestInterval = (fn, delay) => {\n const requestAnimFrame = (() => {\n return (\n window.requestAnimationFrame ||\n function hello(callback) {\n window.setTimeout(callback, 1000 / 60);\n }\n );\n })();\n let start = new Date().getTime();\n const handle = {};\n function loop() {\n handle.value = requestAnimFrame(loop);\n const current = new Date().getTime();\n const delta = current - start;\n if (delta >= delay) {\n fn.call();\n start = new Date().getTime();\n }\n }\n handle.value = requestAnimFrame(loop);\n return handle;\n};\n\n/**\n * Try to resolve all listeners once an\n * user wants to play with the components\n * this heuristics are very basic, we should\n * find better ones.\n */\nconst addGlobalEventListeners = () => {\n window.addEventListener(\"scroll\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"click\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"mousemove\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"keydown\", () => {\n resolveListeners();\n });\n\n requestInterval(() => {\n resolveListeners();\n }, 2000);\n};\n\n/**\n * Returns the DocElement\n */\nconst getDocElement = () => {\n if (window !== undefined) {\n return window.document.documentElement;\n }\n return false;\n};\n\n/**\n * Obtaining the viewport height\n * @method _getViewportH\n * @return ConditionalExpression\n */\nconst getViewportH = () => {\n const client = getDocElement.clientHeight;\n const inner = window.innerHeight;\n return client < inner ? inner : client;\n};\n\n/**\n * The offset of the element\n * @method _getOffset\n * @param {} el\n * @return ObjectExpression\n */\nconst getOffset = el => {\n let offsetTop = 0;\n let offsetLeft = 0;\n /* eslint-disable */\n do {\n if (!isNaN(el.offsetTop)) {\n offsetTop += el.offsetTop;\n }\n if (!isNaN(el.offsetLeft)) {\n offsetLeft += el.offsetLeft;\n }\n } while ((el = el.offsetParent));\n /* eslint-enable */\n return {\n top: offsetTop,\n left: offsetLeft\n };\n};\n\n/**\n * Return true if the element if visible in a viewport zone\n * @param {} el\n * @param {} h\n * @return LogicalExpression\n */\nconst isElementInViewport = el => {\n if (canIExecuteClientCode() && el) {\n let element = el;\n let top = element.offsetTop;\n let left = element.offsetLeft;\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n\n while (element.offsetParent) {\n element = element.offsetParent;\n top += element.offsetTop;\n left += element.offsetLeft;\n }\n\n return (\n top < window.pageYOffset + window.innerHeight &&\n left < window.pageXOffset + window.innerWidth &&\n top + height > window.pageYOffset &&\n left + width > window.pageXOffset\n );\n }\n};\n\n/**\n * Returns a promise that resolves once the initial\n * browser processing is done. This allows to save\n * the users that uses low cpu devices and also have\n * awesome results in Google Page Speed\n * @param {*} elementSelector\n * @param {*} inSSR\n */\nconst canILiftOff = (elementSelector, inSSR = true) => {\n return new Promise(resolve => {\n // we don't need to wait in SSR\n if (window === undefined && inSSR) {\n resolve(true);\n } else {\n // adds global listeners that will trigger\n // once a real person is interacting with the browser\n if (!addedGlobalEventListeners) {\n addGlobalEventListeners();\n }\n // saving all the component instances subscriptions\n subscribersMap[elementSelector] = {\n resolve\n };\n }\n });\n};\n\nconst canIExecuteClientCode = () => {\n return typeof window !== \"undefined\";\n};\n\nexport { canILiftOff, isElementInViewport, canIExecuteClientCode };\n","import { generatePalette, hexToRGBA, getContrast } from \"../Color\";\nimport { canIExecuteClientCode } from \"../canI\";\n\nconst generateTypographyStyles = async (typography) => {\n let style = \"\";\n if (typeof typography === \"object\" && Array.isArray(typography)) {\n const dataFonts = typography.map((item) => {\n return {\n name: item,\n outputType: \"string\"\n };\n });\n const rawResponse = await fetch(\n \"https://em-font-service-prod.airtrfx.com\",\n {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n method: \"POST\",\n body: JSON.stringify({\n fonts: dataFonts\n })\n }\n );\n\n const cssObject = await rawResponse.json();\n let css = \"\";\n Object.keys(cssObject).forEach((item) => {\n css += cssObject[item].css;\n });\n return css;\n }\n if (typography.fonts && typeof typography.fonts === \"object\") {\n Object.keys(typography.fonts).map((fontName) => {\n if (typeof typography.fonts[fontName] === \"object\") {\n if (typography.fonts[fontName].preset)\n style += `@import url('${typography.fonts[fontName].preset}');`;\n else if (Array.isArray(typography.fonts[fontName].src)) {\n style += `@font-face {\n font-family: '${\n typography.fonts[fontName].alias\n ? typography.fonts[fontName].alias\n : fontName\n }';\n ${\n typography.fonts[fontName].fontStyle\n ? `font-style:${typography.fonts[fontName].fontStyle};`\n : \"\"\n }\n ${\n typography.fonts[fontName].fontWeight\n ? `font-weight:${typography.fonts[fontName].fontWeight};`\n : \"\"\n }\n ${\n typography.fonts[fontName].fontDisplay\n ? `font-display:${typography.fonts[fontName].fontDisplay};`\n : \"\"\n }\n src:`;\n\n typography.fonts[fontName].local &&\n typography.fonts[fontName].local.forEach((local) => {\n style += `local('${local}'),`;\n });\n typography.fonts[fontName].src.forEach((fontSrc, index) => {\n style += `url('${fontSrc.url}') format('${fontSrc.format}')${\n index < typography.fonts[fontName].src.length - 1 ? \",\" : \"\"\n }`;\n });\n style += \"}\";\n }\n style += `.fr-font-name-${fontName\n .toLocaleLowerCase()\n .replace(/ /g, \"-\")}{font-family: '${\n typography.fonts[fontName].alias\n ? typography.fonts[fontName].alias\n : fontName\n }', 'sans-serif'}`;\n }\n return fontName;\n });\n }\n return style;\n};\n\nconst generateStylesPalette = (palette, item, i) => {\n let hoverBgColor = item.color;\n let gradientTo = item.color;\n let gradientButtonToHover = item.color;\n let gradientButtonFromActive = item.color;\n let gradientButtonToActive = item.color;\n let gradientButtonTextActive = item.textColor;\n let hoverColor = item.textColor;\n let activeBgColor = item.color;\n let activeColor = item.textColor;\n\n if (palette[i + 2]) gradientTo = palette[i + 2].color;\n else if (palette[i - 2]) gradientTo = palette[i - 2].color;\n\n if (palette[i + 1]) gradientButtonToHover = palette[i + 1].color;\n else if (palette[i - 1]) gradientButtonToHover = palette[i - 1].color;\n\n if (palette[i + 2]) gradientButtonFromActive = palette[i + 2].color;\n else if (palette[i - 2]) gradientButtonFromActive = palette[i - 2].color;\n\n if (palette[i + 4]) gradientButtonToActive = palette[i + 4].color;\n else if (palette[i - 4]) gradientButtonToActive = palette[i - 4].color;\n\n if (palette[i + 4]) gradientButtonTextActive = palette[i + 4].textColor;\n else if (palette[i - 4]) gradientButtonTextActive = palette[i - 4].textColor;\n\n if (palette[i + 2]) hoverBgColor = palette[i + 2].color;\n else if (palette[i - 2]) hoverBgColor = palette[i - 2].color;\n\n if (palette[i + 2]) hoverColor = palette[i + 2].textColor;\n else if (palette[i - 2]) hoverColor = palette[i - 2].textColor;\n\n if (palette[i + 3]) activeBgColor = palette[i + 3].color;\n else if (palette[i - 3]) activeBgColor = palette[i - 3].color;\n\n if (palette[i + 3]) activeColor = palette[i + 3].textColor;\n else if (palette[i - 3]) activeColor = palette[i - 3].textColor;\n const styles = `\n button.fr-btn-${item.name}{\n background-color:${item.color};\n border-color:${item.color};\n color:${item.textColor} !important;\n }\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):focus,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):hover{\n background-color:${hoverBgColor};\n border-color:${hoverBgColor};\n color:${hoverColor}\n }\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled).fr-active,\n button.fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled).fr-active,\n button.fr-show > .fr-btn-outline-${item.name}.fr-dropdown-toggle{\n color: ${activeColor};\n background-color: ${activeBgColor};\n border-color: ${activeBgColor};\n }\n .fr-border-${item.name}{border-color: ${item.color} !important;}\n .fr-bg-${item.name}{background-color: ${item.color} !important;}\n .gradient.fr-bg-${item.name},fr-btn-outline-${item.name}:hover,\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled){\n background-image: linear-gradient(to bottom,${item.color},${gradientTo});\n }\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):hover,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):hover{\n background-image: linear-gradient(to bottom,${\n item.color\n },${gradientButtonToHover});\n color: ${item.textColor};\n }\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):active{\n background-image: linear-gradient(to bottom,${gradientButtonFromActive},${gradientButtonToActive});\n color: ${gradientButtonTextActive};\n }\n .fr-text-${item.name}{color: ${item.color} !important;}\n .fr-btn-outline-${item.name}{\n color: ${item.color};\n border-color: ${item.color};\n }\n .fr-btn-outline-${item.name}:hover{\n color: ${item.textColor};\n background-color: ${item.color};\n border-color: ${item.color};\n }\n .fr-btn-outline-${item.name}.fr-disabled,\n .fr-btn-outline-${item.name}:disabled{\n color: ${item.color} !important;\n background-color: transparent !important;\n border-color: ${item.color} !important;\n }\n .fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled).fr-active:focus,\n .fr-show > .fr-btn-outline-${item.name}.fr-dropdown-toggle:focus{\n box-shadow: 0 0 0 0.2rem ${hexToRGBA(item.color)};\n }\n .fr-btn-${item.name}:focus, .fr-btn-outline-${item.name}:focus{\n box-shadow: 0 0 0 0.2rem ${hexToRGBA(item.color)};\n }\n .fr-component-hover-${\n item.name\n }:hover:not(.fr-row):not([class^=fr-col]):not(button)>*{\n color:${item.textColor} !important;\n }\n .fr-component-hover-${item.name}:hover:not(button){\n background-color:${item.color} !important;\n border-color:${hoverBgColor} !important;\n }\n .fr-icon.fr-i-${item.name} path{\n fill: ${item.color};\n }\n .fr-btn-${item.name} .fr-icon path{\n fill: ${item.textColor};\n }\n`;\n return styles;\n};\n\nconst initTheme = async (theme) => {\n const generatedStyles = [];\n const themeToken = {\n palette: {},\n designTokens: theme.designTokens || {}\n };\n\n let outputFields = [];\n if (theme.config && theme.config.outputFields) {\n outputFields = theme.config.outputFields;\n }\n if (outputFields.includes(\"colors\")) themeToken.colors = theme.colors;\n if (outputFields.includes(\"typography\"))\n themeToken.typography = theme.typography;\n if (theme) {\n if (theme.typography) {\n generatedStyles.push(await generateTypographyStyles(theme.typography));\n }\n if (theme.colors) {\n generatedStyles.push([\n `button.fr-btn:disabled{\n background-color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#d4d4d4\"\n };\n border-color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#d4d4d4\"\n };\n color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#afafaf\"\n }\n }\n `\n ]);\n const themeColorsKeys = Object.keys(theme.colors);\n for (let index = 0; index < themeColorsKeys.length; index += 1) {\n const colorName = themeColorsKeys[index];\n const colorValue = theme.colors[themeColorsKeys[index]];\n if (colorValue !== \"none\") {\n // Adding base color to palette\n themeToken.palette[`${colorName}`] = colorValue;\n const palette = generatePalette(colorValue, colorName);\n if (theme.config && theme.config.generatePalette) {\n palette.forEach((item, i) => {\n // Adding color variations to the palette\n themeToken.palette[`${item.name}`] = item.color;\n // Avoiding executing unnecessary code that is not needed in the SSR\n if (canIExecuteClientCode()) {\n const styles = generateStylesPalette(palette, item, i);\n generatedStyles.push(styles.replace(/\\n. |\\r/g, \"\"));\n }\n });\n } else {\n if (canIExecuteClientCode()) {\n const styles = generateStylesPalette(\n palette,\n {\n color: colorValue,\n name: colorName,\n textColor: getContrast(colorValue)\n },\n 11\n );\n generatedStyles.push(styles.replace(/\\n. |\\r/g, \"\"));\n }\n }\n }\n }\n if (theme.colors.primary) {\n const primaryHover = hexToRGBA(theme.colors.primary, 0.25);\n generatedStyles.push(\n `.fr-focus:focus, .fr-form-control:focus, .fr-focus\\\\:focus{box-shadow: 0 0 0 0.2rem ${primaryHover};outline: 0;}`\n );\n }\n }\n if (canIExecuteClientCode() && typeof document != \"undefined\") {\n const element = document.getElementById(\"frTheming\");\n if (element) {\n element.innerHTML = generatedStyles.join(\" \");\n } else {\n const themeStyleNode = `${generatedStyles.join(\" \")}`;\n\n const body = document.body || document.getElementsByTagName(\"body\")[0];\n const style = document.createElement(\"style\");\n\n style.type = \"text/css\";\n style.id = \"frTheming\";\n if (style.styleSheet) {\n // This is required for IE8 and below.\n style.styleSheet.cssText = themeStyleNode;\n } else {\n style.appendChild(document.createTextNode(themeStyleNode));\n }\n body.appendChild(style);\n }\n }\n }\n return themeToken;\n};\n\nexport { initTheme };\n","import { initTheme } from \"./ThemeBuilder\";\nif(typeof window !== \"undefined\"){\n if(!window.FR) window.FR = {};\n window.FR.initTheme=initTheme;\n}"],"names":["const","componentToHex","c","hex","toString","length","hexToRGBA","alpha","test","substring","split","join","hex2RGB","r","g","b","getContrast","hexColor","rgb","variacion","H","Z","value","colorBrightness","color","t","parseInt","generatePalette","name","cantShape","step","Math","ceil","startVal","floor","colors","let","i","textColor","push","canIExecuteClientCode","window","generateStylesPalette","palette","item","hoverBgColor","gradientTo","gradientButtonToHover","gradientButtonFromActive","gradientButtonToActive","gradientButtonTextActive","hoverColor","activeBgColor","activeColor","FR","initTheme","theme","generatedStyles","themeToken","designTokens","outputFields","config","includes","typography","components","button","disabled","bgColor","themeColorsKeys","Object","keys","index","colorName","colorValue","forEach","styles","replace","primary","primaryHover","document","element","getElementById","innerHTML","themeStyleNode","body","getElementsByTagName","style","createElement","type","id","styleSheet","cssText","appendChild","createTextNode","fonts","map","fontName","preset","Array","isArray","src","alias","fontStyle","fontWeight","fontDisplay","local","fontSrc","toLocaleLowerCase","dataFonts","outputType","fetch","headers","Accept","method","JSON","stringify","rawResponse","json","cssObject","css","generateTypographyStyles"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var o=function(o){var n=o.toString(16);return 1===n.length?"0"+n:n},n=function(o,n){var t;return void 0===n&&(n=.5),!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(o)&&(3===(t=o.substring(1).split("")).length&&(t=[t[0],t[0],t[1],t[1],t[2],t[2]]),"rgba("+((t="0x"+t.join(""))>>16&255)+","+(t>>8&255)+","+(255&t)+","+n+")")},t=function(o){var n;return!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(o)&&(3===(n=o.substring(1).split("")).length&&(n=[n[0],n[0],n[1],n[1],n[2],n[2]]),{r:(n="0x"+n.join(""))>>16&255,g:n>>8&255,b:255&n})},r=function(o){var n=t(o);return!!n&&((299*n.r+587*n.g+114*n.b)/1e3>=128?"#000000":"#FFFFFF")},e=function(o,n,t){return o/n*t},a=function(n,r){var a,l,i=t(n),c={};return!!i&&(r<0?(c.r=i.r-parseInt(i.r/100*-r,10),c.g=i.g-parseInt(i.g/100*-r,10),c.b=i.b-parseInt(i.b/100*-r,10)):(c.r=parseInt(e(255-i.r,100,r),10)+i.r,c.g=parseInt(e(255-i.g,100,r),10)+i.g,c.b=parseInt(e(255-i.b,100,r),10)+i.b),a=c.g,l=c.b,"#"+o(c.r)+o(a)+o(l))},l=function(o,n,e){void 0===e&&(e=22);var l=100/Math.ceil(e/2),i=l*Math.floor(e/2),c=[];if(t(o))for(var f=0;f<e;f+=1){var s=a(o,i-f*l),d=r(s);c.push({name:f>e/2?n+"-"+f:f===e/2?n:n+"-"+(f+1),color:s,textColor:d})}return c},i=function(){return"undefined"!=typeof window},c=function(o,t,r){var e=t.color,a=t.color,l=t.color,i=t.color,c=t.color,f=t.textColor,s=t.textColor,d=t.color,b=t.textColor;return o[r+2]?a=o[r+2].color:o[r-2]&&(a=o[r-2].color),o[r+1]?l=o[r+1].color:o[r-1]&&(l=o[r-1].color),o[r+2]?i=o[r+2].color:o[r-2]&&(i=o[r-2].color),o[r+4]?c=o[r+4].color:o[r-4]&&(c=o[r-4].color),o[r+4]?f=o[r+4].textColor:o[r-4]&&(f=o[r-4].textColor),o[r+2]?e=o[r+2].color:o[r-2]&&(e=o[r-2].color),o[r+2]?s=o[r+2].textColor:o[r-2]&&(s=o[r-2].textColor),o[r+3]?d=o[r+3].color:o[r-3]&&(d=o[r-3].color),o[r+3]?b=o[r+3].textColor:o[r-3]&&(b=o[r-3].textColor),"\n button.fr-btn-"+t.name+"{\n background-color:"+t.color+";\n border-color:"+t.color+";\n color:"+t.textColor+" !important;\n }\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):hover{\n background-color:"+e+";\n border-color:"+e+";\n color:"+s+"\n }\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled).fr-active,\n button.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled).fr-active,\n button.fr-show > .fr-btn-outline-"+t.name+".fr-dropdown-toggle{\n color: "+b+";\n background-color: "+d+";\n border-color: "+d+";\n }\n .fr-border-"+t.name+"{border-color: "+t.color+" !important;}\n .fr-bg-"+t.name+"{background-color: "+t.color+" !important;}\n .gradient.fr-bg-"+t.name+",fr-btn-outline-"+t.name+":hover,\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled){\n background-image: linear-gradient(to bottom,"+t.color+","+a+");\n }\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):hover,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):hover{\n background-image: linear-gradient(to bottom,"+t.color+","+l+");\n color: "+t.textColor+";\n }\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active{\n background-image: linear-gradient(to bottom,"+i+","+c+");\n color: "+f+";\n }\n .fr-text-"+t.name+"{color: "+t.color+" !important;}\n .fr-btn-outline-"+t.name+"{\n color: "+t.color+";\n border-color: "+t.color+";\n }\n .fr-btn-outline-"+t.name+":hover{\n color: "+t.textColor+";\n background-color: "+t.color+";\n border-color: "+t.color+";\n }\n .fr-btn-outline-"+t.name+".fr-disabled,\n .fr-btn-outline-"+t.name+":disabled{\n color: "+t.color+" !important;\n background-color: transparent !important;\n border-color: "+t.color+" !important;\n }\n .fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled).fr-active:focus,\n .fr-show > .fr-btn-outline-"+t.name+".fr-dropdown-toggle:focus{\n box-shadow: 0 0 0 0.2rem "+n(t.color)+";\n }\n .fr-btn-"+t.name+":focus, .fr-btn-outline-"+t.name+":focus{\n box-shadow: 0 0 0 0.2rem "+n(t.color)+";\n }\n .fr-component-hover-"+t.name+":hover:not(.fr-row):not([class^=fr-col]):not(button)>*{\n color:"+t.textColor+" !important;\n }\n .fr-component-hover-"+t.name+":hover:not(button){\n background-color:"+t.color+" !important;\n border-color:"+e+" !important;\n }\n .fr-icon.fr-i-"+t.name+" path{\n fill: "+t.color+";\n }\n .fr-btn-"+t.name+" .fr-icon path{\n fill: "+t.textColor+";\n }\n"};"undefined"!=typeof window&&(window.FR||(window.FR={}),window.FR.initTheme=function(o){try{var t=[],e={palette:{},designTokens:o.designTokens||{}},a=[];o.config&&o.config.outputFields&&(a=o.config.outputFields),a.includes("colors")&&(e.colors=o.colors),a.includes("typography")&&(e.typography=o.typography);var f=function(){if(o){function a(){if(o.colors){t.push(["button.fr-btn:disabled{\n background-color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#d4d4d4")+";\n border-color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#d4d4d4")+";\n color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#afafaf")+"\n }\n "]);for(var a=Object.keys(o.colors),f=0;f<a.length;f+=1){var s=a[f],d=o.colors[a[f]];if("none"!==d){e.palette[""+s]=d;var b=l(d,s);if(o.config&&o.config.generatePalette)b.forEach(function(o,n){if(e.palette[""+o.name]=o.color,i()){var r=c(b,o,n);t.push(r.replace(/\n. |\r/g,""))}});else if(i()){var u=c(b,{color:d,name:s,textColor:r(d)},11);t.push(u.replace(/\n. |\r/g,""))}}}if(o.colors.primary){var m=n(o.colors.primary,.25);t.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem "+m+";outline: 0;}")}}if(i()&&"undefined"!=typeof document){var p=document.getElementById("frTheming");if(p)p.innerHTML=t.join(" ");else{var g=""+t.join(" "),h=document.body||document.getElementsByTagName("body")[0],v=document.createElement("style");v.type="text/css",v.id="frTheming",v.styleSheet?v.styleSheet.cssText=g:v.appendChild(document.createTextNode(g)),h.appendChild(v)}}}var f=function(){if(o.typography){var n=t.push;return Promise.resolve(function(o){try{var n=!1;function t(t){return n?t:(o.fonts&&"object"==typeof o.fonts&&Object.keys(o.fonts).map(function(n){return"object"==typeof o.fonts[n]&&(o.fonts[n].preset?r+="@import url('"+o.fonts[n].preset+"');":Array.isArray(o.fonts[n].src)&&(r+="@font-face {\n font-family: '"+(o.fonts[n].alias?o.fonts[n].alias:n)+"';\n "+(o.fonts[n].fontStyle?"font-style:"+o.fonts[n].fontStyle+";":"")+"\n "+(o.fonts[n].fontWeight?"font-weight:"+o.fonts[n].fontWeight+";":"")+"\n "+(o.fonts[n].fontDisplay?"font-display:"+o.fonts[n].fontDisplay+";":"")+"\n src:",o.fonts[n].local&&o.fonts[n].local.forEach(function(o){r+="local('"+o+"'),"}),o.fonts[n].src.forEach(function(t,e){r+="url('"+t.url+"') format('"+t.format+"')"+(e<o.fonts[n].src.length-1?",":"")}),r+="}"),r+=".fr-font-name-"+n.toLocaleLowerCase().replace(/ /g,"-")+"{font-family: '"+(o.fonts[n].alias?o.fonts[n].alias:n)+"', 'sans-serif'}"),n}),r)}var r="",e=function(){if("object"==typeof o&&Array.isArray(o)){var t=o.map(function(o){return{name:o,outputType:"string"}});return Promise.resolve(fetch("https://em-font-service-prod.airtrfx.com",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({fonts:t})})).then(function(o){return Promise.resolve(o.json()).then(function(o){var t="";return Object.keys(o).forEach(function(n){t+=o[n].css}),n=!0,t})})}}();return Promise.resolve(e&&e.then?e.then(t):t(e))}catch(o){return Promise.reject(o)}}(o.typography)).then(function(o){n.call(t,o)})}}();return f&&f.then?f.then(a):a()}}();return Promise.resolve(f&&f.then?f.then(function(){return e}):e)}catch(o){return Promise.reject(o)}});
2
+ //# sourceMappingURL=front10-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front10-helpers.mjs","sources":["../src/Color/Color.js","../src/canI/canI.js","../src/ThemeBuilder/ThemeBuilder.js","../src/index.js"],"sourcesContent":["const componentToHex = c => {\n const hex = c.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n};\n\nconst rgb2Hex = (r, g, b) =>\n `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;\n\nconst hexToRGBA = (hex, alpha = 0.5) => {\n let c;\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n c = hex.substring(1).split(\"\");\n if (c.length === 3) {\n c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n }\n c = `0x${c.join(\"\")}`;\n return `rgba(${(c >> 16) & 255},${(c >> 8) & 255},${c & 255},${alpha})`;\n } else {\n // console.error(\"Bad Hex:\", hex, \"Alpha: \", alpha);\n return false;\n }\n};\n\nconst isColor = color => {\n if (hex2RGB(color)) return true;\n else return false;\n};\n\nconst hex2RGB = hex => {\n let c;\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n c = hex.substring(1).split(\"\");\n if (c.length === 3) {\n c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n }\n c = `0x${c.join(\"\")}`;\n // eslint-disable-next-line no-bitwise\n return { r: (c >> 16) & 255, g: (c >> 8) & 255, b: c & 255 };\n } else {\n return false;\n // throw new Error(\"Bad Hex\");\n }\n};\n\n// https://24ways.org/2010/calculating-color-contrast\n// https://www.w3.org/WAI/ER/WD-AERT/#color-contrast\nconst getContrast = hexColor => {\n const rgb = hex2RGB(hexColor);\n if (rgb) {\n const yiq = (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n return yiq >= 128 ? \"#000000\" : \"#FFFFFF\";\n } else return false;\n};\n\nconst variacion = (H, Z, value) => {\n return (H / Z) * value;\n};\n\n// https://www.w3.org/TR/WCAG20/#relativeluminancedef\nconst colorBrightness = (color, value) => {\n const rgb = hex2RGB(color);\n const t = {};\n if (rgb) {\n if (value < 0) {\n t.r = rgb.r - parseInt((rgb.r / 100) * -value, 10);\n t.g = rgb.g - parseInt((rgb.g / 100) * -value, 10);\n t.b = rgb.b - parseInt((rgb.b / 100) * -value, 10);\n } else {\n t.r = parseInt(variacion(255 - rgb.r, 100, value), 10) + rgb.r;\n t.g = parseInt(variacion(255 - rgb.g, 100, value), 10) + rgb.g;\n t.b = parseInt(variacion(255 - rgb.b, 100, value), 10) + rgb.b;\n }\n return rgb2Hex(t.r, t.g, t.b);\n } else return false;\n};\n\n/**\n * Function to generate a colors palette.\n * This function return a array of colors\n * in the following format: [{color: 'string', textColor: 'string', name: 'string' }]\n * @param {string} hexColor Color in hexadecimal format\n * @param {string} name Name of color\n * @param {integer} cantShape Cant of variations\n */\nconst generatePalette = (hexColor, name, cantShape = 22) => {\n const step = 100 / Math.ceil(cantShape / 2);\n const startVal = step * Math.floor(cantShape / 2);\n const colors = [];\n if (isColor(hexColor)) {\n for (let i = 0; i < cantShape; i += 1) {\n const color = colorBrightness(hexColor, startVal - i * step);\n const textColor = getContrast(color);\n let tmpName;\n if (i > cantShape / 2) tmpName = `${name}-${i}`;\n else if (i === cantShape / 2) tmpName = name;\n else tmpName = `${name}-${i + 1}`;\n colors.push({\n name: tmpName,\n color,\n textColor\n });\n }\n }\n return colors;\n};\n\nexport { generatePalette, getContrast, hex2RGB, hexToRGBA, rgb2Hex, isColor };\n","const subscribersMap = {};\nconst addedGlobalEventListeners = false;\n\n/**\n * Returns an element\n * @param {*} elementSelector\n */\nconst getElement = elementSelector => {\n return document.querySelector(elementSelector);\n};\n\n/**\n * Iterate through the listeners list and try to resolve\n * the promise if they are visible in the viewport\n * TODO: Fix the viewport detection part\n */\nconst resolveListeners = () => {\n const subscribersKeyList = Object.keys(subscribersMap);\n if (subscribersKeyList.length > 0) {\n for (let index = 0; index < subscribersKeyList.length; index++) {\n const key = subscribersKeyList[index];\n if (subscribersMap[key]) {\n //Only full load component when is visible in viewport\n if (isElementInViewport(getElement(key))) {\n subscribersMap[key].resolve(true);\n subscribersMap[key] = null;\n delete subscribersMap[key];\n }\n }\n }\n }\n};\n\n/**\n * Helper function to simulate a setInterval but\n * wthout hurting the browser performance\n * @param {*} fn\n * @param {*} delay\n */\nconst requestInterval = (fn, delay) => {\n const requestAnimFrame = (() => {\n return (\n window.requestAnimationFrame ||\n function hello(callback) {\n window.setTimeout(callback, 1000 / 60);\n }\n );\n })();\n let start = new Date().getTime();\n const handle = {};\n function loop() {\n handle.value = requestAnimFrame(loop);\n const current = new Date().getTime();\n const delta = current - start;\n if (delta >= delay) {\n fn.call();\n start = new Date().getTime();\n }\n }\n handle.value = requestAnimFrame(loop);\n return handle;\n};\n\n/**\n * Try to resolve all listeners once an\n * user wants to play with the components\n * this heuristics are very basic, we should\n * find better ones.\n */\nconst addGlobalEventListeners = () => {\n window.addEventListener(\"scroll\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"click\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"mousemove\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"keydown\", () => {\n resolveListeners();\n });\n\n requestInterval(() => {\n resolveListeners();\n }, 2000);\n};\n\n/**\n * Returns the DocElement\n */\nconst getDocElement = () => {\n if (window !== undefined) {\n return window.document.documentElement;\n }\n return false;\n};\n\n/**\n * Obtaining the viewport height\n * @method _getViewportH\n * @return ConditionalExpression\n */\nconst getViewportH = () => {\n const client = getDocElement.clientHeight;\n const inner = window.innerHeight;\n return client < inner ? inner : client;\n};\n\n/**\n * The offset of the element\n * @method _getOffset\n * @param {} el\n * @return ObjectExpression\n */\nconst getOffset = el => {\n let offsetTop = 0;\n let offsetLeft = 0;\n /* eslint-disable */\n do {\n if (!isNaN(el.offsetTop)) {\n offsetTop += el.offsetTop;\n }\n if (!isNaN(el.offsetLeft)) {\n offsetLeft += el.offsetLeft;\n }\n } while ((el = el.offsetParent));\n /* eslint-enable */\n return {\n top: offsetTop,\n left: offsetLeft\n };\n};\n\n/**\n * Return true if the element if visible in a viewport zone\n * @param {} el\n * @param {} h\n * @return LogicalExpression\n */\nconst isElementInViewport = el => {\n if (canIExecuteClientCode() && el) {\n let element = el;\n let top = element.offsetTop;\n let left = element.offsetLeft;\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n\n while (element.offsetParent) {\n element = element.offsetParent;\n top += element.offsetTop;\n left += element.offsetLeft;\n }\n\n return (\n top < window.pageYOffset + window.innerHeight &&\n left < window.pageXOffset + window.innerWidth &&\n top + height > window.pageYOffset &&\n left + width > window.pageXOffset\n );\n }\n};\n\n/**\n * Returns a promise that resolves once the initial\n * browser processing is done. This allows to save\n * the users that uses low cpu devices and also have\n * awesome results in Google Page Speed\n * @param {*} elementSelector\n * @param {*} inSSR\n */\nconst canILiftOff = (elementSelector, inSSR = true) => {\n return new Promise(resolve => {\n // we don't need to wait in SSR\n if (window === undefined && inSSR) {\n resolve(true);\n } else {\n // adds global listeners that will trigger\n // once a real person is interacting with the browser\n if (!addedGlobalEventListeners) {\n addGlobalEventListeners();\n }\n // saving all the component instances subscriptions\n subscribersMap[elementSelector] = {\n resolve\n };\n }\n });\n};\n\nconst canIExecuteClientCode = () => {\n return typeof window !== \"undefined\";\n};\n\nexport { canILiftOff, isElementInViewport, canIExecuteClientCode };\n","import { generatePalette, hexToRGBA, getContrast } from \"../Color\";\nimport { canIExecuteClientCode } from \"../canI\";\n\nconst generateTypographyStyles = async (typography) => {\n let style = \"\";\n if (typeof typography === \"object\" && Array.isArray(typography)) {\n const dataFonts = typography.map((item) => {\n return {\n name: item,\n outputType: \"string\"\n };\n });\n const rawResponse = await fetch(\n \"https://em-font-service-prod.airtrfx.com\",\n {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n method: \"POST\",\n body: JSON.stringify({\n fonts: dataFonts\n })\n }\n );\n\n const cssObject = await rawResponse.json();\n let css = \"\";\n Object.keys(cssObject).forEach((item) => {\n css += cssObject[item].css;\n });\n return css;\n }\n if (typography.fonts && typeof typography.fonts === \"object\") {\n Object.keys(typography.fonts).map((fontName) => {\n if (typeof typography.fonts[fontName] === \"object\") {\n if (typography.fonts[fontName].preset)\n style += `@import url('${typography.fonts[fontName].preset}');`;\n else if (Array.isArray(typography.fonts[fontName].src)) {\n style += `@font-face {\n font-family: '${\n typography.fonts[fontName].alias\n ? typography.fonts[fontName].alias\n : fontName\n }';\n ${\n typography.fonts[fontName].fontStyle\n ? `font-style:${typography.fonts[fontName].fontStyle};`\n : \"\"\n }\n ${\n typography.fonts[fontName].fontWeight\n ? `font-weight:${typography.fonts[fontName].fontWeight};`\n : \"\"\n }\n ${\n typography.fonts[fontName].fontDisplay\n ? `font-display:${typography.fonts[fontName].fontDisplay};`\n : \"\"\n }\n src:`;\n\n typography.fonts[fontName].local &&\n typography.fonts[fontName].local.forEach((local) => {\n style += `local('${local}'),`;\n });\n typography.fonts[fontName].src.forEach((fontSrc, index) => {\n style += `url('${fontSrc.url}') format('${fontSrc.format}')${\n index < typography.fonts[fontName].src.length - 1 ? \",\" : \"\"\n }`;\n });\n style += \"}\";\n }\n style += `.fr-font-name-${fontName\n .toLocaleLowerCase()\n .replace(/ /g, \"-\")}{font-family: '${\n typography.fonts[fontName].alias\n ? typography.fonts[fontName].alias\n : fontName\n }', 'sans-serif'}`;\n }\n return fontName;\n });\n }\n return style;\n};\n\nconst generateStylesPalette = (palette, item, i) => {\n let hoverBgColor = item.color;\n let gradientTo = item.color;\n let gradientButtonToHover = item.color;\n let gradientButtonFromActive = item.color;\n let gradientButtonToActive = item.color;\n let gradientButtonTextActive = item.textColor;\n let hoverColor = item.textColor;\n let activeBgColor = item.color;\n let activeColor = item.textColor;\n\n if (palette[i + 2]) gradientTo = palette[i + 2].color;\n else if (palette[i - 2]) gradientTo = palette[i - 2].color;\n\n if (palette[i + 1]) gradientButtonToHover = palette[i + 1].color;\n else if (palette[i - 1]) gradientButtonToHover = palette[i - 1].color;\n\n if (palette[i + 2]) gradientButtonFromActive = palette[i + 2].color;\n else if (palette[i - 2]) gradientButtonFromActive = palette[i - 2].color;\n\n if (palette[i + 4]) gradientButtonToActive = palette[i + 4].color;\n else if (palette[i - 4]) gradientButtonToActive = palette[i - 4].color;\n\n if (palette[i + 4]) gradientButtonTextActive = palette[i + 4].textColor;\n else if (palette[i - 4]) gradientButtonTextActive = palette[i - 4].textColor;\n\n if (palette[i + 2]) hoverBgColor = palette[i + 2].color;\n else if (palette[i - 2]) hoverBgColor = palette[i - 2].color;\n\n if (palette[i + 2]) hoverColor = palette[i + 2].textColor;\n else if (palette[i - 2]) hoverColor = palette[i - 2].textColor;\n\n if (palette[i + 3]) activeBgColor = palette[i + 3].color;\n else if (palette[i - 3]) activeBgColor = palette[i - 3].color;\n\n if (palette[i + 3]) activeColor = palette[i + 3].textColor;\n else if (palette[i - 3]) activeColor = palette[i - 3].textColor;\n const styles = `\n button.fr-btn-${item.name}{\n background-color:${item.color};\n border-color:${item.color};\n color:${item.textColor} !important;\n }\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):focus,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):hover{\n background-color:${hoverBgColor};\n border-color:${hoverBgColor};\n color:${hoverColor}\n }\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled).fr-active,\n button.fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled).fr-active,\n button.fr-show > .fr-btn-outline-${item.name}.fr-dropdown-toggle{\n color: ${activeColor};\n background-color: ${activeBgColor};\n border-color: ${activeBgColor};\n }\n .fr-border-${item.name}{border-color: ${item.color} !important;}\n .fr-bg-${item.name}{background-color: ${item.color} !important;}\n .gradient.fr-bg-${item.name},fr-btn-outline-${item.name}:hover,\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled){\n background-image: linear-gradient(to bottom,${item.color},${gradientTo});\n }\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):hover,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):hover{\n background-image: linear-gradient(to bottom,${\n item.color\n },${gradientButtonToHover});\n color: ${item.textColor};\n }\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):active{\n background-image: linear-gradient(to bottom,${gradientButtonFromActive},${gradientButtonToActive});\n color: ${gradientButtonTextActive};\n }\n .fr-text-${item.name}{color: ${item.color} !important;}\n .fr-btn-outline-${item.name}{\n color: ${item.color};\n border-color: ${item.color};\n }\n .fr-btn-outline-${item.name}:hover{\n color: ${item.textColor};\n background-color: ${item.color};\n border-color: ${item.color};\n }\n .fr-btn-outline-${item.name}.fr-disabled,\n .fr-btn-outline-${item.name}:disabled{\n color: ${item.color} !important;\n background-color: transparent !important;\n border-color: ${item.color} !important;\n }\n .fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled).fr-active:focus,\n .fr-show > .fr-btn-outline-${item.name}.fr-dropdown-toggle:focus{\n box-shadow: 0 0 0 0.2rem ${hexToRGBA(item.color)};\n }\n .fr-btn-${item.name}:focus, .fr-btn-outline-${item.name}:focus{\n box-shadow: 0 0 0 0.2rem ${hexToRGBA(item.color)};\n }\n .fr-component-hover-${\n item.name\n }:hover:not(.fr-row):not([class^=fr-col]):not(button)>*{\n color:${item.textColor} !important;\n }\n .fr-component-hover-${item.name}:hover:not(button){\n background-color:${item.color} !important;\n border-color:${hoverBgColor} !important;\n }\n .fr-icon.fr-i-${item.name} path{\n fill: ${item.color};\n }\n .fr-btn-${item.name} .fr-icon path{\n fill: ${item.textColor};\n }\n`;\n return styles;\n};\n\nconst initTheme = async (theme) => {\n const generatedStyles = [];\n const themeToken = {\n palette: {},\n designTokens: theme.designTokens || {}\n };\n\n let outputFields = [];\n if (theme.config && theme.config.outputFields) {\n outputFields = theme.config.outputFields;\n }\n if (outputFields.includes(\"colors\")) themeToken.colors = theme.colors;\n if (outputFields.includes(\"typography\"))\n themeToken.typography = theme.typography;\n if (theme) {\n if (theme.typography) {\n generatedStyles.push(await generateTypographyStyles(theme.typography));\n }\n if (theme.colors) {\n generatedStyles.push([\n `button.fr-btn:disabled{\n background-color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#d4d4d4\"\n };\n border-color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#d4d4d4\"\n };\n color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#afafaf\"\n }\n }\n `\n ]);\n const themeColorsKeys = Object.keys(theme.colors);\n for (let index = 0; index < themeColorsKeys.length; index += 1) {\n const colorName = themeColorsKeys[index];\n const colorValue = theme.colors[themeColorsKeys[index]];\n if (colorValue !== \"none\") {\n // Adding base color to palette\n themeToken.palette[`${colorName}`] = colorValue;\n const palette = generatePalette(colorValue, colorName);\n if (theme.config && theme.config.generatePalette) {\n palette.forEach((item, i) => {\n // Adding color variations to the palette\n themeToken.palette[`${item.name}`] = item.color;\n // Avoiding executing unnecessary code that is not needed in the SSR\n if (canIExecuteClientCode()) {\n const styles = generateStylesPalette(palette, item, i);\n generatedStyles.push(styles.replace(/\\n. |\\r/g, \"\"));\n }\n });\n } else {\n if (canIExecuteClientCode()) {\n const styles = generateStylesPalette(\n palette,\n {\n color: colorValue,\n name: colorName,\n textColor: getContrast(colorValue)\n },\n 11\n );\n generatedStyles.push(styles.replace(/\\n. |\\r/g, \"\"));\n }\n }\n }\n }\n if (theme.colors.primary) {\n const primaryHover = hexToRGBA(theme.colors.primary, 0.25);\n generatedStyles.push(\n `.fr-focus:focus, .fr-form-control:focus, .fr-focus\\\\:focus{box-shadow: 0 0 0 0.2rem ${primaryHover};outline: 0;}`\n );\n }\n }\n if (canIExecuteClientCode() && typeof document != \"undefined\") {\n const element = document.getElementById(\"frTheming\");\n if (element) {\n element.innerHTML = generatedStyles.join(\" \");\n } else {\n const themeStyleNode = `${generatedStyles.join(\" \")}`;\n\n const body = document.body || document.getElementsByTagName(\"body\")[0];\n const style = document.createElement(\"style\");\n\n style.type = \"text/css\";\n style.id = \"frTheming\";\n if (style.styleSheet) {\n // This is required for IE8 and below.\n style.styleSheet.cssText = themeStyleNode;\n } else {\n style.appendChild(document.createTextNode(themeStyleNode));\n }\n body.appendChild(style);\n }\n }\n }\n return themeToken;\n};\n\nexport { initTheme };\n","import { initTheme } from \"./ThemeBuilder\";\nif(typeof window !== \"undefined\"){\n if(!window.FR) window.FR = {};\n window.FR.initTheme=initTheme;\n}"],"names":["const","componentToHex","c","hex","toString","length","hexToRGBA","alpha","test","substring","split","join","hex2RGB","r","g","b","getContrast","hexColor","rgb","variacion","H","Z","value","colorBrightness","color","t","parseInt","generatePalette","name","cantShape","step","Math","ceil","startVal","floor","colors","let","i","textColor","push","canIExecuteClientCode","window","generateStylesPalette","palette","item","hoverBgColor","gradientTo","gradientButtonToHover","gradientButtonFromActive","gradientButtonToActive","gradientButtonTextActive","hoverColor","activeBgColor","activeColor","FR","initTheme","theme","generatedStyles","themeToken","designTokens","outputFields","config","includes","typography","components","button","disabled","bgColor","themeColorsKeys","Object","keys","index","colorName","colorValue","forEach","styles","replace","primary","primaryHover","document","element","getElementById","innerHTML","themeStyleNode","body","getElementsByTagName","style","createElement","type","id","styleSheet","cssText","appendChild","createTextNode","fonts","map","fontName","preset","Array","isArray","src","alias","fontStyle","fontWeight","fontDisplay","local","fontSrc","toLocaleLowerCase","dataFonts","outputType","fetch","headers","Accept","method","JSON","stringify","rawResponse","json","cssObject","css","generateTypographyStyles"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(o,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(0,function(){var o=function(o){var n=o.toString(16);return 1===n.length?"0"+n:n},n=function(o,n){var t;return void 0===n&&(n=.5),!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(o)&&(3===(t=o.substring(1).split("")).length&&(t=[t[0],t[0],t[1],t[1],t[2],t[2]]),"rgba("+((t="0x"+t.join(""))>>16&255)+","+(t>>8&255)+","+(255&t)+","+n+")")},t=function(o){var n;return!!/^#([A-Fa-f0-9]{3}){1,2}$/.test(o)&&(3===(n=o.substring(1).split("")).length&&(n=[n[0],n[0],n[1],n[1],n[2],n[2]]),{r:(n="0x"+n.join(""))>>16&255,g:n>>8&255,b:255&n})},r=function(o){var n=t(o);return!!n&&((299*n.r+587*n.g+114*n.b)/1e3>=128?"#000000":"#FFFFFF")},e=function(o,n,t){return o/n*t},a=function(n,r){var a,l,i=t(n),c={};return!!i&&(r<0?(c.r=i.r-parseInt(i.r/100*-r,10),c.g=i.g-parseInt(i.g/100*-r,10),c.b=i.b-parseInt(i.b/100*-r,10)):(c.r=parseInt(e(255-i.r,100,r),10)+i.r,c.g=parseInt(e(255-i.g,100,r),10)+i.g,c.b=parseInt(e(255-i.b,100,r),10)+i.b),a=c.g,l=c.b,"#"+o(c.r)+o(a)+o(l))},l=function(o,n,e){void 0===e&&(e=22);var l=100/Math.ceil(e/2),i=l*Math.floor(e/2),c=[];if(t(o))for(var f=0;f<e;f+=1){var s=a(o,i-f*l),d=r(s);c.push({name:f>e/2?n+"-"+f:f===e/2?n:n+"-"+(f+1),color:s,textColor:d})}return c},i=function(){return"undefined"!=typeof window},c=function(o,t,r){var e=t.color,a=t.color,l=t.color,i=t.color,c=t.color,f=t.textColor,s=t.textColor,d=t.color,b=t.textColor;return o[r+2]?a=o[r+2].color:o[r-2]&&(a=o[r-2].color),o[r+1]?l=o[r+1].color:o[r-1]&&(l=o[r-1].color),o[r+2]?i=o[r+2].color:o[r-2]&&(i=o[r-2].color),o[r+4]?c=o[r+4].color:o[r-4]&&(c=o[r-4].color),o[r+4]?f=o[r+4].textColor:o[r-4]&&(f=o[r-4].textColor),o[r+2]?e=o[r+2].color:o[r-2]&&(e=o[r-2].color),o[r+2]?s=o[r+2].textColor:o[r-2]&&(s=o[r-2].textColor),o[r+3]?d=o[r+3].color:o[r-3]&&(d=o[r-3].color),o[r+3]?b=o[r+3].textColor:o[r-3]&&(b=o[r-3].textColor),"\n button.fr-btn-"+t.name+"{\n background-color:"+t.color+";\n border-color:"+t.color+";\n color:"+t.textColor+" !important;\n }\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):hover{\n background-color:"+e+";\n border-color:"+e+";\n color:"+s+"\n }\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled).fr-active,\n button.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled).fr-active,\n button.fr-show > .fr-btn-outline-"+t.name+".fr-dropdown-toggle{\n color: "+b+";\n background-color: "+d+";\n border-color: "+d+";\n }\n .fr-border-"+t.name+"{border-color: "+t.color+" !important;}\n .fr-bg-"+t.name+"{background-color: "+t.color+" !important;}\n .gradient.fr-bg-"+t.name+",fr-btn-outline-"+t.name+":hover,\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled){\n background-image: linear-gradient(to bottom,"+t.color+","+a+");\n }\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):hover,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):hover{\n background-image: linear-gradient(to bottom,"+t.color+","+l+");\n color: "+t.textColor+";\n }\n button.gradient.fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active,\n button.gradient.fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active{\n background-image: linear-gradient(to bottom,"+i+","+c+");\n color: "+f+";\n }\n .fr-text-"+t.name+"{color: "+t.color+" !important;}\n .fr-btn-outline-"+t.name+"{\n color: "+t.color+";\n border-color: "+t.color+";\n }\n .fr-btn-outline-"+t.name+":hover{\n color: "+t.textColor+";\n background-color: "+t.color+";\n border-color: "+t.color+";\n }\n .fr-btn-outline-"+t.name+".fr-disabled,\n .fr-btn-outline-"+t.name+":disabled{\n color: "+t.color+" !important;\n background-color: transparent !important;\n border-color: "+t.color+" !important;\n }\n .fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-"+t.name+":not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-outline-"+t.name+":not(:disabled):not(.fr-disabled).fr-active:focus,\n .fr-show > .fr-btn-outline-"+t.name+".fr-dropdown-toggle:focus{\n box-shadow: 0 0 0 0.2rem "+n(t.color)+";\n }\n .fr-btn-"+t.name+":focus, .fr-btn-outline-"+t.name+":focus{\n box-shadow: 0 0 0 0.2rem "+n(t.color)+";\n }\n .fr-component-hover-"+t.name+":hover:not(.fr-row):not([class^=fr-col]):not(button)>*{\n color:"+t.textColor+" !important;\n }\n .fr-component-hover-"+t.name+":hover:not(button){\n background-color:"+t.color+" !important;\n border-color:"+e+" !important;\n }\n .fr-icon.fr-i-"+t.name+" path{\n fill: "+t.color+";\n }\n .fr-btn-"+t.name+" .fr-icon path{\n fill: "+t.textColor+";\n }\n"};"undefined"!=typeof window&&(window.FR||(window.FR={}),window.FR.initTheme=function(o){try{var t=[],e={palette:{},designTokens:o.designTokens||{}},a=[];o.config&&o.config.outputFields&&(a=o.config.outputFields),a.includes("colors")&&(e.colors=o.colors),a.includes("typography")&&(e.typography=o.typography);var f=function(){if(o){function a(){if(o.colors){t.push(["button.fr-btn:disabled{\n background-color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#d4d4d4")+";\n border-color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#d4d4d4")+";\n color:"+(o.components&&o.components.button&&o.components.button.disabled&&o.components.button.disabled.bgColor?o.components.button.disabled.bgColor:"#afafaf")+"\n }\n "]);for(var a=Object.keys(o.colors),f=0;f<a.length;f+=1){var s=a[f],d=o.colors[a[f]];if("none"!==d){e.palette[""+s]=d;var b=l(d,s);if(o.config&&o.config.generatePalette)b.forEach(function(o,n){if(e.palette[""+o.name]=o.color,i()){var r=c(b,o,n);t.push(r.replace(/\n. |\r/g,""))}});else if(i()){var u=c(b,{color:d,name:s,textColor:r(d)},11);t.push(u.replace(/\n. |\r/g,""))}}}if(o.colors.primary){var m=n(o.colors.primary,.25);t.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem "+m+";outline: 0;}")}}if(i()&&"undefined"!=typeof document){var p=document.getElementById("frTheming");if(p)p.innerHTML=t.join(" ");else{var g=""+t.join(" "),h=document.body||document.getElementsByTagName("body")[0],v=document.createElement("style");v.type="text/css",v.id="frTheming",v.styleSheet?v.styleSheet.cssText=g:v.appendChild(document.createTextNode(g)),h.appendChild(v)}}}var f=function(){if(o.typography){var n=t.push;return Promise.resolve(function(o){try{var n=!1;function t(t){return n?t:(o.fonts&&"object"==typeof o.fonts&&Object.keys(o.fonts).map(function(n){return"object"==typeof o.fonts[n]&&(o.fonts[n].preset?r+="@import url('"+o.fonts[n].preset+"');":Array.isArray(o.fonts[n].src)&&(r+="@font-face {\n font-family: '"+(o.fonts[n].alias?o.fonts[n].alias:n)+"';\n "+(o.fonts[n].fontStyle?"font-style:"+o.fonts[n].fontStyle+";":"")+"\n "+(o.fonts[n].fontWeight?"font-weight:"+o.fonts[n].fontWeight+";":"")+"\n "+(o.fonts[n].fontDisplay?"font-display:"+o.fonts[n].fontDisplay+";":"")+"\n src:",o.fonts[n].local&&o.fonts[n].local.forEach(function(o){r+="local('"+o+"'),"}),o.fonts[n].src.forEach(function(t,e){r+="url('"+t.url+"') format('"+t.format+"')"+(e<o.fonts[n].src.length-1?",":"")}),r+="}"),r+=".fr-font-name-"+n.toLocaleLowerCase().replace(/ /g,"-")+"{font-family: '"+(o.fonts[n].alias?o.fonts[n].alias:n)+"', 'sans-serif'}"),n}),r)}var r="",e=function(){if("object"==typeof o&&Array.isArray(o)){var t=o.map(function(o){return{name:o,outputType:"string"}});return Promise.resolve(fetch("https://em-font-service-prod.airtrfx.com",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({fonts:t})})).then(function(o){return Promise.resolve(o.json()).then(function(o){var t="";return Object.keys(o).forEach(function(n){t+=o[n].css}),n=!0,t})})}}();return Promise.resolve(e&&e.then?e.then(t):t(e))}catch(o){return Promise.reject(o)}}(o.typography)).then(function(o){n.call(t,o)})}}();return f&&f.then?f.then(a):a()}}();return Promise.resolve(f&&f.then?f.then(function(){return e}):e)}catch(o){return Promise.reject(o)}})});
2
+ //# sourceMappingURL=front10-helpers.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front10-helpers.umd.js","sources":["../src/Color/Color.js","../src/canI/canI.js","../src/ThemeBuilder/ThemeBuilder.js","../src/index.js"],"sourcesContent":["const componentToHex = c => {\n const hex = c.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n};\n\nconst rgb2Hex = (r, g, b) =>\n `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;\n\nconst hexToRGBA = (hex, alpha = 0.5) => {\n let c;\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n c = hex.substring(1).split(\"\");\n if (c.length === 3) {\n c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n }\n c = `0x${c.join(\"\")}`;\n return `rgba(${(c >> 16) & 255},${(c >> 8) & 255},${c & 255},${alpha})`;\n } else {\n // console.error(\"Bad Hex:\", hex, \"Alpha: \", alpha);\n return false;\n }\n};\n\nconst isColor = color => {\n if (hex2RGB(color)) return true;\n else return false;\n};\n\nconst hex2RGB = hex => {\n let c;\n if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n c = hex.substring(1).split(\"\");\n if (c.length === 3) {\n c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n }\n c = `0x${c.join(\"\")}`;\n // eslint-disable-next-line no-bitwise\n return { r: (c >> 16) & 255, g: (c >> 8) & 255, b: c & 255 };\n } else {\n return false;\n // throw new Error(\"Bad Hex\");\n }\n};\n\n// https://24ways.org/2010/calculating-color-contrast\n// https://www.w3.org/WAI/ER/WD-AERT/#color-contrast\nconst getContrast = hexColor => {\n const rgb = hex2RGB(hexColor);\n if (rgb) {\n const yiq = (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n return yiq >= 128 ? \"#000000\" : \"#FFFFFF\";\n } else return false;\n};\n\nconst variacion = (H, Z, value) => {\n return (H / Z) * value;\n};\n\n// https://www.w3.org/TR/WCAG20/#relativeluminancedef\nconst colorBrightness = (color, value) => {\n const rgb = hex2RGB(color);\n const t = {};\n if (rgb) {\n if (value < 0) {\n t.r = rgb.r - parseInt((rgb.r / 100) * -value, 10);\n t.g = rgb.g - parseInt((rgb.g / 100) * -value, 10);\n t.b = rgb.b - parseInt((rgb.b / 100) * -value, 10);\n } else {\n t.r = parseInt(variacion(255 - rgb.r, 100, value), 10) + rgb.r;\n t.g = parseInt(variacion(255 - rgb.g, 100, value), 10) + rgb.g;\n t.b = parseInt(variacion(255 - rgb.b, 100, value), 10) + rgb.b;\n }\n return rgb2Hex(t.r, t.g, t.b);\n } else return false;\n};\n\n/**\n * Function to generate a colors palette.\n * This function return a array of colors\n * in the following format: [{color: 'string', textColor: 'string', name: 'string' }]\n * @param {string} hexColor Color in hexadecimal format\n * @param {string} name Name of color\n * @param {integer} cantShape Cant of variations\n */\nconst generatePalette = (hexColor, name, cantShape = 22) => {\n const step = 100 / Math.ceil(cantShape / 2);\n const startVal = step * Math.floor(cantShape / 2);\n const colors = [];\n if (isColor(hexColor)) {\n for (let i = 0; i < cantShape; i += 1) {\n const color = colorBrightness(hexColor, startVal - i * step);\n const textColor = getContrast(color);\n let tmpName;\n if (i > cantShape / 2) tmpName = `${name}-${i}`;\n else if (i === cantShape / 2) tmpName = name;\n else tmpName = `${name}-${i + 1}`;\n colors.push({\n name: tmpName,\n color,\n textColor\n });\n }\n }\n return colors;\n};\n\nexport { generatePalette, getContrast, hex2RGB, hexToRGBA, rgb2Hex, isColor };\n","const subscribersMap = {};\nconst addedGlobalEventListeners = false;\n\n/**\n * Returns an element\n * @param {*} elementSelector\n */\nconst getElement = elementSelector => {\n return document.querySelector(elementSelector);\n};\n\n/**\n * Iterate through the listeners list and try to resolve\n * the promise if they are visible in the viewport\n * TODO: Fix the viewport detection part\n */\nconst resolveListeners = () => {\n const subscribersKeyList = Object.keys(subscribersMap);\n if (subscribersKeyList.length > 0) {\n for (let index = 0; index < subscribersKeyList.length; index++) {\n const key = subscribersKeyList[index];\n if (subscribersMap[key]) {\n //Only full load component when is visible in viewport\n if (isElementInViewport(getElement(key))) {\n subscribersMap[key].resolve(true);\n subscribersMap[key] = null;\n delete subscribersMap[key];\n }\n }\n }\n }\n};\n\n/**\n * Helper function to simulate a setInterval but\n * wthout hurting the browser performance\n * @param {*} fn\n * @param {*} delay\n */\nconst requestInterval = (fn, delay) => {\n const requestAnimFrame = (() => {\n return (\n window.requestAnimationFrame ||\n function hello(callback) {\n window.setTimeout(callback, 1000 / 60);\n }\n );\n })();\n let start = new Date().getTime();\n const handle = {};\n function loop() {\n handle.value = requestAnimFrame(loop);\n const current = new Date().getTime();\n const delta = current - start;\n if (delta >= delay) {\n fn.call();\n start = new Date().getTime();\n }\n }\n handle.value = requestAnimFrame(loop);\n return handle;\n};\n\n/**\n * Try to resolve all listeners once an\n * user wants to play with the components\n * this heuristics are very basic, we should\n * find better ones.\n */\nconst addGlobalEventListeners = () => {\n window.addEventListener(\"scroll\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"click\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"mousemove\", () => {\n resolveListeners();\n });\n\n window.addEventListener(\"keydown\", () => {\n resolveListeners();\n });\n\n requestInterval(() => {\n resolveListeners();\n }, 2000);\n};\n\n/**\n * Returns the DocElement\n */\nconst getDocElement = () => {\n if (window !== undefined) {\n return window.document.documentElement;\n }\n return false;\n};\n\n/**\n * Obtaining the viewport height\n * @method _getViewportH\n * @return ConditionalExpression\n */\nconst getViewportH = () => {\n const client = getDocElement.clientHeight;\n const inner = window.innerHeight;\n return client < inner ? inner : client;\n};\n\n/**\n * The offset of the element\n * @method _getOffset\n * @param {} el\n * @return ObjectExpression\n */\nconst getOffset = el => {\n let offsetTop = 0;\n let offsetLeft = 0;\n /* eslint-disable */\n do {\n if (!isNaN(el.offsetTop)) {\n offsetTop += el.offsetTop;\n }\n if (!isNaN(el.offsetLeft)) {\n offsetLeft += el.offsetLeft;\n }\n } while ((el = el.offsetParent));\n /* eslint-enable */\n return {\n top: offsetTop,\n left: offsetLeft\n };\n};\n\n/**\n * Return true if the element if visible in a viewport zone\n * @param {} el\n * @param {} h\n * @return LogicalExpression\n */\nconst isElementInViewport = el => {\n if (canIExecuteClientCode() && el) {\n let element = el;\n let top = element.offsetTop;\n let left = element.offsetLeft;\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n\n while (element.offsetParent) {\n element = element.offsetParent;\n top += element.offsetTop;\n left += element.offsetLeft;\n }\n\n return (\n top < window.pageYOffset + window.innerHeight &&\n left < window.pageXOffset + window.innerWidth &&\n top + height > window.pageYOffset &&\n left + width > window.pageXOffset\n );\n }\n};\n\n/**\n * Returns a promise that resolves once the initial\n * browser processing is done. This allows to save\n * the users that uses low cpu devices and also have\n * awesome results in Google Page Speed\n * @param {*} elementSelector\n * @param {*} inSSR\n */\nconst canILiftOff = (elementSelector, inSSR = true) => {\n return new Promise(resolve => {\n // we don't need to wait in SSR\n if (window === undefined && inSSR) {\n resolve(true);\n } else {\n // adds global listeners that will trigger\n // once a real person is interacting with the browser\n if (!addedGlobalEventListeners) {\n addGlobalEventListeners();\n }\n // saving all the component instances subscriptions\n subscribersMap[elementSelector] = {\n resolve\n };\n }\n });\n};\n\nconst canIExecuteClientCode = () => {\n return typeof window !== \"undefined\";\n};\n\nexport { canILiftOff, isElementInViewport, canIExecuteClientCode };\n","import { generatePalette, hexToRGBA, getContrast } from \"../Color\";\nimport { canIExecuteClientCode } from \"../canI\";\n\nconst generateTypographyStyles = async (typography) => {\n let style = \"\";\n if (typeof typography === \"object\" && Array.isArray(typography)) {\n const dataFonts = typography.map((item) => {\n return {\n name: item,\n outputType: \"string\"\n };\n });\n const rawResponse = await fetch(\n \"https://em-font-service-prod.airtrfx.com\",\n {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n method: \"POST\",\n body: JSON.stringify({\n fonts: dataFonts\n })\n }\n );\n\n const cssObject = await rawResponse.json();\n let css = \"\";\n Object.keys(cssObject).forEach((item) => {\n css += cssObject[item].css;\n });\n return css;\n }\n if (typography.fonts && typeof typography.fonts === \"object\") {\n Object.keys(typography.fonts).map((fontName) => {\n if (typeof typography.fonts[fontName] === \"object\") {\n if (typography.fonts[fontName].preset)\n style += `@import url('${typography.fonts[fontName].preset}');`;\n else if (Array.isArray(typography.fonts[fontName].src)) {\n style += `@font-face {\n font-family: '${\n typography.fonts[fontName].alias\n ? typography.fonts[fontName].alias\n : fontName\n }';\n ${\n typography.fonts[fontName].fontStyle\n ? `font-style:${typography.fonts[fontName].fontStyle};`\n : \"\"\n }\n ${\n typography.fonts[fontName].fontWeight\n ? `font-weight:${typography.fonts[fontName].fontWeight};`\n : \"\"\n }\n ${\n typography.fonts[fontName].fontDisplay\n ? `font-display:${typography.fonts[fontName].fontDisplay};`\n : \"\"\n }\n src:`;\n\n typography.fonts[fontName].local &&\n typography.fonts[fontName].local.forEach((local) => {\n style += `local('${local}'),`;\n });\n typography.fonts[fontName].src.forEach((fontSrc, index) => {\n style += `url('${fontSrc.url}') format('${fontSrc.format}')${\n index < typography.fonts[fontName].src.length - 1 ? \",\" : \"\"\n }`;\n });\n style += \"}\";\n }\n style += `.fr-font-name-${fontName\n .toLocaleLowerCase()\n .replace(/ /g, \"-\")}{font-family: '${\n typography.fonts[fontName].alias\n ? typography.fonts[fontName].alias\n : fontName\n }', 'sans-serif'}`;\n }\n return fontName;\n });\n }\n return style;\n};\n\nconst generateStylesPalette = (palette, item, i) => {\n let hoverBgColor = item.color;\n let gradientTo = item.color;\n let gradientButtonToHover = item.color;\n let gradientButtonFromActive = item.color;\n let gradientButtonToActive = item.color;\n let gradientButtonTextActive = item.textColor;\n let hoverColor = item.textColor;\n let activeBgColor = item.color;\n let activeColor = item.textColor;\n\n if (palette[i + 2]) gradientTo = palette[i + 2].color;\n else if (palette[i - 2]) gradientTo = palette[i - 2].color;\n\n if (palette[i + 1]) gradientButtonToHover = palette[i + 1].color;\n else if (palette[i - 1]) gradientButtonToHover = palette[i - 1].color;\n\n if (palette[i + 2]) gradientButtonFromActive = palette[i + 2].color;\n else if (palette[i - 2]) gradientButtonFromActive = palette[i - 2].color;\n\n if (palette[i + 4]) gradientButtonToActive = palette[i + 4].color;\n else if (palette[i - 4]) gradientButtonToActive = palette[i - 4].color;\n\n if (palette[i + 4]) gradientButtonTextActive = palette[i + 4].textColor;\n else if (palette[i - 4]) gradientButtonTextActive = palette[i - 4].textColor;\n\n if (palette[i + 2]) hoverBgColor = palette[i + 2].color;\n else if (palette[i - 2]) hoverBgColor = palette[i - 2].color;\n\n if (palette[i + 2]) hoverColor = palette[i + 2].textColor;\n else if (palette[i - 2]) hoverColor = palette[i - 2].textColor;\n\n if (palette[i + 3]) activeBgColor = palette[i + 3].color;\n else if (palette[i - 3]) activeBgColor = palette[i - 3].color;\n\n if (palette[i + 3]) activeColor = palette[i + 3].textColor;\n else if (palette[i - 3]) activeColor = palette[i - 3].textColor;\n const styles = `\n button.fr-btn-${item.name}{\n background-color:${item.color};\n border-color:${item.color};\n color:${item.textColor} !important;\n }\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):focus,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):hover{\n background-color:${hoverBgColor};\n border-color:${hoverBgColor};\n color:${hoverColor}\n }\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-${item.name}:not(:disabled):not(.fr-disabled).fr-active,\n button.fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled).fr-active,\n button.fr-show > .fr-btn-outline-${item.name}.fr-dropdown-toggle{\n color: ${activeColor};\n background-color: ${activeBgColor};\n border-color: ${activeBgColor};\n }\n .fr-border-${item.name}{border-color: ${item.color} !important;}\n .fr-bg-${item.name}{background-color: ${item.color} !important;}\n .gradient.fr-bg-${item.name},fr-btn-outline-${item.name}:hover,\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled){\n background-image: linear-gradient(to bottom,${item.color},${gradientTo});\n }\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):hover,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):focus,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):hover{\n background-image: linear-gradient(to bottom,${\n item.color\n },${gradientButtonToHover});\n color: ${item.textColor};\n }\n button.gradient.fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active,\n button.gradient.fr-btn-outline-${\n item.name\n }:not(:disabled):not(.fr-disabled):active{\n background-image: linear-gradient(to bottom,${gradientButtonFromActive},${gradientButtonToActive});\n color: ${gradientButtonTextActive};\n }\n .fr-text-${item.name}{color: ${item.color} !important;}\n .fr-btn-outline-${item.name}{\n color: ${item.color};\n border-color: ${item.color};\n }\n .fr-btn-outline-${item.name}:hover{\n color: ${item.textColor};\n background-color: ${item.color};\n border-color: ${item.color};\n }\n .fr-btn-outline-${item.name}.fr-disabled,\n .fr-btn-outline-${item.name}:disabled{\n color: ${item.color} !important;\n background-color: transparent !important;\n border-color: ${item.color} !important;\n }\n .fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-${item.name}:not(:disabled):not(.fr-disabled):active:focus,\n .fr-btn-outline-${item.name}:not(:disabled):not(.fr-disabled).fr-active:focus,\n .fr-show > .fr-btn-outline-${item.name}.fr-dropdown-toggle:focus{\n box-shadow: 0 0 0 0.2rem ${hexToRGBA(item.color)};\n }\n .fr-btn-${item.name}:focus, .fr-btn-outline-${item.name}:focus{\n box-shadow: 0 0 0 0.2rem ${hexToRGBA(item.color)};\n }\n .fr-component-hover-${\n item.name\n }:hover:not(.fr-row):not([class^=fr-col]):not(button)>*{\n color:${item.textColor} !important;\n }\n .fr-component-hover-${item.name}:hover:not(button){\n background-color:${item.color} !important;\n border-color:${hoverBgColor} !important;\n }\n .fr-icon.fr-i-${item.name} path{\n fill: ${item.color};\n }\n .fr-btn-${item.name} .fr-icon path{\n fill: ${item.textColor};\n }\n`;\n return styles;\n};\n\nconst initTheme = async (theme) => {\n const generatedStyles = [];\n const themeToken = {\n palette: {},\n designTokens: theme.designTokens || {}\n };\n\n let outputFields = [];\n if (theme.config && theme.config.outputFields) {\n outputFields = theme.config.outputFields;\n }\n if (outputFields.includes(\"colors\")) themeToken.colors = theme.colors;\n if (outputFields.includes(\"typography\"))\n themeToken.typography = theme.typography;\n if (theme) {\n if (theme.typography) {\n generatedStyles.push(await generateTypographyStyles(theme.typography));\n }\n if (theme.colors) {\n generatedStyles.push([\n `button.fr-btn:disabled{\n background-color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#d4d4d4\"\n };\n border-color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#d4d4d4\"\n };\n color:${\n theme.components &&\n theme.components.button &&\n theme.components.button.disabled &&\n theme.components.button.disabled.bgColor\n ? theme.components.button.disabled.bgColor\n : \"#afafaf\"\n }\n }\n `\n ]);\n const themeColorsKeys = Object.keys(theme.colors);\n for (let index = 0; index < themeColorsKeys.length; index += 1) {\n const colorName = themeColorsKeys[index];\n const colorValue = theme.colors[themeColorsKeys[index]];\n if (colorValue !== \"none\") {\n // Adding base color to palette\n themeToken.palette[`${colorName}`] = colorValue;\n const palette = generatePalette(colorValue, colorName);\n if (theme.config && theme.config.generatePalette) {\n palette.forEach((item, i) => {\n // Adding color variations to the palette\n themeToken.palette[`${item.name}`] = item.color;\n // Avoiding executing unnecessary code that is not needed in the SSR\n if (canIExecuteClientCode()) {\n const styles = generateStylesPalette(palette, item, i);\n generatedStyles.push(styles.replace(/\\n. |\\r/g, \"\"));\n }\n });\n } else {\n if (canIExecuteClientCode()) {\n const styles = generateStylesPalette(\n palette,\n {\n color: colorValue,\n name: colorName,\n textColor: getContrast(colorValue)\n },\n 11\n );\n generatedStyles.push(styles.replace(/\\n. |\\r/g, \"\"));\n }\n }\n }\n }\n if (theme.colors.primary) {\n const primaryHover = hexToRGBA(theme.colors.primary, 0.25);\n generatedStyles.push(\n `.fr-focus:focus, .fr-form-control:focus, .fr-focus\\\\:focus{box-shadow: 0 0 0 0.2rem ${primaryHover};outline: 0;}`\n );\n }\n }\n if (canIExecuteClientCode() && typeof document != \"undefined\") {\n const element = document.getElementById(\"frTheming\");\n if (element) {\n element.innerHTML = generatedStyles.join(\" \");\n } else {\n const themeStyleNode = `${generatedStyles.join(\" \")}`;\n\n const body = document.body || document.getElementsByTagName(\"body\")[0];\n const style = document.createElement(\"style\");\n\n style.type = \"text/css\";\n style.id = \"frTheming\";\n if (style.styleSheet) {\n // This is required for IE8 and below.\n style.styleSheet.cssText = themeStyleNode;\n } else {\n style.appendChild(document.createTextNode(themeStyleNode));\n }\n body.appendChild(style);\n }\n }\n }\n return themeToken;\n};\n\nexport { initTheme };\n","import { initTheme } from \"./ThemeBuilder\";\nif(typeof window !== \"undefined\"){\n if(!window.FR) window.FR = {};\n window.FR.initTheme=initTheme;\n}"],"names":["const","componentToHex","c","hex","toString","length","hexToRGBA","alpha","test","substring","split","join","hex2RGB","r","g","b","getContrast","hexColor","rgb","variacion","H","Z","value","colorBrightness","color","t","parseInt","generatePalette","name","cantShape","step","Math","ceil","startVal","floor","colors","let","i","textColor","push","canIExecuteClientCode","window","generateStylesPalette","palette","item","hoverBgColor","gradientTo","gradientButtonToHover","gradientButtonFromActive","gradientButtonToActive","gradientButtonTextActive","hoverColor","activeBgColor","activeColor","FR","initTheme","theme","generatedStyles","themeToken","designTokens","outputFields","config","includes","typography","components","button","disabled","bgColor","themeColorsKeys","Object","keys","index","colorName","colorValue","forEach","styles","replace","primary","primaryHover","document","element","getElementById","innerHTML","themeStyleNode","body","getElementsByTagName","style","createElement","type","id","styleSheet","cssText","appendChild","createTextNode","fonts","map","fontName","preset","Array","isArray","src","alias","fontStyle","fontWeight","fontDisplay","local","fontSrc","toLocaleLowerCase","dataFonts","outputType","fetch","headers","Accept","method","JSON","stringify","rawResponse","json","cssObject","css","generateTypographyStyles"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@front10/helpers",
3
- "version": "2.0.16",
3
+ "version": "2.0.17",
4
4
  "description": "Helpers for front10 components",
5
5
  "source": "src/index.js",
6
6
  "main": "dist/front10-helpers.js",