@newlogic-digital/core 0.9.4 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  root
16
16
  } from "./modules/Core.js";
17
17
 
18
- import { tailwindColors, tailwindColorsRgba, tailwindVariables, tailwindColorsAccent, tailwindColorsCurrent } from './modules/tailwind/index.js'
18
+ import { tailwindColors, tailwindColorsRgba, tailwindVariables, tailwindColorsAccent, tailwindColorsCurrent, tailwindAnimations } from './modules/tailwind/index.js'
19
19
 
20
20
  const defineConfig = (config) => new Core().init(config);
21
21
 
@@ -26,6 +26,7 @@ export {
26
26
  tailwindColorsRgba,
27
27
  tailwindColorsAccent,
28
28
  tailwindColorsCurrent,
29
+ tailwindAnimations,
29
30
  Core,
30
31
  Utils,
31
32
  Styles,
package/modules/Emails.js CHANGED
@@ -20,7 +20,7 @@ export class Emails {
20
20
  removeStyleTags: Config.emails.inlineOnly
21
21
  }
22
22
 
23
- const buildCss = lazypipe().pipe(() => gulpif("*.css", postcss(new Utils().postcssPlugins(Config.emails.postcss, [postcssCustomProperties({
23
+ const buildCss = lazypipe().pipe(() => gulpif("*.css", postcss(new Utils().postcssPluginsEmails(Config.emails.postcss, [postcssCustomProperties({
24
24
  preserve: false
25
25
  }), autoprefixer])))
26
26
  ).pipe(() => gulpif("*.less", Modules.less.module()))
@@ -107,4 +107,4 @@ export class Emails {
107
107
  resolve();
108
108
  })
109
109
  }
110
- }
110
+ }
package/modules/Styles.js CHANGED
@@ -10,6 +10,32 @@ import glob from "glob";
10
10
  import through from "through2";
11
11
  import {Config, Exists, Functions, Modules, Utils, root} from "./Core.js";
12
12
 
13
+ const aspectRatio = () => {
14
+ return {
15
+ postcssPlugin: 'aspect-ratio',
16
+ Declaration: {
17
+ 'aspect-ratio': (decl, {Rule, Declaration}) => {
18
+ const rule = decl.parent
19
+ const selector = rule.selector
20
+ const beforeRule = new Rule({selector: `${selector}:before`, raws: {after: rule.raws.after, semicolon: rule.raws.semicolon}})
21
+ const ratio = decl.value.replace(/['"]?((?:\d*\.?\d*)?)(?:\s*[:|\/]\s*)(\d*\.?\d*)['"]?/g, (match, width, height) => {
22
+ return (height / width) * 100 + '%'
23
+ })
24
+
25
+ beforeRule.append([
26
+ new Declaration({prop: 'padding-bottom', value: ratio}),
27
+ ])
28
+
29
+ rule.after(beforeRule)
30
+
31
+ rule.nodes.length === 1 ? rule.remove() : decl.remove()
32
+ },
33
+ }
34
+ }
35
+ }
36
+
37
+ aspectRatio.postcss = true;
38
+
13
39
  export class Styles {
14
40
  get purge() {
15
41
  return {
@@ -160,7 +186,7 @@ export class Styles {
160
186
  }
161
187
 
162
188
  gulp.src(`${root + Config.paths.input.styles}/${Config.styles.tailwind.basename}`)
163
- .pipe(postcss(new Utils().postcssPlugins(Config.styles.tailwind.postcss, [tailwindcss(tailwindcssConfig), autoprefixer])))
189
+ .pipe(postcss(new Utils().postcssPlugins(Config.styles.tailwind.postcss, [tailwindcss(tailwindcssConfig), aspectRatio, autoprefixer])))
164
190
  .pipe(gulpif(Config.styles.optimizations, clean()))
165
191
  .pipe(gulp.dest(root + Config.paths.temp))
166
192
  .on("end", resolve)
@@ -245,32 +271,6 @@ export class Styles {
245
271
  });
246
272
  }
247
273
 
248
- const aspectRatio = () => {
249
- return {
250
- postcssPlugin: 'aspect-ratio',
251
- Declaration: {
252
- 'aspect-ratio': (decl, {Rule, Declaration}) => {
253
- const rule = decl.parent
254
- const selector = rule.selector
255
- const beforeRule = new Rule({selector: `${selector}:before`, raws: {after: rule.raws.after, semicolon: rule.raws.semicolon}})
256
- const ratio = decl.value.replace(/['"]?((?:\d*\.?\d*)?)(?:\s*[:|\/]\s*)(\d*\.?\d*)['"]?/g, (match, width, height) => {
257
- return (height / width) * 100 + '%'
258
- })
259
-
260
- beforeRule.append([
261
- new Declaration({prop: 'padding-bottom', value: ratio}),
262
- ])
263
-
264
- rule.after(beforeRule)
265
-
266
- rule.nodes.length === 1 ? rule.remove() : decl.remove()
267
- },
268
- }
269
- }
270
- }
271
-
272
- aspectRatio.postcss = true;
273
-
274
274
  const build = lazypipe().pipe(() => gulpif("*.css", postcss(new Utils().postcssPlugins(Config.styles.postcss, [autoprefixer, aspectRatio, inset])))
275
275
  ).pipe(() => gulpif("*.less", Modules.less.module()));
276
276
 
@@ -8,6 +8,9 @@ import gulp from "gulp";
8
8
  import plumber from "gulp-plumber";
9
9
  import minifier from "html-minifier";
10
10
  import through from "through2";
11
+ import Prism from 'prismjs'
12
+ import loadLanguages from 'prismjs/components/index.js'
13
+ import NormalizeWhitespace from 'prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js'
11
14
  import {Config, Exists, Functions, Modules, root} from "./Core.js";
12
15
 
13
16
  export class Templates {
@@ -236,16 +239,54 @@ export class Templates {
236
239
  type = type.replace(":mirror", "")
237
240
  }
238
241
 
242
+ loadLanguages(['markup', 'css', 'javascript'])
243
+
244
+ const Normalize = new NormalizeWhitespace({
245
+ 'remove-trailing': true,
246
+ 'remove-indent': true,
247
+ 'left-trim': true,
248
+ 'right-trim': true,
249
+ });
250
+
251
+ const wrap = (code, lang) => {
252
+ return `<pre class="language-${lang}"><code>${code}</code></pre>`
253
+ }
254
+
255
+ const highlight = (str, lang) => {
256
+ if (!lang) {
257
+ return wrap(str, 'text')
258
+ }
259
+ lang = lang.toLowerCase()
260
+ const rawLang = lang
261
+ if (lang === 'vue' || lang === 'html') {
262
+ lang = 'markup'
263
+ }
264
+ if (lang === 'md') {
265
+ lang = 'markdown'
266
+ }
267
+ if (lang === 'ts') {
268
+ lang = 'typescript'
269
+ }
270
+ if (lang === 'py') {
271
+ lang = 'python'
272
+ }
273
+ if (!Prism.languages[lang]) {
274
+ try {
275
+ loadLanguages([lang])
276
+ } catch (e) {
277
+ console.warn(`Syntax highlight for language "${lang}" is not supported.`)
278
+ }
279
+ }
280
+ if (Prism.languages[lang]) {
281
+ const code = Prism.highlight(Normalize.normalize(str), Prism.languages[lang], lang)
282
+ return wrap(code, rawLang)
283
+ }
284
+ return wrap(str, 'text')
285
+ }
286
+
239
287
  return {
240
288
  chain: chain,
241
- output: `${mirror ? output : ""}
242
- <pre style="width: 100%">
243
- <code class="language-${type}">
244
- <xmp>
245
- ${output}
246
- </xmp>
247
- </code>
248
- </pre>`
289
+ output: `${mirror ? output : ""}${highlight(output, type)}`
249
290
  };
250
291
  }
251
292
  });
package/modules/Utils.js CHANGED
@@ -279,6 +279,21 @@ export class Utils {
279
279
  return config;
280
280
  }
281
281
 
282
+ return plugins.concat(after);
283
+ }
284
+ postcssPluginsEmails(config, after) {
285
+ let plugins = [postcssImport, postcssNesting({
286
+ noIsPseudoSelector: true
287
+ }), postcssCustomMedia, postcssCustomSelectors];
288
+
289
+ if (Exists.postcssConfig) {
290
+ return {config: root}
291
+ } else if (typeof config.extend !== "undefined") {
292
+ plugins = plugins.concat(config.extend)
293
+ } else if (Array.isArray(config) && config.length !== 0) {
294
+ return config;
295
+ }
296
+
282
297
  return plugins.concat(after);
283
298
  }
284
299
  }
@@ -64,6 +64,19 @@ const tailwindVariables = (type, variables = [], values = {}) => {
64
64
  return values
65
65
  };
66
66
 
67
+ const tailwindAnimations = (values) => {
68
+ const result = {};
69
+
70
+ values.forEach(value => {
71
+ result[`.animation-${value}`] = {
72
+ 'animation-name': value
73
+ };
74
+ });
75
+
76
+ return result
77
+ };
78
+
79
+ exports.tailwindAnimations = tailwindAnimations;
67
80
  exports.tailwindColors = tailwindColors;
68
81
  exports.tailwindColorsAccent = tailwindColorsAccent;
69
82
  exports.tailwindColorsCurrent = tailwindColorsCurrent;
@@ -60,4 +60,16 @@ const tailwindVariables = (type, variables = [], values = {}) => {
60
60
  return values
61
61
  }
62
62
 
63
- export { tailwindColors, tailwindVariables, tailwindColorsRgba, tailwindColorsAccent, tailwindColorsCurrent }
63
+ const tailwindAnimations = (values) => {
64
+ const result = {};
65
+
66
+ values.forEach(value => {
67
+ result[`.animation-${value}`] = {
68
+ 'animation-name': value
69
+ };
70
+ });
71
+
72
+ return result
73
+ }
74
+
75
+ export { tailwindColors, tailwindVariables, tailwindColorsRgba, tailwindColorsAccent, tailwindColorsCurrent, tailwindAnimations }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@newlogic-digital/core",
3
3
  "type": "module",
4
- "version": "0.9.4",
4
+ "version": "0.9.7",
5
5
  "main": "index.js",
6
6
  "author": "New Logic Studio s.r.o.",
7
7
  "description": "Set of tools that can be used to create modern web applications",
@@ -40,19 +40,20 @@
40
40
  "lazypipe": "^1.0.2",
41
41
  "lodash": "^4.17.21",
42
42
  "postcss-custom-media": "^8.0.0",
43
- "postcss-custom-properties": "^12.1.3",
43
+ "postcss-custom-properties": "^12.1.4",
44
44
  "postcss-custom-selectors": "^6.0.0",
45
45
  "postcss-import": "^14.0.2",
46
46
  "postcss-nesting": "^10.1.2",
47
47
  "rollup": "^2.66.1",
48
48
  "rollup-plugin-import-map": "^2.2.2",
49
49
  "rollup-plugin-terser": "^7.0.2",
50
- "vite": "~2.7.13"
50
+ "vite": "~2.7.13",
51
+ "prismjs": "^1.26.0"
51
52
  },
52
53
  "peerDependencies": {
53
54
  "autoprefixer": "^10.4.2",
54
55
  "postcss": "^8.4.5",
55
- "tailwindcss": "^3.0.16"
56
+ "tailwindcss": "^3.0.18"
56
57
  },
57
58
  "devDependencies": {
58
59
  "vitepress": "^0.21.6"