@front10/helpers 2.0.17 → 2.0.18

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.
@@ -12,78 +12,33 @@ 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, 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
- };
15
+ var style = "";
16
+
17
+ if (typography.css && typeof typography.css === "string") {
18
+ style += typography.css;
19
+ }
20
+
21
+ if (typography.fonts && _typeof(typography.fonts) === "object") {
22
+ Object.keys(typography.fonts).map(function (fontName) {
23
+ if (_typeof(typography.fonts[fontName]) === "object") {
24
+ if (typography.fonts[fontName].preset) style += "@import url('".concat(typography.fonts[fontName].preset, "');");else if (Array.isArray(typography.fonts[fontName].src)) {
25
+ 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:");
26
+ typography.fonts[fontName].local && typography.fonts[fontName].local.forEach(function (local) {
27
+ style += "local('".concat(local, "'),");
32
28
  });
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;
29
+ typography.fonts[fontName].src.forEach(function (fontSrc, index) {
30
+ style += "url('".concat(fontSrc.url, "') format('").concat(fontSrc.format, "')").concat(index < typography.fonts[fontName].src.length - 1 ? "," : "");
55
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
- }
74
-
75
- return fontName;
76
- });
77
- }
32
+ style += "}";
33
+ }
34
+ style += ".fr-font-name-".concat(fontName.toLocaleLowerCase().replace(/ /g, "-"), "{font-family: '").concat(typography.fonts[fontName].alias ? typography.fonts[fontName].alias : fontName, "', 'sans-serif'}");
35
+ }
78
36
 
79
- return _context.abrupt("return", style);
37
+ return fontName;
38
+ });
39
+ }
80
40
 
81
- case 14:
82
- case "end":
83
- return _context.stop();
84
- }
85
- }
86
- });
41
+ return style;
87
42
  };
88
43
 
89
44
  var generateStylesPalette = function generateStylesPalette(palette, item, i) {
@@ -110,121 +65,94 @@ var generateStylesPalette = function generateStylesPalette(palette, item, i) {
110
65
  };
111
66
 
112
67
  var initTheme = function initTheme(theme) {
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
- }
68
+ var generatedStyles = [];
69
+ var themeToken = {
70
+ palette: {},
71
+ designTokens: theme.designTokens || {}
72
+ };
73
+ var outputFields = [];
74
+
75
+ if (theme.config && theme.config.outputFields) {
76
+ outputFields = theme.config.outputFields;
77
+ }
78
+
79
+ if (outputFields.includes("colors")) themeToken.colors = theme.colors;
80
+ if (outputFields.includes("typography")) themeToken.typography = theme.typography;
81
+
82
+ if (theme) {
83
+ if (theme.typography) {
84
+ generatedStyles.push(generateTypographyStyles(theme.typography));
85
+ }
189
86
 
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
- }
87
+ if (theme.colors) {
88
+ 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 ")]);
89
+ var themeColorsKeys = Object.keys(theme.colors);
90
+
91
+ for (var index = 0; index < themeColorsKeys.length; index += 1) {
92
+ var colorName = themeColorsKeys[index];
93
+ var colorValue = theme.colors[themeColorsKeys[index]];
94
+
95
+ if (colorValue !== "none") {
96
+ (function () {
97
+ // Adding base color to palette
98
+ themeToken.palette["".concat(colorName)] = colorValue;
99
+ var palette = (0, _Color.generatePalette)(colorValue, colorName);
195
100
 
196
- if ((0, _canI.canIExecuteClientCode)() && typeof document != "undefined") {
197
- element = document.getElementById("frTheming");
101
+ if (theme.config && theme.config.generatePalette) {
102
+ palette.forEach(function (item, i) {
103
+ // Adding color variations to the palette
104
+ themeToken.palette["".concat(item.name)] = item.color; // Avoiding executing unnecessary code that is not needed in the SSR
198
105
 
199
- if (element) {
200
- element.innerHTML = generatedStyles.join(" ");
106
+ if ((0, _canI.canIExecuteClientCode)()) {
107
+ var styles = generateStylesPalette(palette, item, i);
108
+ generatedStyles.push(styles.replace(/\n. |\r/g, ""));
109
+ }
110
+ });
201
111
  } else {
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));
112
+ if ((0, _canI.canIExecuteClientCode)()) {
113
+ var styles = generateStylesPalette(palette, {
114
+ color: colorValue,
115
+ name: colorName,
116
+ textColor: (0, _Color.getContrast)(colorValue)
117
+ }, 11);
118
+ generatedStyles.push(styles.replace(/\n. |\r/g, ""));
213
119
  }
214
-
215
- body.appendChild(style);
216
120
  }
217
- }
121
+ })();
122
+ }
123
+ }
218
124
 
219
- case 15:
220
- return _context2.abrupt("return", themeToken);
125
+ if (theme.colors.primary) {
126
+ var primaryHover = (0, _Color.hexToRGBA)(theme.colors.primary, 0.25);
127
+ generatedStyles.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem ".concat(primaryHover, ";outline: 0;}"));
128
+ }
129
+ }
221
130
 
222
- case 16:
223
- case "end":
224
- return _context2.stop();
131
+ if ((0, _canI.canIExecuteClientCode)() && typeof document != "undefined") {
132
+ var element = document.getElementById("frTheming");
133
+
134
+ if (element) {
135
+ element.innerHTML = generatedStyles.join(" ");
136
+ } else {
137
+ var themeStyleNode = "".concat(generatedStyles.join(" "));
138
+ var body = document.body || document.getElementsByTagName("body")[0];
139
+ var style = document.createElement("style");
140
+ style.type = "text/css";
141
+ style.id = "frTheming";
142
+
143
+ if (style.styleSheet) {
144
+ // This is required for IE8 and below.
145
+ style.styleSheet.cssText = themeStyleNode;
146
+ } else {
147
+ style.appendChild(document.createTextNode(themeStyleNode));
148
+ }
149
+
150
+ body.appendChild(style);
225
151
  }
226
152
  }
227
- });
153
+ }
154
+
155
+ return themeToken;
228
156
  };
229
157
 
230
158
  exports.initTheme = initTheme;
@@ -1,2 +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)}});
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,c=t(n),i={};return!!c&&(r<0?(i.r=c.r-parseInt(c.r/100*-r,10),i.g=c.g-parseInt(c.g/100*-r,10),i.b=c.b-parseInt(c.b/100*-r,10)):(i.r=parseInt(e(255-c.r,100,r),10)+c.r,i.g=parseInt(e(255-c.g,100,r),10)+c.g,i.b=parseInt(e(255-c.b,100,r),10)+c.b),a=i.g,l=i.b,"#"+o(i.r)+o(a)+o(l))},l=function(o,n,e){void 0===e&&(e=22);var l=100/Math.ceil(e/2),c=l*Math.floor(e/2),i=[];if(t(o))for(var f=0;f<e;f+=1){var s=a(o,c-f*l),d=r(s);i.push({name:f>e/2?n+"-"+f:f===e/2?n:n+"-"+(f+1),color:s,textColor:d})}return i},c=function(){return"undefined"!=typeof window},i=function(o,t,r){var e=t.color,a=t.color,l=t.color,c=t.color,i=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]?c=o[r+2].color:o[r-2]&&(c=o[r-2].color),o[r+4]?i=o[r+4].color:o[r-4]&&(i=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,"+c+","+i+");\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){var t=[],e={palette:{},designTokens:o.designTokens||{}},a=[];if(o.config&&o.config.outputFields&&(a=o.config.outputFields),a.includes("colors")&&(e.colors=o.colors),a.includes("typography")&&(e.typography=o.typography),o){if(o.typography&&t.push(function(o){var n="";return o.css&&"string"==typeof o.css&&(n+=o.css),o.fonts&&"object"==typeof o.fonts&&Object.keys(o.fonts).map(function(t){return"object"==typeof o.fonts[t]&&(o.fonts[t].preset?n+="@import url('"+o.fonts[t].preset+"');":Array.isArray(o.fonts[t].src)&&(n+="@font-face {\n font-family: '"+(o.fonts[t].alias?o.fonts[t].alias:t)+"';\n "+(o.fonts[t].fontStyle?"font-style:"+o.fonts[t].fontStyle+";":"")+"\n "+(o.fonts[t].fontWeight?"font-weight:"+o.fonts[t].fontWeight+";":"")+"\n "+(o.fonts[t].fontDisplay?"font-display:"+o.fonts[t].fontDisplay+";":"")+"\n src:",o.fonts[t].local&&o.fonts[t].local.forEach(function(o){n+="local('"+o+"'),"}),o.fonts[t].src.forEach(function(r,e){n+="url('"+r.url+"') format('"+r.format+"')"+(e<o.fonts[t].src.length-1?",":"")}),n+="}"),n+=".fr-font-name-"+t.toLocaleLowerCase().replace(/ /g,"-")+"{font-family: '"+(o.fonts[t].alias?o.fonts[t].alias:t)+"', 'sans-serif'}"),t}),n}(o.typography)),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 f=Object.keys(o.colors),s=0;s<f.length;s+=1){var d=f[s],b=o.colors[f[s]];if("none"!==b){e.palette[""+d]=b;var u=l(b,d);if(o.config&&o.config.generatePalette)u.forEach(function(o,n){if(e.palette[""+o.name]=o.color,c()){var r=i(u,o,n);t.push(r.replace(/\n. |\r/g,""))}});else if(c()){var m=i(u,{color:b,name:d,textColor:r(b)},11);t.push(m.replace(/\n. |\r/g,""))}}}if(o.colors.primary){var p=n(o.colors.primary,.25);t.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem "+p+";outline: 0;}")}}if(c()&&"undefined"!=typeof document){var g=document.getElementById("frTheming");if(g)g.innerHTML=t.join(" ");else{var h=""+t.join(" "),v=document.body||document.getElementsByTagName("body")[0],y=document.createElement("style");y.type="text/css",y.id="frTheming",y.styleSheet?y.styleSheet.cssText=h:y.appendChild(document.createTextNode(h)),v.appendChild(y)}}}return e});
2
2
  //# sourceMappingURL=front10-helpers.js.map
@@ -1 +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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"}
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 = (typography) => {\n let style = \"\";\n if (typography.css && typeof typography.css === \"string\") {\n style += typography.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 = (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(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","style","css","fonts","Object","keys","map","fontName","preset","Array","isArray","src","alias","fontStyle","fontWeight","fontDisplay","local","forEach","fontSrc","index","toLocaleLowerCase","replace","generateTypographyStyles","components","button","disabled","bgColor","themeColorsKeys","colorName","colorValue","styles","primary","primaryHover","document","element","getElementById","innerHTML","themeStyleNode","body","getElementsByTagName","createElement","type","id","styleSheet","cssText","appendChild","createTextNode"],"mappings":"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"}
@@ -1,2 +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)}});
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,c=t(n),i={};return!!c&&(r<0?(i.r=c.r-parseInt(c.r/100*-r,10),i.g=c.g-parseInt(c.g/100*-r,10),i.b=c.b-parseInt(c.b/100*-r,10)):(i.r=parseInt(e(255-c.r,100,r),10)+c.r,i.g=parseInt(e(255-c.g,100,r),10)+c.g,i.b=parseInt(e(255-c.b,100,r),10)+c.b),a=i.g,l=i.b,"#"+o(i.r)+o(a)+o(l))},l=function(o,n,e){void 0===e&&(e=22);var l=100/Math.ceil(e/2),c=l*Math.floor(e/2),i=[];if(t(o))for(var f=0;f<e;f+=1){var s=a(o,c-f*l),d=r(s);i.push({name:f>e/2?n+"-"+f:f===e/2?n:n+"-"+(f+1),color:s,textColor:d})}return i},c=function(){return"undefined"!=typeof window},i=function(o,t,r){var e=t.color,a=t.color,l=t.color,c=t.color,i=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]?c=o[r+2].color:o[r-2]&&(c=o[r-2].color),o[r+4]?i=o[r+4].color:o[r-4]&&(i=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,"+c+","+i+");\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){var t=[],e={palette:{},designTokens:o.designTokens||{}},a=[];if(o.config&&o.config.outputFields&&(a=o.config.outputFields),a.includes("colors")&&(e.colors=o.colors),a.includes("typography")&&(e.typography=o.typography),o){if(o.typography&&t.push(function(o){var n="";return o.css&&"string"==typeof o.css&&(n+=o.css),o.fonts&&"object"==typeof o.fonts&&Object.keys(o.fonts).map(function(t){return"object"==typeof o.fonts[t]&&(o.fonts[t].preset?n+="@import url('"+o.fonts[t].preset+"');":Array.isArray(o.fonts[t].src)&&(n+="@font-face {\n font-family: '"+(o.fonts[t].alias?o.fonts[t].alias:t)+"';\n "+(o.fonts[t].fontStyle?"font-style:"+o.fonts[t].fontStyle+";":"")+"\n "+(o.fonts[t].fontWeight?"font-weight:"+o.fonts[t].fontWeight+";":"")+"\n "+(o.fonts[t].fontDisplay?"font-display:"+o.fonts[t].fontDisplay+";":"")+"\n src:",o.fonts[t].local&&o.fonts[t].local.forEach(function(o){n+="local('"+o+"'),"}),o.fonts[t].src.forEach(function(r,e){n+="url('"+r.url+"') format('"+r.format+"')"+(e<o.fonts[t].src.length-1?",":"")}),n+="}"),n+=".fr-font-name-"+t.toLocaleLowerCase().replace(/ /g,"-")+"{font-family: '"+(o.fonts[t].alias?o.fonts[t].alias:t)+"', 'sans-serif'}"),t}),n}(o.typography)),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 f=Object.keys(o.colors),s=0;s<f.length;s+=1){var d=f[s],b=o.colors[f[s]];if("none"!==b){e.palette[""+d]=b;var u=l(b,d);if(o.config&&o.config.generatePalette)u.forEach(function(o,n){if(e.palette[""+o.name]=o.color,c()){var r=i(u,o,n);t.push(r.replace(/\n. |\r/g,""))}});else if(c()){var m=i(u,{color:b,name:d,textColor:r(b)},11);t.push(m.replace(/\n. |\r/g,""))}}}if(o.colors.primary){var p=n(o.colors.primary,.25);t.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem "+p+";outline: 0;}")}}if(c()&&"undefined"!=typeof document){var g=document.getElementById("frTheming");if(g)g.innerHTML=t.join(" ");else{var h=""+t.join(" "),v=document.body||document.getElementsByTagName("body")[0],y=document.createElement("style");y.type="text/css",y.id="frTheming",y.styleSheet?y.styleSheet.cssText=h:y.appendChild(document.createTextNode(h)),v.appendChild(y)}}}return e});
2
2
  //# sourceMappingURL=front10-helpers.mjs.map
@@ -1 +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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"}
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 = (typography) => {\n let style = \"\";\n if (typography.css && typeof typography.css === \"string\") {\n style += typography.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 = (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(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","style","css","fonts","Object","keys","map","fontName","preset","Array","isArray","src","alias","fontStyle","fontWeight","fontDisplay","local","forEach","fontSrc","index","toLocaleLowerCase","replace","generateTypographyStyles","components","button","disabled","bgColor","themeColorsKeys","colorName","colorValue","styles","primary","primaryHover","document","element","getElementById","innerHTML","themeStyleNode","body","getElementsByTagName","createElement","type","id","styleSheet","cssText","appendChild","createTextNode"],"mappings":"AAAAA,IAAMC,WAAiBC,OACfC,EAAMD,EAAEE,SAAS,WACD,IAAfD,EAAIE,WAAmBF,EAAQA,GAMlCG,WAAaH,EAAKI,OAClBL,wBAD0B,MAE1B,2BAA2BM,KAAKL,KAEjB,KADjBD,EAAIC,EAAIM,UAAU,GAAGC,MAAM,KACrBL,SACJH,EAAI,CAACA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,eAEvCA,EAAK,KAAIA,EAAES,KAAK,MACK,GAAM,UAAQT,GAAK,EAAK,UAAW,IAAJA,OAAWK,QAY7DK,WAAUT,OACVD,UACA,2BAA2BM,KAAKL,KAEjB,KADjBD,EAAIC,EAAIM,UAAU,GAAGC,MAAM,KACrBL,SACJH,EAAI,CAACA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAIhC,CAAEW,GAFTX,EAAK,KAAIA,EAAES,KAAK,MAEE,GAAM,IAAKG,EAAIZ,GAAK,EAAK,IAAKa,EAAO,IAAJb,KASjDc,WAAcC,OACZC,EAAMN,EAAQK,WAChBC,KACmB,IAARA,EAAIL,EAAkB,IAARK,EAAIJ,EAAkB,IAARI,EAAIH,GAAW,KAC1C,IAAM,UAAY,YAI9BI,WAAaC,EAAGC,EAAGC,UACfF,EAAIC,EAAKC,GAIbC,WAAmBC,EAAOF,OAtDZR,EAAGC,EAuDfG,EAAMN,EAAQY,GACdC,EAAI,WACNP,IACEI,EAAQ,GACVG,EAAEZ,EAAIK,EAAIL,EAAIa,SAAUR,EAAIL,EAAI,KAAQS,EAAO,IAC/CG,EAAEX,EAAII,EAAIJ,EAAIY,SAAUR,EAAIJ,EAAI,KAAQQ,EAAO,IAC/CG,EAAEV,EAAIG,EAAIH,EAAIW,SAAUR,EAAIH,EAAI,KAAQO,EAAO,MAE/CG,EAAEZ,EAAIa,SAASP,EAAU,IAAMD,EAAIL,EAAG,IAAKS,GAAQ,IAAMJ,EAAIL,EAC7DY,EAAEX,EAAIY,SAASP,EAAU,IAAMD,EAAIJ,EAAG,IAAKQ,GAAQ,IAAMJ,EAAIJ,EAC7DW,EAAEV,EAAIW,SAASP,EAAU,IAAMD,EAAIH,EAAG,IAAKO,GAAQ,IAAMJ,EAAIH,GAjE/CD,EAmEIW,EAAEX,EAnEHC,EAmEMU,EAAEV,MAlEzBd,EAkEawB,EAAEZ,GAlEKZ,EAAea,GAAKb,EAAec,KA8EvDY,WAAmBV,EAAUW,EAAMC,kBAAY,QAC7CC,EAAO,IAAMC,KAAKC,KAAKH,EAAY,GACnCI,EAAWH,EAAOC,KAAKG,MAAML,EAAY,GACzCM,EAAS,MA/DXvB,EAgEQK,OACLmB,IAAIC,EAAI,EAAGA,EAAIR,EAAWQ,GAAK,EAAG,KAC/Bb,EAAQD,EAAgBN,EAAUgB,EAAWI,EAAIP,GACjDQ,EAAYtB,EAAYQ,GAK9BW,EAAOI,KAAK,CACVX,KAJES,EAAIR,EAAY,EAAgBD,MAAQS,EACnCA,IAAMR,EAAY,EAAaD,EACtBA,OAAQS,EAAI,SAG5Bb,YACAc,WAICH,GC0FHK,mBACqB,oBAAXC,QCpIVC,WAAyBC,EAASC,EAAMP,OACxCQ,EAAeD,EAAKpB,MACpBsB,EAAaF,EAAKpB,MAClBuB,EAAwBH,EAAKpB,MAC7BwB,EAA2BJ,EAAKpB,MAChCyB,EAAyBL,EAAKpB,MAC9B0B,EAA2BN,EAAKN,UAChCa,EAAaP,EAAKN,UAClBc,EAAgBR,EAAKpB,MACrB6B,EAAcT,EAAKN,iBAEnBK,EAAQN,EAAI,GAAIS,EAAaH,EAAQN,EAAI,GAAGb,MACvCmB,EAAQN,EAAI,KAAIS,EAAaH,EAAQN,EAAI,GAAGb,OAEjDmB,EAAQN,EAAI,GAAIU,EAAwBJ,EAAQN,EAAI,GAAGb,MAClDmB,EAAQN,EAAI,KAAIU,EAAwBJ,EAAQN,EAAI,GAAGb,OAE5DmB,EAAQN,EAAI,GAAIW,EAA2BL,EAAQN,EAAI,GAAGb,MACrDmB,EAAQN,EAAI,KAAIW,EAA2BL,EAAQN,EAAI,GAAGb,OAE/DmB,EAAQN,EAAI,GAAIY,EAAyBN,EAAQN,EAAI,GAAGb,MACnDmB,EAAQN,EAAI,KAAIY,EAAyBN,EAAQN,EAAI,GAAGb,OAE7DmB,EAAQN,EAAI,GAAIa,EAA2BP,EAAQN,EAAI,GAAGC,UACrDK,EAAQN,EAAI,KAAIa,EAA2BP,EAAQN,EAAI,GAAGC,WAE/DK,EAAQN,EAAI,GAAIQ,EAAeF,EAAQN,EAAI,GAAGb,MACzCmB,EAAQN,EAAI,KAAIQ,EAAeF,EAAQN,EAAI,GAAGb,OAEnDmB,EAAQN,EAAI,GAAIc,EAAaR,EAAQN,EAAI,GAAGC,UACvCK,EAAQN,EAAI,KAAIc,EAAaR,EAAQN,EAAI,GAAGC,WAEjDK,EAAQN,EAAI,GAAIe,EAAgBT,EAAQN,EAAI,GAAGb,MAC1CmB,EAAQN,EAAI,KAAIe,EAAgBT,EAAQN,EAAI,GAAGb,OAEpDmB,EAAQN,EAAI,GAAIgB,EAAcV,EAAQN,EAAI,GAAGC,UACxCK,EAAQN,EAAI,KAAIgB,EAAcV,EAAQN,EAAI,GAAGC,WACtC,qBACAM,kCACKA,+BACJA,wBACPA,kDAEMA,qEACAA,oEACAA,yEACKC,yBACJA,kBACPM,4BAEMP,qEACAA,gFACQA,6EACAA,2FACWA,2CACxBS,8BACWD,0BACJA,0BAELR,yBAA2BA,mCAC/BA,6BAA+BA,4CACtBA,0BAA4BA,4CACrBA,8FACuBA,YAAcE,uCAErCF,6EACAA,qFAEvBA,qFAGAA,oGAGEA,YACEG,oBACKH,gDAEcA,sFAEvBA,qGAE8CI,MAA4BC,oBACjEC,wBAEAN,kBAAoBA,4CACbA,wBACPA,gCACOA,qCAEAA,8BACPA,wCACWA,gCACJA,qCAEAA,2CACAA,iCACPA,0FAEOA,gDAEAA,qEACRA,6EACQA,2FACWA,mEACAtC,EAAUsC,EAAKpB,4BAElCoB,kCAAoCA,gDACjBtC,EAAUsC,EAAKpB,wCAG1CoB,6EAEQA,wDAEYA,oDACDA,0CACJC,wCAEDD,4BACNA,6BAEAA,qCACAA,wBCxLS,oBAAXH,SACFA,OAAOa,KAAIb,OAAOa,GAAK,IAC3Bb,OAAOa,GAAGC,mBD4LKC,OACXC,EAAkB,GAClBC,EAAa,CACjBf,QAAS,GACTgB,aAAcH,EAAMG,cAAgB,IAGlCC,EAAe,MACfJ,EAAMK,QAAUL,EAAMK,OAAOD,eAC/BA,EAAeJ,EAAMK,OAAOD,cAE1BA,EAAaE,SAAS,YAAWJ,EAAWvB,OAASqB,EAAMrB,QAC3DyB,EAAaE,SAAS,gBACxBJ,EAAWK,WAAaP,EAAMO,YAC5BP,EAAO,IACLA,EAAMO,YACRN,EAAgBlB,cA5MYwB,OAC5BC,EAAQ,UACRD,EAAWE,KAAiC,iBAAnBF,EAAWE,MACtCD,GAASD,EAAWE,KAElBF,EAAWG,OAAqC,iBAArBH,EAAWG,OACxCC,OAAOC,KAAKL,EAAWG,OAAOG,aAAKC,SACS,iBAA/BP,EAAWG,MAAMI,KACtBP,EAAWG,MAAMI,GAAUC,OAC7BP,GAAU,gBAAeD,EAAWG,MAAMI,gBACnCE,MAAMC,QAAQV,EAAWG,MAAMI,GAAUI,OAChDV,GAAU,4CAEND,EAAWG,MAAMI,GAAUK,MACvBZ,EAAWG,MAAMI,GAAUK,MAC3BL,uBAGJP,EAAWG,MAAMI,GAAUM,wBACTb,EAAWG,MAAMI,iBAC/B,sBAGJP,EAAWG,MAAMI,GAAUO,0BACRd,EAAWG,MAAMI,kBAChC,sBAGJP,EAAWG,MAAMI,GAAUQ,4BACPf,EAAWG,MAAMI,mBACjC,yBAIRP,EAAWG,MAAMI,GAAUS,OACzBhB,EAAWG,MAAMI,GAAUS,MAAMC,iBAASD,GACxCf,GAAU,UAASe,UAEvBhB,EAAWG,MAAMI,GAAUI,IAAIM,iBAASC,EAASC,GAC/ClB,GAAU,QAAOiB,oBAAyBA,eACxCC,EAAQnB,EAAWG,MAAMI,GAAUI,IAAIrE,OAAS,EAAI,IAAM,MAG9D2D,GAAS,KAEXA,GAAU,iBAAgBM,EACvBa,oBACAC,QAAQ,KAAM,wBACfrB,EAAWG,MAAMI,GAAUK,MACvBZ,EAAWG,MAAMI,GAAUK,MAC3BL,uBAGDA,IAGJN,EAoJkBqB,CAAyB7B,EAAMO,aAElDP,EAAMrB,OAAQ,CAChBsB,EAAgBlB,KAAK,yDAGfiB,EAAM8B,YACN9B,EAAM8B,WAAWC,QACjB/B,EAAM8B,WAAWC,OAAOC,UACxBhC,EAAM8B,WAAWC,OAAOC,SAASC,QAC7BjC,EAAM8B,WAAWC,OAAOC,SAASC,QACjC,yCAGJjC,EAAM8B,YACN9B,EAAM8B,WAAWC,QACjB/B,EAAM8B,WAAWC,OAAOC,UACxBhC,EAAM8B,WAAWC,OAAOC,SAASC,QAC7BjC,EAAM8B,WAAWC,OAAOC,SAASC,QACjC,kCAGJjC,EAAM8B,YACN9B,EAAM8B,WAAWC,QACjB/B,EAAM8B,WAAWC,OAAOC,UACxBhC,EAAM8B,WAAWC,OAAOC,SAASC,QAC7BjC,EAAM8B,WAAWC,OAAOC,SAASC,QACjC,yCAKJC,EAAkBvB,OAAOC,KAAKZ,EAAMrB,QACjC+C,EAAQ,EAAGA,EAAQQ,EAAgBrF,OAAQ6E,GAAS,EAAG,KACxDS,EAAYD,EAAgBR,GAC5BU,EAAapC,EAAMrB,OAAOuD,EAAgBR,OAC7B,SAAfU,EAAuB,CAEzBlC,EAAWf,WAAWgD,GAAeC,MAC/BjD,EAAUhB,EAAgBiE,EAAYD,MACxCnC,EAAMK,QAAUL,EAAMK,OAAOlC,gBAC/BgB,EAAQqC,iBAASpC,EAAMP,MAErBqB,EAAWf,WAAWC,QAAeA,EAAKpB,MAEtCgB,IAAyB,KACrBqD,EAASnD,EAAsBC,EAASC,EAAMP,GACpDoB,EAAgBlB,KAAKsD,EAAOT,QAAQ,WAAY,gBAIhD5C,IAAyB,KACrBqD,EAASnD,EACbC,EACA,CACEnB,MAAOoE,EACPhE,KAAM+D,EACNrD,UAAWtB,EAAY4E,IAEzB,IAEFnC,EAAgBlB,KAAKsD,EAAOT,QAAQ,WAAY,UAKpD5B,EAAMrB,OAAO2D,QAAS,KAClBC,EAAezF,EAAUkD,EAAMrB,OAAO2D,QAAS,KACrDrC,EAAgBlB,4FACyEwD,uBAIzFvD,KAA8C,oBAAZwD,SAAyB,KACvDC,EAAUD,SAASE,eAAe,gBACpCD,EACFA,EAAQE,UAAY1C,EAAgB9C,KAAK,SACpC,KACCyF,EAAkB,GAAE3C,EAAgB9C,KAAK,KAEzC0F,EAAOL,SAASK,MAAQL,SAASM,qBAAqB,QAAQ,GAC9DtC,EAAQgC,SAASO,cAAc,SAErCvC,EAAMwC,KAAO,WACbxC,EAAMyC,GAAK,YACPzC,EAAM0C,WAER1C,EAAM0C,WAAWC,QAAUP,EAE3BpC,EAAM4C,YAAYZ,SAASa,eAAeT,IAE5CC,EAAKO,YAAY5C,YAIhBN"}
@@ -1,2 +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)}})});
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 d=a(o,i-f*l),s=r(d);c.push({name:f>e/2?n+"-"+f:f===e/2?n:n+"-"+(f+1),color:d,textColor:s})}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,d=t.textColor,s=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]?d=o[r+2].textColor:o[r-2]&&(d=o[r-2].textColor),o[r+3]?s=o[r+3].color:o[r-3]&&(s=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:"+d+"\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: "+s+";\n border-color: "+s+";\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){var t=[],e={palette:{},designTokens:o.designTokens||{}},a=[];if(o.config&&o.config.outputFields&&(a=o.config.outputFields),a.includes("colors")&&(e.colors=o.colors),a.includes("typography")&&(e.typography=o.typography),o){if(o.typography&&t.push(function(o){var n="";return o.css&&"string"==typeof o.css&&(n+=o.css),o.fonts&&"object"==typeof o.fonts&&Object.keys(o.fonts).map(function(t){return"object"==typeof o.fonts[t]&&(o.fonts[t].preset?n+="@import url('"+o.fonts[t].preset+"');":Array.isArray(o.fonts[t].src)&&(n+="@font-face {\n font-family: '"+(o.fonts[t].alias?o.fonts[t].alias:t)+"';\n "+(o.fonts[t].fontStyle?"font-style:"+o.fonts[t].fontStyle+";":"")+"\n "+(o.fonts[t].fontWeight?"font-weight:"+o.fonts[t].fontWeight+";":"")+"\n "+(o.fonts[t].fontDisplay?"font-display:"+o.fonts[t].fontDisplay+";":"")+"\n src:",o.fonts[t].local&&o.fonts[t].local.forEach(function(o){n+="local('"+o+"'),"}),o.fonts[t].src.forEach(function(r,e){n+="url('"+r.url+"') format('"+r.format+"')"+(e<o.fonts[t].src.length-1?",":"")}),n+="}"),n+=".fr-font-name-"+t.toLocaleLowerCase().replace(/ /g,"-")+"{font-family: '"+(o.fonts[t].alias?o.fonts[t].alias:t)+"', 'sans-serif'}"),t}),n}(o.typography)),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 f=Object.keys(o.colors),d=0;d<f.length;d+=1){var s=f[d],b=o.colors[f[d]];if("none"!==b){e.palette[""+s]=b;var u=l(b,s);if(o.config&&o.config.generatePalette)u.forEach(function(o,n){if(e.palette[""+o.name]=o.color,i()){var r=c(u,o,n);t.push(r.replace(/\n. |\r/g,""))}});else if(i()){var m=c(u,{color:b,name:s,textColor:r(b)},11);t.push(m.replace(/\n. |\r/g,""))}}}if(o.colors.primary){var p=n(o.colors.primary,.25);t.push(".fr-focus:focus, .fr-form-control:focus, .fr-focus\\:focus{box-shadow: 0 0 0 0.2rem "+p+";outline: 0;}")}}if(i()&&"undefined"!=typeof document){var g=document.getElementById("frTheming");if(g)g.innerHTML=t.join(" ");else{var h=""+t.join(" "),v=document.body||document.getElementsByTagName("body")[0],y=document.createElement("style");y.type="text/css",y.id="frTheming",y.styleSheet?y.styleSheet.cssText=h:y.appendChild(document.createTextNode(h)),v.appendChild(y)}}}return e})});
2
2
  //# sourceMappingURL=front10-helpers.umd.js.map
@@ -1 +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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"}
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 = (typography) => {\n let style = \"\";\n if (typography.css && typeof typography.css === \"string\") {\n style += typography.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 = (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(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","style","css","fonts","Object","keys","map","fontName","preset","Array","isArray","src","alias","fontStyle","fontWeight","fontDisplay","local","forEach","fontSrc","index","toLocaleLowerCase","replace","generateTypographyStyles","components","button","disabled","bgColor","themeColorsKeys","colorName","colorValue","styles","primary","primaryHover","document","element","getElementById","innerHTML","themeStyleNode","body","getElementsByTagName","createElement","type","id","styleSheet","cssText","appendChild","createTextNode"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@front10/helpers",
3
- "version": "2.0.17",
3
+ "version": "2.0.18",
4
4
  "description": "Helpers for front10 components",
5
5
  "source": "src/index.js",
6
6
  "main": "dist/front10-helpers.js",