uikit 3.8.1 → 3.9.2-dev.774931570

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.
Files changed (170) hide show
  1. package/{.eslintrc.js → .eslintrc.json} +5 -5
  2. package/CHANGELOG.md +20 -1
  3. package/build/.eslintrc.json +15 -0
  4. package/build/build.js +55 -83
  5. package/build/icons.js +30 -13
  6. package/build/less.js +23 -38
  7. package/build/package.json +4 -0
  8. package/build/prefix.js +38 -94
  9. package/build/publishDev.js +12 -18
  10. package/build/release.js +31 -60
  11. package/build/scope.js +49 -84
  12. package/build/scss.js +19 -21
  13. package/build/util.js +163 -94
  14. package/dist/css/uikit-core-rtl.css +8 -8
  15. package/dist/css/uikit-core-rtl.min.css +1 -1
  16. package/dist/css/uikit-core.css +8 -8
  17. package/dist/css/uikit-core.min.css +1 -1
  18. package/dist/css/uikit-rtl.css +8 -8
  19. package/dist/css/uikit-rtl.min.css +1 -1
  20. package/dist/css/uikit.css +8 -8
  21. package/dist/css/uikit.min.css +1 -1
  22. package/dist/js/components/countdown.js +1 -1
  23. package/dist/js/components/countdown.min.js +2 -2
  24. package/dist/js/components/filter.js +1 -1
  25. package/dist/js/components/filter.min.js +2 -2
  26. package/dist/js/components/lightbox-panel.js +1 -1
  27. package/dist/js/components/lightbox-panel.min.js +2 -2
  28. package/dist/js/components/lightbox.js +1 -1
  29. package/dist/js/components/lightbox.min.js +2 -2
  30. package/dist/js/components/notification.js +1 -1
  31. package/dist/js/components/notification.min.js +2 -2
  32. package/dist/js/components/parallax.js +1 -1
  33. package/dist/js/components/parallax.min.js +2 -2
  34. package/dist/js/components/slider-parallax.js +1 -1
  35. package/dist/js/components/slider-parallax.min.js +2 -2
  36. package/dist/js/components/slider.js +1 -1
  37. package/dist/js/components/slider.min.js +2 -2
  38. package/dist/js/components/slideshow-parallax.js +1 -1
  39. package/dist/js/components/slideshow-parallax.min.js +2 -2
  40. package/dist/js/components/slideshow.js +1 -1
  41. package/dist/js/components/slideshow.min.js +2 -2
  42. package/dist/js/components/sortable.js +1 -1
  43. package/dist/js/components/sortable.min.js +2 -2
  44. package/dist/js/components/tooltip.js +1 -1
  45. package/dist/js/components/tooltip.min.js +2 -2
  46. package/dist/js/components/upload.js +1 -1
  47. package/dist/js/components/upload.min.js +2 -2
  48. package/dist/js/uikit-core.js +16 -14
  49. package/dist/js/uikit-core.min.js +2 -2
  50. package/dist/js/uikit-icons.js +1 -1
  51. package/dist/js/uikit-icons.min.js +2 -2
  52. package/dist/js/uikit.js +16 -14
  53. package/dist/js/uikit.min.js +2 -2
  54. package/package.json +17 -19
  55. package/src/js/uikit-core.js +1 -1
  56. package/src/js/uikit.js +1 -1
  57. package/src/js/util/event.js +7 -7
  58. package/src/js/util/style.js +9 -7
  59. package/src/less/components/accordion.less +10 -10
  60. package/src/less/components/alert.less +9 -9
  61. package/src/less/components/align.less +2 -2
  62. package/src/less/components/animation.less +2 -2
  63. package/src/less/components/article.less +8 -8
  64. package/src/less/components/background.less +1 -1
  65. package/src/less/components/badge.less +6 -6
  66. package/src/less/components/base.less +30 -30
  67. package/src/less/components/breadcrumb.less +12 -12
  68. package/src/less/components/button.less +36 -36
  69. package/src/less/components/card.less +32 -32
  70. package/src/less/components/close.less +5 -5
  71. package/src/less/components/column.less +2 -2
  72. package/src/less/components/comment.less +12 -12
  73. package/src/less/components/container.less +2 -2
  74. package/src/less/components/countdown.less +10 -10
  75. package/src/less/components/cover.less +2 -2
  76. package/src/less/components/description-list.less +5 -5
  77. package/src/less/components/divider.less +11 -11
  78. package/src/less/components/dotnav.less +11 -11
  79. package/src/less/components/drop.less +1 -1
  80. package/src/less/components/dropdown.less +7 -7
  81. package/src/less/components/flex.less +2 -2
  82. package/src/less/components/form-range.less +12 -12
  83. package/src/less/components/form.less +27 -27
  84. package/src/less/components/grid.less +6 -6
  85. package/src/less/components/heading.less +21 -21
  86. package/src/less/components/height.less +1 -1
  87. package/src/less/components/icon.less +13 -13
  88. package/src/less/components/iconnav.less +9 -9
  89. package/src/less/components/inverse.less +3 -3
  90. package/src/less/components/label.less +7 -7
  91. package/src/less/components/leader.less +4 -4
  92. package/src/less/components/lightbox.less +9 -9
  93. package/src/less/components/link.less +12 -12
  94. package/src/less/components/list.less +5 -5
  95. package/src/less/components/margin.less +3 -3
  96. package/src/less/components/marker.less +5 -5
  97. package/src/less/components/modal.less +16 -16
  98. package/src/less/components/nav.less +31 -31
  99. package/src/less/components/navbar.less +33 -33
  100. package/src/less/components/notification.less +8 -8
  101. package/src/less/components/offcanvas.less +4 -4
  102. package/src/less/components/overlay.less +5 -5
  103. package/src/less/components/padding.less +1 -1
  104. package/src/less/components/pagination.less +10 -10
  105. package/src/less/components/placeholder.less +3 -3
  106. package/src/less/components/position.less +1 -1
  107. package/src/less/components/print.less +1 -1
  108. package/src/less/components/progress.less +6 -6
  109. package/src/less/components/search.less +15 -15
  110. package/src/less/components/section.less +8 -8
  111. package/src/less/components/slidenav.less +11 -11
  112. package/src/less/components/slider.less +2 -2
  113. package/src/less/components/slideshow.less +2 -2
  114. package/src/less/components/sortable.less +5 -5
  115. package/src/less/components/spinner.less +4 -4
  116. package/src/less/components/sticky.less +1 -1
  117. package/src/less/components/subnav.less +21 -21
  118. package/src/less/components/svg.less +1 -1
  119. package/src/less/components/switcher.less +2 -2
  120. package/src/less/components/tab.less +18 -18
  121. package/src/less/components/table.less +21 -21
  122. package/src/less/components/text.less +11 -11
  123. package/src/less/components/thumbnav.less +9 -9
  124. package/src/less/components/tile.less +10 -10
  125. package/src/less/components/tooltip.less +2 -2
  126. package/src/less/components/totop.less +7 -7
  127. package/src/less/components/transition.less +5 -5
  128. package/src/less/components/utility.less +10 -10
  129. package/src/less/components/visibility.less +1 -1
  130. package/src/less/components/width.less +1 -1
  131. package/src/scss/components/accordion.scss +1 -1
  132. package/src/scss/components/alert.scss +1 -1
  133. package/src/scss/components/align.scss +1 -1
  134. package/src/scss/components/animation.scss +1 -1
  135. package/src/scss/components/article.scss +1 -1
  136. package/src/scss/components/badge.scss +1 -1
  137. package/src/scss/components/base.scss +1 -1
  138. package/src/scss/components/card.scss +7 -7
  139. package/src/scss/components/column.scss +1 -0
  140. package/src/scss/components/comment.scss +1 -1
  141. package/src/scss/components/container.scss +1 -1
  142. package/src/scss/components/cover.scss +1 -1
  143. package/src/scss/components/description-list.scss +1 -1
  144. package/src/scss/components/dotnav.scss +1 -1
  145. package/src/scss/components/flex.scss +1 -1
  146. package/src/scss/components/form-range.scss +1 -1
  147. package/src/scss/components/grid.scss +1 -1
  148. package/src/scss/components/iconnav.scss +1 -1
  149. package/src/scss/components/inverse.scss +1 -1
  150. package/src/scss/components/label.scss +1 -1
  151. package/src/scss/components/leader.scss +1 -1
  152. package/src/scss/components/margin.scss +2 -2
  153. package/src/scss/components/nav.scss +1 -1
  154. package/src/scss/components/placeholder.scss +1 -1
  155. package/src/scss/components/section.scss +1 -1
  156. package/src/scss/components/spinner.scss +2 -2
  157. package/src/scss/components/subnav.scss +1 -1
  158. package/src/scss/components/switcher.scss +1 -1
  159. package/src/scss/components/tab.scss +1 -1
  160. package/src/scss/components/table.scss +3 -3
  161. package/src/scss/components/text.scss +3 -3
  162. package/src/scss/components/thumbnav.scss +1 -1
  163. package/src/scss/components/transition.scss +4 -4
  164. package/src/scss/components/utility.scss +1 -1
  165. package/src/scss/mixins-theme.scss +1 -1
  166. package/src/scss/mixins.scss +1 -1
  167. package/src/scss/variables-theme.scss +8 -8
  168. package/src/scss/variables.scss +8 -8
  169. package/tests/js/index.js +3 -2
  170. package/build/.eslintrc.js +0 -13
package/build/release.js CHANGED
@@ -1,22 +1,30 @@
1
- const fs = require('fs');
2
- const {promisify} = require('util');
3
- const archiver = require('archiver');
4
- const inquirer = require('inquirer');
5
- const pkg = require('../package.json');
6
- const dateFormat = require('dateformat');
7
- const args = require('minimist')(process.argv);
8
- const {glob, logFile, read, write} = require('./util');
9
- const {coerce, inc, prerelease, valid} = require('semver');
10
- const exec = promisify(require('child_process').exec);
11
-
12
- inquireVersion(args.v || args.version)
13
- .then(updateVersion)
14
- .then(compile)
15
- .then(createPackage)
16
- .catch(({message}) => {
17
- console.error(message);
18
- process.exitCode = 1;
19
- });
1
+ import archiver from 'archiver';
2
+ import inquirer from 'inquirer';
3
+ import dateFormat from 'dateformat/lib/dateformat.js';
4
+ import {createWriteStream} from 'fs';
5
+ import semver from 'semver';
6
+ import {args, getVersion, glob, logFile, replaceInFile, run} from './util.js';
7
+
8
+ const {coerce, inc, prerelease, valid} = semver;
9
+
10
+ const prevVersion = await getVersion();
11
+ const version = await inquireVersion(args.v || args.version);
12
+
13
+ await Promise.all([
14
+ run(`npm version ${version} --git-tag-version false`),
15
+ replaceInFile('CHANGELOG.md', data =>
16
+ data.replace(/^##\s*WIP/m, `## ${versionFormat(version)} (${dateFormat(Date.now(), 'mmmm d, yyyy')})`)
17
+ ),
18
+ replaceInFile('.github/ISSUE_TEMPLATE/bug-report.md', data =>
19
+ data.replace(prevVersion, version)
20
+ )
21
+ ]);
22
+
23
+ await run('yarn compile');
24
+ await run('yarn compile-rtl');
25
+ await run('yarn build-scss');
26
+
27
+ await createPackage(version);
20
28
 
21
29
  async function inquireVersion(v) {
22
30
 
@@ -26,42 +34,20 @@ async function inquireVersion(v) {
26
34
 
27
35
  const prompt = inquirer.createPromptModule();
28
36
 
29
- const {version} = await prompt({
37
+ return (await prompt({
30
38
  name: 'version',
31
39
  message: 'Enter a version',
32
- default: () => inc(pkg.version, prerelease(pkg.version) ? 'prerelease' : 'patch'),
40
+ default: () => inc(prevVersion, prerelease(prevVersion) ? 'prerelease' : 'patch'),
33
41
  validate: val => !!val.length || 'Invalid version'
34
- });
35
-
36
- return version;
37
-
38
- }
39
-
40
- async function updateVersion(version) {
41
- await Promise.all([
42
- run(`npm version ${version} --git-tag-version false`),
43
- replaceInFile('CHANGELOG.md', data => data.replace(/^##\s*WIP/m, `## ${versionFormat(version)} (${dateFormat(Date.now(), 'mmmm d, yyyy')})`)),
44
- replaceInFile('.github/ISSUE_TEMPLATE/bug-report.md', data => data.replace(pkg.version, version))
45
- ]);
46
-
47
- return version;
48
- }
49
-
50
- async function compile(version) {
51
- await sequential([
52
- () => run('yarn compile'),
53
- () => run('yarn compile-rtl'),
54
- () => run('yarn build-scss')
55
- ]);
42
+ })).version;
56
43
 
57
- return version;
58
44
  }
59
45
 
60
46
  async function createPackage(version) {
61
47
  const file = `dist/uikit-${version}.zip`;
62
48
  const archive = archiver('zip');
63
49
 
64
- archive.pipe(fs.createWriteStream(file));
50
+ archive.pipe(createWriteStream(file));
65
51
 
66
52
  (await glob('dist/{js,css}/uikit?(-icons|-rtl)?(.min).{js,css}')).forEach(file =>
67
53
  archive.file(file, {name: file.substring(5)})
@@ -74,18 +60,3 @@ async function createPackage(version) {
74
60
  function versionFormat(version) {
75
61
  return [coerce(version).version].concat(prerelease(version) || []).join(' ');
76
62
  }
77
-
78
- async function replaceInFile(file, fn) {
79
- await write(file, fn(await read(file)));
80
- }
81
-
82
- async function sequential(tasks) {
83
- await tasks.reduce((promise, task) => promise.then(task), Promise.resolve());
84
- }
85
-
86
- async function run(cmd) {
87
- const {stdout, stderr} = await exec(cmd);
88
-
89
- stdout && console.log(stdout.trim());
90
- stderr && console.log(stderr.trim());
91
- }
package/build/scope.js CHANGED
@@ -1,12 +1,6 @@
1
- const {glob, minify, read, renderLess, write, validClassName} = require('./util');
2
- const argv = require('minimist')(process.argv.slice(2));
1
+ import {args, glob, minify, read, renderLess, replaceInFile, validClassName} from './util.js';
3
2
 
4
- argv._.forEach(arg => {
5
- const tokens = arg.split('=');
6
- argv[tokens[0]] = tokens[1] || true;
7
- });
8
-
9
- if (argv.h || argv.help) {
3
+ if (args.h || args.help) {
10
4
  console.log(`
11
5
  usage:
12
6
 
@@ -19,58 +13,45 @@ if (argv.h || argv.help) {
19
13
  scope.js cleanup // will remove current scope
20
14
 
21
15
  `);
22
- } else {
23
- run().catch(({message}) => {
24
- console.error(message);
25
- process.exitCode = 1;
26
- });
16
+ process.exit(0);
27
17
  }
18
+ const currentScopeRe = /\/\* scoped: ([^*]*) \*\//;
19
+ const currentScopeLegacyRe = /\.(uk-scope)/;
28
20
 
29
- async function run() {
30
-
31
- const files = await readFiles();
32
- const oldScope = getScope(files);
33
-
34
- if (argv.cleanup && oldScope) {
35
- cleanup(files, oldScope);
36
- } else if (oldScope) {
37
- const newScope = getNewScope();
38
-
39
- if (oldScope === newScope) {
40
- console.warn(`Already scoped with: ${oldScope}`);
41
- return;
42
- }
21
+ const files = await glob('dist/**/!(*.min).css');
22
+ const prevScope = await getScope(files);
43
23
 
44
- cleanup(files, oldScope);
45
- await scope(files, newScope);
24
+ if (args.cleanup && prevScope) {
25
+ await cleanup(files, prevScope);
26
+ } else if (prevScope) {
27
+ const newScope = getNewScope();
46
28
 
47
- } else {
48
- await scope(files, getNewScope());
29
+ if (prevScope === newScope) {
30
+ console.warn(`Already scoped with: ${prevScope}`);
31
+ process.exit(0);
49
32
  }
50
33
 
51
- await store(files);
34
+ await cleanup(files, prevScope);
35
+ await scope(files, newScope);
52
36
 
37
+ } else {
38
+ await scope(files, getNewScope());
53
39
  }
54
40
 
55
- async function readFiles() {
56
-
57
- const files = await glob('dist/**/!(*.min).css');
58
- return Promise.all(files.map(async file => {
59
-
41
+ async function getScope(files) {
42
+ for (const file of files) {
60
43
  const data = await read(file);
61
- return {file, data};
62
-
63
- }));
64
-
65
- }
66
-
67
- function getScope(files) {
68
- return files.reduce((scope, {data}) => scope || isScoped(data), '');
44
+ const [, scope] = (data.match(currentScopeRe) || data.match(currentScopeLegacyRe) || []);
45
+ if (scope) {
46
+ return scope;
47
+ }
48
+ }
49
+ return '';
69
50
  }
70
51
 
71
52
  function getNewScope() {
72
53
 
73
- const scopeFromInput = argv.scope || argv.s || 'uk-scope';
54
+ const scopeFromInput = args.scope || args.s || 'uk-scope';
74
55
 
75
56
  if (validClassName.test(scopeFromInput)) {
76
57
  return scopeFromInput;
@@ -80,49 +61,33 @@ function getNewScope() {
80
61
  }
81
62
 
82
63
  async function scope(files, scope) {
83
- await Promise.all(
84
- files.map(async store => {
85
- try {
86
-
87
- const output = await renderLess(`.${scope} {\n${stripComments(store.data)}\n}`);
88
- store.data = `/* scoped: ${scope} */\n${
89
- output
90
- .replace(new RegExp(`.${scope} ${/{(.|[\r\n])*?}/.source}`), '')
91
- .replace(new RegExp(`.${scope}${/\s((\.(uk-(drag|modal-page|offcanvas-page|offcanvas-flip)))|html)/.source}`, 'g'), '$1')
92
- }`;
93
-
94
- } catch (e) {
95
- console.error(store.file, e);
96
- }
97
- })
98
- );
99
- }
100
-
101
- async function store(files) {
102
- return Promise.all(
103
- files.map(async ({file, data}) => {
104
- await write(file, data);
105
- await minify(file);
106
- })
107
- );
64
+ for (const file of files) {
65
+ await replaceInFile(file, async data => {
66
+ const output = await renderLess(`.${scope} {\n${stripComments(data)}\n}`);
67
+ return `/* scoped: ${scope} */\n${
68
+ output
69
+ .replace(new RegExp(`.${scope} ${/{(.|[\r\n])*?}/.source}`), '')
70
+ .replace(new RegExp(`.${scope}${/\s((\.(uk-(drag|modal-page|offcanvas-page|offcanvas-flip)))|html)/.source}`, 'g'), '$1')
71
+ }`;
72
+ });
73
+ await minify(file);
74
+ }
108
75
  }
109
76
 
110
- const currentScopeRe = /\/\* scoped: ([^*]*) \*\//;
111
- const currentScopeLegacyRe = /\.(uk-scope)/;
112
-
113
- function cleanup(files, scope) {
77
+ async function cleanup(files, scope) {
114
78
  const string = scope.split(' ').map(scope => `.${scope}`).join(' ');
115
- files.forEach(store => {
116
- store.data = store.data
79
+ for (const file of files) {
80
+ await replaceInFile(file, data => data
117
81
  .replace(new RegExp(/ */.source + string + / ({[\s\S]*?})?/.source, 'g'), '') // replace classes
118
- .replace(new RegExp(currentScopeRe.source, 'g'), ''); // remove scope comment
119
- });
120
- }
121
-
122
- function isScoped(data) {
123
- return (data.match(currentScopeRe) || data.match(currentScopeLegacyRe) || [])[1];
82
+ .replace(new RegExp(currentScopeRe.source, 'g'), '') // remove scope comment
83
+ );
84
+ }
124
85
  }
125
86
 
126
87
  function stripComments(input) {
127
- return input.replace(/\/\*(.|\n)*?\*\//gm, '').split('\n').filter(line => line.trim().substr(0, 2) !== '//').join('\n');
88
+ return input
89
+ .replace(/\/\*(.|\n)*?\*\//gm, '')
90
+ .split('\n')
91
+ .filter(line => line.trim().substr(0, 2) !== '//')
92
+ .join('\n');
128
93
  }
package/build/scss.js CHANGED
@@ -1,8 +1,4 @@
1
- const fs = require('fs');
2
- const util = require('./util');
3
- const glob = require('glob');
4
-
5
- const {write} = util;
1
+ import {glob, read, write} from './util.js';
6
2
 
7
3
  const themeMixins = {};
8
4
  const coreMixins = {};
@@ -74,9 +70,10 @@ const inverseTemplate = ` @include hook-inverse-component-base();
74
70
  @include hook-inverse-component-utility();`;
75
71
 
76
72
  /* First Step: Go through all files */
77
- glob.sync('src/less/**/*.less').forEach(file => {
73
+ for (const file of await glob('src/less/**/*.less')) {
74
+
75
+ const data = await read(file);
78
76
 
79
- const data = fs.readFileSync(file, 'utf8');
80
77
  /* replace all LESS stuff with SCSS */
81
78
  let scssData = data.replace(/\/less\//g, '/scss/') // change less/ dir to scss/ on imports
82
79
  .replace(/\.less/g, '.scss') // change .less extensions to .scss on imports
@@ -87,7 +84,7 @@ glob.sync('src/less/**/*.less').forEach(file => {
87
84
  .replace(/\.([\w-]*)\s*\((.*)\)\s*{/g, '@mixin $1($2){') // hook -> mixins
88
85
  .replace(/(\$[\w-]*)\s*:(.*);/g, '$1: $2 !default;') // make variables optional
89
86
  .replace(/@mixin ([\w-]*)\s*\((.*)\)\s*{\s*}/g, '// @mixin $1($2){}') // comment empty mixins
90
- .replace(/\.(hook[a-zA-Z\-\d]+);/g, '@if(mixin-exists($1)) {@include $1();}') // hook calls surrounded by a mixin-exists
87
+ .replace(/\.(hook[a-zA-Z\-\d]+)(\(\))?;/g, '@if(mixin-exists($1)) {@include $1();}') // hook calls surrounded by a mixin-exists
91
88
  .replace(/\$(import|supports|media|font-face|page|-ms-viewport|keyframes|-webkit-keyframes|-moz-document)/g, '@$1') // replace valid '@' statements
92
89
  .replace(/tint\((\$[\w-]+),\s([^)]*)\)/g, 'mix(white, $1, $2)') // replace LESS function tint with mix
93
90
  .replace(/fade\((\$[\w-]*), ([0-9]+)%\)/g, (match, p1, p2) => { return `rgba(${p1}, ${p2 / 100})`;}) // replace LESS function fade with rgba
@@ -98,6 +95,7 @@ glob.sync('src/less/**/*.less').forEach(file => {
98
95
  .replace(/(\.[\w-\\@]+)\s*when\s*\((\$[\w-]*)\s*=\s*(\w+)\)\s*({\s*.*?\s*})/gs, '@if ($2 == $3) {\n$1 $4\n}') // replace conditionals
99
96
  .replace(/\${/g, '#{$') // string literals: from: /~"(.*)"/g, to: '#{"$1"}'
100
97
  .replace(/[^(](-\$[\w-]*)/g, ' ($1)') // surround negative variables with brackets
98
+ .replace(/(--[\w-]+:\s*)~'([^']+)'/g, '$1$2') // string literals in custom properties
101
99
  .replace(/~('[^']+')/g, 'unquote($1)'); // string literals: for real
102
100
 
103
101
  /* File name of the current file */
@@ -115,7 +113,7 @@ glob.sync('src/less/**/*.less').forEach(file => {
115
113
 
116
114
  /* get all Variables but not from the mixin.less file */
117
115
  if (filename !== 'mixin') {
118
- scssData = getVariablesFromFile(file, scssData);
116
+ scssData = await getVariablesFromFile(file, scssData);
119
117
  }
120
118
 
121
119
  if (filename === 'uikit.theme') {
@@ -130,30 +128,30 @@ glob.sync('src/less/**/*.less').forEach(file => {
130
128
  scssData = mixinTemplate;
131
129
  }
132
130
 
133
- return write(file.replace(/less/g, 'scss').replace('.theme.', '-theme.'), scssData);
131
+ await write(file.replace(/less/g, 'scss').replace('.theme.', '-theme.'), scssData);
134
132
 
135
- });
133
+ }
136
134
 
137
135
  /* Second Step write all new needed files for SASS */
138
136
 
139
137
  /* write mixins into new file */
140
138
  const mixins_theme = Object.keys(themeMixins).map(function (key) { return themeMixins[key]; });
141
- write('src/scss/mixins-theme.scss', mixins_theme.join('\n'));
139
+ await write('src/scss/mixins-theme.scss', mixins_theme.join('\n'));
142
140
 
143
141
  const mixins_core = Object.keys(coreMixins).map(function (key) { return coreMixins[key]; });
144
- write('src/scss/mixins.scss', mixins_core.join('\n'));
142
+ await write('src/scss/mixins.scss', mixins_core.join('\n'));
145
143
 
146
144
  /* write core variables */
147
145
  const compactCoreVar = new Set();
148
146
  Object.keys(coreVar).map(key => getAllDependencies(coreVar, key).forEach(dependency => compactCoreVar.add(dependency)));
149
147
 
150
- write('src/scss/variables.scss', Array.from(compactCoreVar).join('\n'));
148
+ await write('src/scss/variables.scss', Array.from(compactCoreVar).join('\n'));
151
149
 
152
150
  /* write theme variables */
153
151
  const compactThemeVar = new Set();
154
152
  Object.keys(themeVar).map(key => getAllDependencies(themeVar, key).forEach(dependency => compactThemeVar.add(dependency)));
155
153
 
156
- write('src/scss/variables-theme.scss', Array.from(compactThemeVar).join('\n'));
154
+ await write('src/scss/variables-theme.scss', Array.from(compactThemeVar).join('\n'));
157
155
 
158
156
  /*
159
157
  * recursive function to get a dependencie Set which is ordered so that no depencies exist to a later on entry
@@ -198,9 +196,9 @@ function getMixinsFromFile(file, data) {
198
196
  match = regex.exec(data);
199
197
 
200
198
  while (match) {
201
- themeMixins[match[1]] = match[0];
199
+ [themeMixins[match[1]]] = match;
202
200
  if (file.indexOf('theme/') < 0) {
203
- coreMixins[match[1]] = match[0];
201
+ [coreMixins[match[1]]] = match;
204
202
  }
205
203
  match = regex.exec(data);
206
204
  }
@@ -210,9 +208,9 @@ function getMixinsFromFile(file, data) {
210
208
  match = regex.exec(data);
211
209
 
212
210
  while (match) {
213
- themeMixins[match[1]] = match[0];
211
+ [themeMixins[match[1]]] = match;
214
212
  if (file.indexOf('theme/') < 0) {
215
- coreMixins[match[1]] = match[0];
213
+ [coreMixins[match[1]]] = match;
216
214
  }
217
215
 
218
216
  match = regex.exec(data);
@@ -228,7 +226,7 @@ function getMixinsFromFile(file, data) {
228
226
  * function to extract all the variables from a given file with its data.
229
227
  * @return an updated data where the icons have been replaced by the actual SVG data.
230
228
  */
231
- function getVariablesFromFile(file, data) {
229
+ async function getVariablesFromFile(file, data) {
232
230
  const regex = /(\$[\w-]*)\s*:\s*(.*);/g;
233
231
  let match = regex.exec(data);
234
232
 
@@ -239,7 +237,7 @@ function getVariablesFromFile(file, data) {
239
237
 
240
238
  const iconregex = /(\$[\w-]+)\s*:\s*"\.\.\/\.\.\/images\/backgrounds\/([\w./-]+)" !default;/g;
241
239
  const iconmatch = iconregex.exec(match[0]);
242
- let svg = fs.readFileSync(`src/images/backgrounds/${iconmatch[2]}`).toString();
240
+ let svg = (await read(`src/images/backgrounds/${iconmatch[2]}`)).toString();
243
241
  svg = `"${svg.replace(/\r?\n|\r/g, '%0A')
244
242
  .replace(/"/g, '\'')
245
243
  .replace(/\s/g, '%20')