Parcourir la source

Move additional libraries to Tabler core (#2385)

Paweł Kuna il y a 4 mois
Parent
commit
ad54f61429

+ 33 - 0
core/.build/copy-libs.mjs

@@ -0,0 +1,33 @@
+#!/usr/bin/env node
+
+'use strict'
+
+import { existsSync, mkdirSync, lstatSync } from 'fs'
+import { emptyDirSync, copySync } from 'fs-extra/esm'
+import libs from '../libs.json' with { type: 'json' }
+import { fileURLToPath } from 'url'
+import { join, dirname } from 'node:path';
+
+const __dirname = dirname(fileURLToPath(import.meta.url))
+
+emptyDirSync(join(__dirname, '..', 'dist/libs'))
+
+for(const name in libs) {
+	const { npm } = libs[name]
+
+	if (npm) {
+		const from = join(__dirname, '..', `node_modules/${npm}`)
+		const to = join(__dirname, '..', `dist/libs/${npm}`)
+
+		// create dir in dist/libs
+		if (!existsSync(to)) {
+			mkdirSync(to, { recursive: true })
+		}
+		
+		copySync(from, to, {
+			dereference: true,
+		})
+		
+		console.log(`Successfully copied ${npm}`)
+	}
+}

+ 164 - 0
core/libs.json

@@ -0,0 +1,164 @@
+{
+  "imask": {
+    "npm": "imask",
+    "js": [
+      "dist/imask.min.js"
+    ]
+  },
+  "autosize": {
+    "npm": "autosize",
+    "js": [
+      "dist/autosize.min.js"
+    ]
+  },
+  "apexcharts": {
+    "npm": "apexcharts",
+    "js": [
+      "dist/apexcharts.min.js"
+    ]
+  },
+  "nouislider": {
+    "npm": "nouislider",
+    "js": [
+      "dist/nouislider.min.js"
+    ],
+    "css": [
+      "dist/nouislider.min.css"
+    ]
+  },
+  "countup": {
+    "npm": "countup.js",
+    "js": [
+      "dist/countUp.umd.js"
+    ]
+  },
+  "lists": {
+    "npm": "list.js",
+    "js": [
+      "dist/list.min.js"
+    ]
+  },
+  "masonry": {
+    "js": [
+      "https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"
+    ]
+  },
+  "mapbox": {
+    "js": [
+      "https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.js"
+    ],
+    "css": [
+      "https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.css"
+    ]
+  },
+  "google-maps": {
+    "js": [
+      "https://maps.googleapis.com/maps/api/js?key=GOOGLE_MAPS_KEY"
+    ]
+  },
+  "litepicker": {
+    "npm": "litepicker",
+    "js": [
+      "dist/litepicker.js"
+    ]
+  },
+  "tom-select": {
+    "npm": "tom-select",
+    "js": [
+      "dist/js/tom-select.base.min.js"
+    ],
+    "css": [
+      "dist/css/tom-select.bootstrap5.min.css"
+    ]
+  },
+  "jsvectormap": {
+    "npm": "jsvectormap",
+    "js": [
+      "dist/jsvectormap.min.js",
+      "dist/maps/world.js",
+      "dist/maps/world-merc.js"
+    ],
+    "css": [
+      "dist/jsvectormap.css"
+    ]
+  },
+  "fslightbox": {
+    "npm": "fslightbox",
+    "js": [
+      "index.js"
+    ]
+  },
+  "hugerte": {
+    "npm": "hugerte",
+    "js": [
+      "hugerte.min.js"
+    ]
+  },
+  "plyr": {
+    "npm": "plyr",
+    "js": [
+      "dist/plyr.min.js"
+    ],
+    "css": [
+      "dist/plyr.css"
+    ]
+  },
+  "dropzone": {
+    "npm": "dropzone",
+    "js": [
+      "dist/dropzone-min.js"
+    ],
+    "css": [
+      "dist/dropzone.css"
+    ]
+  },
+  "star-rating.js": {
+    "npm": "star-rating.js",
+    "js": [
+      "dist/star-rating.min.js"
+    ],
+    "css": [
+      "dist/star-rating.min.css"
+    ]
+  },
+  "coloris.js": {
+    "npm": "@melloware/coloris",
+    "js": [
+      "dist/umd/coloris.min.js"
+    ],
+    "css": [
+      "dist/coloris.min.css"
+    ]
+  },
+  "typed.js": {
+    "npm": "typed.js",
+    "js": [
+      "dist/typed.umd.js"
+    ]
+  },
+  "signature_pad": {
+    "npm": "signature_pad",
+    "js": [
+      "dist/signature_pad.umd.min.js"
+    ]
+  },
+  "clipboard": {
+    "npm": "clipboard",
+    "js": [
+      "dist/clipboard.min.js"
+    ]
+  },
+  "fullcalendar": {
+    "npm": "fullcalendar",
+    "js": [
+      "index.global.min.js"
+    ]
+  },
+  "turbo": {
+    "npm": "@hotwired/turbo",
+    "js": [
+      "dist/turbo.es2017-umd.js"
+    ],
+    "head": true
+  }
+}

+ 29 - 3
core/package.json

@@ -4,7 +4,7 @@
   "description": "Premium and Open Source dashboard template with responsive and high quality UI.",
   "homepage": "https://tabler.io",
   "scripts": {
-    "dev": "pnpm run watch",
+    "dev": "pnpm run clean && pnpm run copy && pnpm run watch",
     "build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy && pnpm run generate-sri",
     "clean": "shx rm -rf dist demo",
     "css": "pnpm run css-compile && pnpm run css-prefix && pnpm run css-rtl && pnpm run css-minify && pnpm run css-banner",
@@ -26,8 +26,9 @@
     "js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler.esm.js.map,includeSources,url=tabler.esm.min.js.map\" --output dist/js/tabler.esm.min.js dist/js/tabler.esm.js",
     "js-minify-theme": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.js.map,includeSources,url=tabler-theme.min.js.map\" --output dist/js/tabler-theme.min.js dist/js/tabler-theme.js",
     "js-minify-theme-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.esm.js.map,includeSources,url=tabler-theme.esm.min.js.map\" --output dist/js/tabler-theme.esm.min.js dist/js/tabler-theme.esm.js",
-    "copy": "pnpm run copy-img",
+    "copy": "pnpm run copy-img && pnpm run copy-libs",
     "copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img",
+    "copy-libs": "node .build/copy-libs.mjs",
     "watch": "concurrently \"pnpm run watch-css\" \"pnpm run watch-js\"",
     "watch-css": "nodemon --watch scss/ --ext scss --exec \"pnpm run css-compile && pnpm run css-prefix\"",
     "watch-js": "nodemon --watch js/ --ext js --exec \"pnpm run js-compile\"",
@@ -66,7 +67,8 @@
     "dist/**/*",
     "js/**/*.{js,map}",
     "img/**/*.{svg}",
-    "scss/**/*.scss"
+    "scss/**/*.scss",
+    "libs.json"
   ],
   "style": "dist/css/tabler.css",
   "sass": "scss/tabler.scss",
@@ -146,6 +148,30 @@
     "@popperjs/core": "^2.11.8",
     "bootstrap": "5.3.6"
   },
+  "devDependencies": {
+    "@hotwired/turbo": "^8.0.13",
+    "@melloware/coloris": "^0.24.2",
+    "apexcharts": "3.54.1",
+    "autosize": "^6.0.1",
+    "choices.js": "^11.1.0",
+    "clipboard": "^2.0.11",
+    "countup.js": "^2.8.2",
+    "dropzone": "^6.0.0-beta.2",
+    "flatpickr": "^4.6.13",
+    "fslightbox": "^3.6.0",
+    "fullcalendar": "^6.1.17",
+    "hugerte": "^1.0.9",
+    "imask": "^7.6.1",
+    "jsvectormap": "^1.6.0",
+    "list.js": "^2.3.1",
+    "litepicker": "^2.0.12",
+    "nouislider": "^15.8.1",
+    "plyr": "^3.7.8",
+    "signature_pad": "^5.0.7",
+    "star-rating.js": "^4.3.1",
+    "tom-select": "^2.4.3",
+    "typed.js": "^2.1.0"
+  },
   "directories": {
     "doc": "docs"
   }

+ 1 - 1
docs/content/ui/components/vector-maps.md

@@ -1,6 +1,6 @@
 ---
 title: Vector Maps
-docs-libs: [jsvectormap, jsvectormap-world, jsvectormap-world-merc]
+docs-libs: [jsvectormap]
 description: Interactive guide to creating vector maps with jsVectorMap.
 summary: Vector maps are a great way to display geographical data in an interactive and visually appealing way. Learn how to create vector maps with jsVectorMap.
 ---

+ 2 - 2
docs/eleventy.config.mjs

@@ -1,5 +1,5 @@
 import { appFilters } from "../shared/e11ty/filters.mjs"
-import { appData, getCopyList } from "../shared/e11ty/data.mjs";
+import { appData } from "../shared/e11ty/data.mjs";
 import { readFileSync, existsSync } from 'node:fs';
 import { fileURLToPath } from 'node:url'
 import { join, dirname } from 'node:path';
@@ -17,7 +17,7 @@ export default function (eleventyConfig) {
 	appData(eleventyConfig);
 
 	eleventyConfig.addPassthroughCopy({
-		...getCopyList(),
+		"node_modules/@tabler/core/dist": "dist",
 		"public": "/",
 		"static": "static",
 	});

+ 3 - 25
docs/package.json

@@ -24,36 +24,14 @@
   "keywords": [],
   "author": "",
   "license": "ISC",
-  "dependencies": {
-    "@hotwired/turbo": "^8.0.13",
-    "@melloware/coloris": "^0.24.0",
-    "@tabler/core": "workspace:*",
-    "@tabler/icons": "^3.31.0",
-    "apexcharts": "3.54.1",
-    "autosize": "^6.0.1",
-    "choices.js": "^11.1.0",
-    "clipboard": "^2.0.11",
-    "countup.js": "^2.8.0",
-    "dropzone": "^6.0.0-beta.2",
-    "flatpickr": "^4.6.13",
-    "fslightbox": "^3.5.1",
-    "hugerte": "^1.0.9",
-    "imask": "^7.6.1",
-    "jsvectormap": "^1.6.0",
-    "list.js": "^2.3.1",
-    "litepicker": "^2.0.12",
-    "nouislider": "^15.8.1",
-    "plyr": "^3.7.8",
-    "signature_pad": "^5.0.7",
-    "star-rating.js": "^4.3.1",
-    "tom-select": "^2.4.3",
-    "typed.js": "^2.1.0"
-  },
   "devDependencies": {
     "@11ty/eleventy": "^3.1.0",
     "@docsearch/css": "^3.9.0",
     "@docsearch/js": "^3.9.0",
     "flat-cache": "^6.1.8",
     "shiki": "^3.2.2"
+  },
+  "dependencies": {
+    "@tabler/core": "workspace:*"
   }
 }

+ 1 - 0
package.json

@@ -30,6 +30,7 @@
     "clean-css-cli": "^5.6.3",
     "concurrently": "^9.1.2",
     "cross-env": "^7.0.3",
+    "fs-extra": "^11.3.0",
     "glob": "^11.0.2",
     "js-beautify": "^1.15.4",
     "nodemon": "^3.1.10",

+ 18 - 90
pnpm-lock.yaml

@@ -50,6 +50,9 @@ importers:
       cross-env:
         specifier: ^7.0.3
         version: 7.0.3
+      fs-extra:
+        specifier: ^11.3.0
+        version: 11.3.0
       glob:
         specifier: ^11.0.2
         version: 11.0.2
@@ -104,21 +107,13 @@ importers:
       bootstrap:
         specifier: 5.3.6
         version: 5.3.6(@popperjs/[email protected])
-
-  docs:
-    dependencies:
+    devDependencies:
       '@hotwired/turbo':
         specifier: ^8.0.13
         version: 8.0.13
       '@melloware/coloris':
-        specifier: ^0.24.0
-        version: 0.24.0
-      '@tabler/core':
-        specifier: workspace:*
-        version: link:../core
-      '@tabler/icons':
-        specifier: ^3.31.0
-        version: 3.31.0
+        specifier: ^0.24.2
+        version: 0.24.2
       apexcharts:
         specifier: 3.54.1
         version: 3.54.1
@@ -132,7 +127,7 @@ importers:
         specifier: ^2.0.11
         version: 2.0.11
       countup.js:
-        specifier: ^2.8.0
+        specifier: ^2.8.2
         version: 2.8.2
       dropzone:
         specifier: ^6.0.0-beta.2
@@ -141,8 +136,11 @@ importers:
         specifier: ^4.6.13
         version: 4.6.13
       fslightbox:
-        specifier: ^3.5.1
-        version: 3.5.1
+        specifier: ^3.6.0
+        version: 3.6.0
+      fullcalendar:
+        specifier: ^6.1.17
+        version: 6.1.17
       hugerte:
         specifier: ^1.0.9
         version: 1.0.9
@@ -176,6 +174,12 @@ importers:
       typed.js:
         specifier: ^2.1.0
         version: 2.1.0
+
+  docs:
+    dependencies:
+      '@tabler/core':
+        specifier: workspace:*
+        version: link:../core
     devDependencies:
       '@11ty/eleventy':
         specifier: ^3.1.0
@@ -195,78 +199,12 @@ importers:
 
   preview:
     dependencies:
-      '@hotwired/turbo':
-        specifier: ^8.0.13
-        version: 8.0.13
-      '@melloware/coloris':
-        specifier: ^0.24.2
-        version: 0.24.2
       '@tabler/core':
         specifier: workspace:*
         version: link:../core
       '@tabler/icons':
         specifier: ^3.31.0
         version: 3.31.0
-      apexcharts:
-        specifier: 3.54.1
-        version: 3.54.1
-      autosize:
-        specifier: ^6.0.1
-        version: 6.0.1
-      choices.js:
-        specifier: ^11.1.0
-        version: 11.1.0
-      clipboard:
-        specifier: ^2.0.11
-        version: 2.0.11
-      countup.js:
-        specifier: ^2.8.2
-        version: 2.8.2
-      dropzone:
-        specifier: ^6.0.0-beta.2
-        version: 6.0.0-beta.2
-      flatpickr:
-        specifier: ^4.6.13
-        version: 4.6.13
-      fslightbox:
-        specifier: ^3.6.0
-        version: 3.6.0
-      fullcalendar:
-        specifier: ^6.1.17
-        version: 6.1.17
-      hugerte:
-        specifier: ^1.0.9
-        version: 1.0.9
-      imask:
-        specifier: ^7.6.1
-        version: 7.6.1
-      jsvectormap:
-        specifier: ^1.6.0
-        version: 1.6.0
-      list.js:
-        specifier: ^2.3.1
-        version: 2.3.1
-      litepicker:
-        specifier: ^2.0.12
-        version: 2.0.12
-      nouislider:
-        specifier: ^15.8.1
-        version: 15.8.1
-      plyr:
-        specifier: ^3.7.8
-        version: 3.7.8
-      signature_pad:
-        specifier: ^5.0.7
-        version: 5.0.7
-      star-rating.js:
-        specifier: ^4.3.1
-        version: 4.3.1
-      tom-select:
-        specifier: ^2.4.3
-        version: 2.4.3
-      typed.js:
-        specifier: ^2.1.0
-        version: 2.1.0
     devDependencies:
       '@11ty/eleventy':
         specifier: ^3.1.0
@@ -741,9 +679,6 @@ packages:
   '@manypkg/[email protected]':
     resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
 
-  '@melloware/[email protected]':
-    resolution: {integrity: sha512-9RGKHqZJsUSsxb/0xaBCK5OKywobiK/xRtV8f4KQDmviqmVfkMLR3kK4DRuTTLSFdSOqkV0OQ/Niitu+rlXXYw==}
-
   '@melloware/[email protected]':
     resolution: {integrity: sha512-6IhdPOBIc922jRMx2p6Sl6mRzqjGF7x67q0ZziA5e4NTqWoSPHBEnSmiUCcsXiNHZJ6zdOQt+6Z/eZxpxcHjDA==}
 
@@ -1660,9 +1595,6 @@ packages:
     engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
     os: [darwin]
 
-  [email protected]:
-    resolution: {integrity: sha512-HFADNFHjo26XGiGpIZeoJZ3RE3RaZItc2jmqim63zlu3GTmnd5TUkj6ZpMrdU1S4g5pbbKG2cpG2ekqtaM1Spg==}
-
   [email protected]:
     resolution: {integrity: sha512-ZQFlDDy0BLTbcoKss9KIcNv5g2IJ8vxFzuSIqRZe0iL7cYq9yyPXpnRYey/+jznN0DN3KanYQb+G+ncH7qz3XA==}
 
@@ -3787,8 +3719,6 @@ snapshots:
       globby: 11.1.0
       read-yaml-file: 1.1.0
 
-  '@melloware/[email protected]': {}
-
   '@melloware/[email protected]': {}
 
   '@nodelib/[email protected]':
@@ -4665,8 +4595,6 @@ snapshots:
   [email protected]:
     optional: true
 
-  [email protected]: {}
-
   [email protected]: {}
 
   [email protected]:

+ 2 - 5
preview/eleventy.config.mjs

@@ -3,7 +3,7 @@ import { EleventyRenderPlugin } from "@11ty/eleventy";
 import { join } from 'node:path';
 import { sync } from 'glob';
 import { appFilters } from "../shared/e11ty/filters.mjs";
-import { appData, getCopyList } from "../shared/e11ty/data.mjs"
+import { appData } from "../shared/e11ty/data.mjs"
 
 /** @type {import('@11ty/eleventy').LocalConfig} */
 export default function (eleventyConfig) {
@@ -20,7 +20,7 @@ export default function (eleventyConfig) {
 	eleventyConfig.setDataDirectory("../../shared/data");
 
 	eleventyConfig.addPassthroughCopy({
-		...getCopyList(),
+		"node_modules/@tabler/core/dist": "dist",
 		"pages/favicon.ico": "favicon.ico",
 		"static": "static",
 	});
@@ -33,11 +33,8 @@ export default function (eleventyConfig) {
 	 * Data
 	 */
 	eleventyConfig.addGlobalData("environment", environment);
-
-	eleventyConfig.addGlobalData("package", JSON.parse(readFileSync(join("..", "core", "package.json"), "utf-8")));
 	eleventyConfig.addGlobalData("readme", readFileSync(join("..", "README.md"), "utf-8"));
 	eleventyConfig.addGlobalData("license", readFileSync(join("..", "LICENSE"), "utf-8"));
-	eleventyConfig.addGlobalData("changelog", readFileSync(join("..", "core", "CHANGELOG.md"), "utf-8"));
 
 	eleventyConfig.addGlobalData("pages", () => {
 		return sync('pages/**/*.html').filter((file) => {

+ 5 - 27
preview/package.json

@@ -20,7 +20,7 @@
     "clean": "shx rm -rf dist demo",
     "html": "pnpm run html-build && pnpm run html-prettify",
     "html-build": "eleventy",
-    "html-prettify": "prettier --write \"dist/**/*.html\"",
+    "html-prettify": "prettier --write \"dist/**/*.html\" \"!dist/dist/**\"",
     "svg-optimize": "svgo -f svg/brand --pretty",
     "unused-files": "node .build/unused-files.mjs",
     "download-images": "node .build/download-images.mjs",
@@ -30,37 +30,15 @@
     "import-icons": "git checkout dev && BRANCH_NAME=\"dev-tabler-icons-`pnpm info @tabler/icons version`\" && git branch $BRANCH_NAME && git checkout $BRANCH_NAME && ncu -u @tabler/icons && pnpm install && pnpm run svg-icons && git add . && git commit -am \"update icons to v`pnpm info @tabler/icons version`\" && git push origin $BRANCH_NAME && git checkout dev",
     "zip": "mkdir -p packages-zip && zip -r packages-zip/tabler-$(node -p \"require('./package.json').version\").zip demo/*"
   },
-  "dependencies": {
-    "@hotwired/turbo": "^8.0.13",
-    "@melloware/coloris": "^0.24.2",
-    "@tabler/core": "workspace:*",
-    "@tabler/icons": "^3.31.0",
-    "apexcharts": "3.54.1",
-    "autosize": "^6.0.1",
-    "choices.js": "^11.1.0",
-    "clipboard": "^2.0.11",
-    "countup.js": "^2.8.2",
-    "dropzone": "^6.0.0-beta.2",
-    "flatpickr": "^4.6.13",
-    "fslightbox": "^3.6.0",
-    "fullcalendar": "^6.1.17",
-    "hugerte": "^1.0.9",
-    "imask": "^7.6.1",
-    "jsvectormap": "^1.6.0",
-    "list.js": "^2.3.1",
-    "litepicker": "^2.0.12",
-    "nouislider": "^15.8.1",
-    "plyr": "^3.7.8",
-    "signature_pad": "^5.0.7",
-    "star-rating.js": "^4.3.1",
-    "tom-select": "^2.4.3",
-    "typed.js": "^2.1.0"
-  },
   "devDependencies": {
     "@11ty/eleventy": "^3.1.0",
     "imageoptim-cli": "^3.1.9",
     "request": "^2.88.2"
   },
+  "dependencies": {
+    "@tabler/core": "workspace:*",
+    "@tabler/icons": "^3.31.0"
+  },
   "prettier": {
     "tabWidth": 2,
     "useTabs": false,

+ 1 - 1
preview/pages/maps-vector.html

@@ -2,7 +2,7 @@
 title: Vector Maps
 page-header: Vector Maps
 page-menu: plugins.maps-vector
-page-libs: [jsvectormap, jsvectormap-world, jsvectormap-world-merc]
+page-libs: [jsvectormap]
 layout: default
 permalink: maps-vector.html
 ---

+ 1 - 0
preview/pages/turbo-loader.html

@@ -2,6 +2,7 @@
 permalink: turbo-loader.html
 layout: default
 page-libs: [turbo]
+page-menu: plugins.turbo
 ---
 
 <div class="card">

+ 0 - 44
shared/data/libs.json

@@ -1,44 +0,0 @@
-{
-  "js": {
-    "imask": "imask/dist/imask.min.js",
-    "autosize": "autosize/dist/autosize.min.js",
-    "apexcharts": "apexcharts/dist/apexcharts.min.js",
-    "nouislider": "nouislider/dist/nouislider.min.js",
-    "countup": "countup.js/dist/countUp.umd.js",
-    "lists": "list.js/dist/list.min.js",
-    "masonry": "https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js",
-    "mapbox": "https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.js",
-    "google-maps": "https://maps.googleapis.com/maps/api/js?key=GOOGLE_MAPS_KEY",
-    "litepicker": "litepicker/dist/litepicker.js",
-    "tom-select": "tom-select/dist/js/tom-select.base.min.js",
-    "jsvectormap": "jsvectormap/dist/jsvectormap.min.js",
-    "jsvectormap-world": "jsvectormap/dist/maps/world.js",
-    "jsvectormap-world-merc": "jsvectormap/dist/maps/world-merc.js",
-    "fslightbox": "fslightbox/index.js",
-    "hugerte": "hugerte/hugerte.min.js",
-    "plyr": "plyr/dist/plyr.min.js",
-    "dropzone": "dropzone/dist/dropzone-min.js",
-    "star-rating.js": "star-rating.js/dist/star-rating.min.js",
-    "coloris.js": "@melloware/coloris/dist/umd/coloris.min.js",
-    "typed.js": "typed.js/dist/typed.umd.js",
-    "signature_pad": "signature_pad/dist/signature_pad.umd.min.js",
-    "clipboard": "clipboard/dist/clipboard.min.js",
-    "fullcalendar": "fullcalendar/index.global.min.js"
-  },
-  "js-head": {
-    "turbo": "@hotwired/turbo/dist/turbo.es2017-umd.js"
-  },
-  "css": {
-    "mapbox": "https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.css",
-    "jsvectormap": "jsvectormap/dist/jsvectormap.css",
-    "dropzone": "dropzone/dist/dropzone.css",
-    "plyr": "plyr/dist/plyr.css",
-    "star-rating.js": "star-rating.js/dist/star-rating.min.css",
-    "coloris.js": "@melloware/coloris/dist/coloris.min.css",
-    "tom-select": "tom-select/dist/css/tom-select.bootstrap5.min.css",
-    "nouislider": "nouislider/dist/nouislider.min.css"
-  },
-  "js-copy": {
-    "hugerte" :"hugerte/*"
-  }
-}

+ 4 - 0
shared/data/menu.json

@@ -434,6 +434,10 @@
         "url": "maps-vector.html",
         "title": "Map vector"
       },
+      "turbo": {
+        "url": "turbo-loader.html",
+        "title": "Turbo loader"
+      },
       "wysiwyg": {
         "url": "wysiwyg.html",
         "title": "WYSIWYG editor"

+ 4 - 4
shared/data/sri.json

@@ -1,6 +1,6 @@
 {
-  "css": "sha384-n8Eaco6KCZ5R99jiJnSTWVUOh41zdxwpENxWBHB9xlBwbIsFL5G419uHHwsKUD4W",
-  "css-rtl": "sha384-0IlPjO9Km+IBC2msQbdJOsf9C8RlaoBVjhb0Znk+OpFw7G9Q2PcyaksnJxy9oqa5",
+  "css": "sha384-p5xrK2AiivdjrNPtu162Vv179cyFHJY2I4Mb0NZVR8Wn2aqSGUm7zlFFjM8jAzeD",
+  "css-rtl": "sha384-22IGd0xp1gk5BQwuhYqr8qUmsv65cwTzenvc19bvq5PYduXkWE8gUUruxIr/ZPsn",
   "css-flags": "sha384-fStl5MKxnUStSlpPiHGSFmUTTzr2KEY7jtgmvTswVDaQJ+sLbmEF+26m57M2sbCm",
   "css-flags-rtl": "sha384-i8KVpZYtpnZDkTYzaYlaeiF91VNnmyORipMLZh6hKGh5Jj80QN6962xlHQPkx/xr",
   "css-marketing": "sha384-IILX0Nea/+/hbVhEsrQ/djsqtSJmb4CM9hPzWd7Yh8hzbyYp4N/4hWMQL5kIPEuZ",
@@ -13,8 +13,8 @@
   "css-props-rtl": "sha384-Voq7oikM1MGBKKotIvWP3THYoINUMEQurBmKseurzXaiMzL3KPlbQXhbI4tHPKHU",
   "css-themes": "sha384-o3qxqNUMd6NW7wethAfo4ur0TF8cgmbdTRrUHwryoxEpy3DNmt5MWoCHRlJlX/zD",
   "css-themes-rtl": "sha384-er5SohDm2dJxg5UhUf1RI96jOlVA7RwgVm5++ribGoWmjds4MntkV6Mxg66xCQQg",
-  "css-vendors-rtl": "sha384-pmqjDmyHCjDzKM/ggLDh4+XLOp41n8d7z1/QxB3TEnz/yg7B0nV3yBKqx/O+buIU",
-  "css-vendors": "sha384-IHXMAokwkmX7RM5ureM6x8sBDwkSgYw3OWYboGb+CQZH7xzu7nYjodKx5WFatxIf",
+  "css-vendors-rtl": "sha384-tHbMgNpCKXcS6jHEZNTL3D8vphnCwUbnP37Mu3sihnvXRk47xUWU6VYDIO8kMyr3",
+  "css-vendors": "sha384-Fo//Kmhz1EIFHbqRN5ZnLePKoXW3c4MjGg1DVOrvwTlQNfC2rKRflTBS1degq6n6",
   "js": "sha384-PHMhDo1ZcalIgfBhQzaXnIBa6xdPJ8iQTzHd+WVAeoI/O2Xq3OuElAo7PyEYTqMg",
   "js-theme": "sha384-3Z3TIkq5YSKOncCfiURX/S03AUHfI0nVzd39uRc9KLhtLi7M228qgWBjnRXwt2j0",
   "demo-css": "sha384-BUDq2P684xwRBf0GDlySvob+KJg4ko8y2K7njgvYBscmEuqoVVqJ75zcTDozwkFA",

+ 3 - 36
shared/e11ty/data.mjs

@@ -1,41 +1,8 @@
 import { readFileSync } from "fs";
-import { dirname } from "path";
-import { fileURLToPath } from "url";
 import { join } from "path";
 
-const __dirname = dirname(fileURLToPath(import.meta.url))
-
-export function getCopyList () {
-	let copy = {
-		"node_modules/@tabler/core/dist": "dist",
-	}
-
-	const libs = JSON.parse(readFileSync(join(__dirname, '../data/libs.json')));
-
-	let files = []
-
-	Object.keys(libs.js).forEach((lib) => {
-		files.push(Array.isArray(libs.js[lib]) ? libs.js[lib] : [libs.js[lib]])
-	})
-
-	Object.keys(libs.css).forEach((lib) => {
-		files.push(Array.isArray(libs.css[lib]) ? libs.css[lib] : [libs.css[lib]])
-	})
-
-	Object.keys(libs['js-copy']).forEach((lib) => {
-		files.push(libs['js-copy'][lib])
-	})
-
-	files = files.flat()
-
-	files.forEach((file) => {
-		if (!file.match(/^https?/)) {
-			copy[`node_modules/${dirname(file)}`] = `libs/${dirname(file)}`;
-		}
-	})
-
-	return copy;
-}
-
 export function appData(eleventyConfig) {
+	eleventyConfig.addGlobalData("package", JSON.parse(readFileSync(join("..", "core", "package.json"), "utf-8")));
+	eleventyConfig.addGlobalData("changelog", readFileSync(join("..", "core", "CHANGELOG.md"), "utf-8"));
+	eleventyConfig.addGlobalData("libs", JSON.parse(readFileSync(join("..", "core", "libs.json"), "utf-8")));
 }

+ 7 - 7
shared/includes/layout/css.html

@@ -6,13 +6,13 @@
 
 {% if page-libs -%}
 <!-- BEGIN PAGE LEVEL STYLES -->
-	{% for lib in libs.css -%}
-		{% if page-libs contains lib[0] -%}
-			{% for file in lib[1] -%}
-				<link href="{% if file contains 'http://' or file contains 'https://' %}{{ file }}{% else %}{{ page | relative }}/libs/{% if environment == 'preview' %}{{ file | replace: '@', '' }}{% else %}{{ file }}{% endif %}{% if environment != 'development %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}" rel="stylesheet"/>
-			{% endfor -%}
-		{% endif -%}
-	{% endfor -%}
+{% for lib in libs -%}
+{% if page-libs contains lib[0] -%}
+{% for file in lib[1].css -%}
+<link href="{% if file contains 'http://' or file contains 'https://' %}{{ file }}{% else %}{{ page | relative }}/dist/libs/{{ lib[1].npm }}/{{ file }}{% if environment != 'development %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}" rel="stylesheet"/>
+{% endfor -%}
+{% endif -%}
+{% endfor -%}
 <!-- END PAGE LEVEL STYLES -->
 {% endif %}
 

+ 5 - 4
shared/includes/layout/js-libs.html

@@ -1,14 +1,15 @@
 {% if page-libs -%}
 {% capture libs-code -%}
-{% for lib in include.libs -%}
-{% if page-libs contains lib[0] -%}
-{% for file in lib[1] -%}
-<script src="{% if file contains 'http://' or file contains 'https://' %}{{ file | replace: 'GOOGLE_MAPS_KEY', google-maps-key }}{% else %}{{ page | relative }}/libs/{{ file }}{% if environment != 'development' %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}" defer></script>
+{% for lib in libs -%}
+{% if page-libs contains lib[0] and lib[1].head == include.head -%}
+{% for file in lib[1].js -%}
+<script src="{% if file contains 'http://' or file contains 'https://' %}{{ file | replace: 'GOOGLE_MAPS_KEY', google-maps-key }}{% else %}{{ page | relative }}/dist/libs/{{ lib[1].npm }}/{{ file }}{% if environment != 'development' %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}" defer></script>
 {% endfor -%}
 {% endif -%}
 {% endfor -%}
 {% endcapture -%}
 
+
 {% assign libs-code = libs-code | strip -%}
 {% if libs-code != "" -%}
 <!-- BEGIN PAGE LIBRARIES -->

+ 1 - 1
shared/includes/layout/js.html

@@ -3,7 +3,7 @@
 {% assign google-maps-key = site.googleMapsKey -%}
 {% endif -%}
 
-{% include "layout/js-libs.html" libs=libs.js %}
+{% include "layout/js-libs.html" %}
 
 <!-- BEGIN GLOBAL MANDATORY SCRIPTS -->
 <script src="{{ page | relative }}/dist/js/tabler{% if environment != 'development' %}.min{% endif %}.js{% if environment != 'development' %}?{{ 'now' | date: '%s' }}{% endif %}" defer{% if environment == 'preview' %} integrity="{{ sri.js }}"{% endif %}></script>

+ 1 - 1
shared/layouts/base.html

@@ -31,7 +31,7 @@
 	{% endif %}
 
 	{% include "layout/css.html" %}
-	{% include "layout/js-libs.html" libs=libs.js-head %}
+	{% include "layout/js-libs.html" head %}
 
 	<!-- BEGIN CUSTOM FONT -->
 	<style>

+ 3 - 3
shared/layouts/docs/default.html

@@ -149,11 +149,11 @@
 		</div>
 	</div>
 
-	{% for lib in libs.js -%}
+	{% for lib in libs -%}
 	{% if docs-libs contains lib[0] or libs.global-libs contains lib[0] or lib[0] == "clipboard" -%}
-	{% for file in lib[1] -%}
+	{% for file in lib[1].js -%}
 	<script
-		src="{% if file contains 'http://' or file contains 'https://' %}{{ file | replace: 'GOOGLE_MAPS_KEY', google-maps-key }}{% else %}/libs/{% if environment != 'development' %}{{ file | replace: '@', '' }}{% else %}{{ file }}{% endif %}{% if environment != 'development' %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}"
+		src="{% if file contains 'http://' or file contains 'https://' %}{{ file | replace: 'GOOGLE_MAPS_KEY', google-maps-key }}{% else %}/dist/libs/{{ lib[1].npm }}/{% if environment != 'development' %}{{ file | replace: '@', '' }}{% else %}{{ file }}{% endif %}{% if environment != 'development' %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}"
 	></script>
 	{% endfor -%}
 	{% endif -%}

+ 1 - 1
shared/layouts/homepage.html

@@ -4,7 +4,7 @@ layout: default
 page-header: Dashboard
 page-header-pretitle: Overview
 page-header-actions: buttons
-page-libs: [apexcharts, jsvectormap, jsvectormap-world, jsvectormap-world-merc]
+page-libs: [apexcharts, jsvectormap]
 ---
 
 {% unless site.layoutOnly %}