diff --git a/invenio_theme_tuw/build_project/.babelrc b/invenio_theme_tuw/build_project/.babelrc deleted file mode 100644 index 88b8285c4793a661fcef34e55cb42be7f0966695..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/.babelrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "presets": [ - "@babel/preset-env", - "@babel/preset-react" - ] -} diff --git a/invenio_theme_tuw/build_project/.eslintignore b/invenio_theme_tuw/build_project/.eslintignore deleted file mode 100644 index 419938129f71188fa6124b69faacf28bafb63c7d..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -build/*.js diff --git a/invenio_theme_tuw/build_project/.eslintrc.js b/invenio_theme_tuw/build_project/.eslintrc.js deleted file mode 100644 index da26aa28b97980b00356c406e9deb6120fa55682..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/.eslintrc.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of Invenio. - * Copyright (C) 2017-2018 CERN. - * - * Invenio is free software; you can redistribute it and/or modify it - * under the terms of the MIT License; see LICENSE file for more details. - */ - -module.exports = { - root: true, - parser: "@babel/eslint-parser", - parserOptions: { - sourceType: "module", - requireConfigFile: false, - }, - env: { - browser: true, - }, - // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style - extends: ["react-app", "plugin:jsx-a11y/recommended"], - plugins: ["jsx-a11y"], - // add your custom rules here - rules: { - // allow paren-less arrow functions - "arrow-parens": 0, - // allow async-await - "generator-star-spacing": 0, - // allow debugger during development - "no-debugger": process.env.NODE_ENV === "production" ? 2 : 0, - }, -}; diff --git a/invenio_theme_tuw/build_project/.npmrc b/invenio_theme_tuw/build_project/.npmrc deleted file mode 100644 index 8b65ee46d2b7f6eced5d5359bc9d43bbad8f099b..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/.npmrc +++ /dev/null @@ -1,4 +0,0 @@ -# required for pnpm to work with webpack -# https://github.com/webpack/webpack/issues/5087#issuecomment-1589749984 -node-linker=hoisted -shamefully-hoist=true diff --git a/invenio_theme_tuw/build_project/build/rspack.config.js b/invenio_theme_tuw/build_project/build/rspack.config.js deleted file mode 100644 index c2c233a5f094a97409a571c35a6cdfbcf21435bb..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/build/rspack.config.js +++ /dev/null @@ -1,251 +0,0 @@ -/* - * This file is part of Invenio. - * Copyright (C) 2017-2018 CERN. - * Copyright (C) 2022-2023 Graz University of Technology. - * Copyright (C) 2023-2025 TU Wien. - * - * Invenio is free software; you can redistribute it and/or modify it - * under the terms of the MIT License; see LICENSE file for more details. - */ -// https://birtles.blog/2024/08/14/lessons-learned-switching-to-rspack/ - -const BundleTracker = require("webpack-bundle-tracker"); -const config = require("./config"); -const path = require("path"); - -// Use rspack -const rspack = require("@rspack/core"); - -// Load aliases from config and resolve their full path -let aliases = {}; -if (config.aliases) { - aliases = Object.fromEntries( - Object.entries(config.aliases).map(([alias, alias_path]) => [ - alias, - path.resolve(config.build.context, alias_path), - ]), - ); -} - -// Create copy patterns from config -let copyPatterns = []; -if (config.copy) { - for (const copy of config.copy) { - const copyPattern = { - from: path.resolve(__dirname, copy.from), - to: path.resolve(__dirname, copy.to), - }; - - copyPatterns.push(copyPattern); - } -} - -const prod = process.env.NODE_ENV === "production"; - -const webpackConfig = { - mode: process.env.NODE_ENV, - entry: config.entry, - context: config.build.context, - stats: { - //preset: 'verbose', - warnings: true, - errors: true, - errorsCount: true, - errorStack: true, - errorDetails: true, - children: true, - }, - resolve: { - extensions: ["*", ".js", ".jsx"], - symlinks: false, - alias: aliases, - fallback: { - zlib: require.resolve("browserify-zlib"), - stream: require.resolve("stream-browserify"), - https: require.resolve("https-browserify"), - http: require.resolve("stream-http"), - url: false, - assert: false, - }, - }, - output: { - clean: true, // replaces CleanWebpackPlugin - path: config.build.assetsPath, - filename: "js/[name].[chunkhash].js", - chunkFilename: "js/[id].[chunkhash].js", - publicPath: config.build.assetsURL, - }, - optimization: { - minimizer: [ - new rspack.SwcJsMinimizerRspackPlugin({ - compress: { - ecma: 5, - // warnings: false, - // Disabled because of an issue with Uglify breaking seemingly valid code: - // https://github.com/facebook/create-react-app/issues/2376 - // Pending further investigation: - // https://github.com/mishoo/UglifyJS2/issues/2011 - comparisons: false, - // Disabled because of an issue with Terser breaking valid code: - // https://github.com/facebook/create-react-app/issues/5250 - // Pending further investigation: - // https://github.com/terser-js/terser/issues/120 - inline: 2, - }, - mangle: { - safari10: true, - }, - }), - - // would be nice, but not workable at the moment, no idea why - new rspack.LightningCssMinimizerRspackPlugin({ - minimizerOptions: { - targets: [ - "last 2 Chrome versions", - "Firefox ESR", - "last 2 Safari versions", - ], - }, - }), - ], - splitChunks: { - chunks: "all", - }, - // Extract webpack runtime and module manifest to its own file in order to - // prevent vendor hash from being updated whenever app bundle is updated. - runtimeChunk: { - name: "manifest", - }, - }, - module: { - rules: [ - { - test: require.resolve("jquery"), - use: [ - { - loader: "expose-loader", - options: { - exposes: ["$", "jQuery"], - }, - }, - ], - }, - { - test: /\.(js|jsx)$/, - exclude: [/node_modules/, /@babel(?:\/|\\{1,2})runtime/], - loader: "builtin:swc-loader", - options: { - jsc: { - parser: { - syntax: "ecmascript", - jsx: true, - }, - externalHelpers: true, - transform: { - react: { - development: !prod, - useBuiltins: true, - }, - }, - }, - env: { - targets: "Chrome >= 48", - }, - }, - }, - - { - test: /\.(scss|css)$/, - use: [ - rspack.CssExtractRspackPlugin.loader, - "css-loader", - "sass-loader", - ], - }, - { - test: /\.(less)$/, - use: [ - rspack.CssExtractRspackPlugin.loader, - "css-loader", - "less-loader", - ], - }, - - // Rspack - // Inline images smaller than 10k - { - test: /\.(avif|webp|png|jpe?g|gif|svg)(\?.*)?$/, - type: "asset/resource", - }, - // no mimetype for ".cur" in mimetype database, specify it with `generator` - { - test: /\.(cur)(\?.*)?$/, - type: "asset/inline", - generator: { - dataUrl: { - encoding: "base64", - mimetype: "image/x-icon", - }, - }, - }, - // Inline webfonts smaller than 10k - { - test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, - type: "asset/resource", - generator: { - filename: "fonts/[name].[contenthash:7].[ext]", - }, - }, - ], - }, - devtool: - process.env.NODE_ENV === "production" ? "source-map" : "inline-source-map", - plugins: [ - new rspack.DefinePlugin({ - "process.env": process.env.NODE_ENV, - }), - new rspack.CssExtractRspackPlugin({ - // Options similar to the same options in webpackOptions.output - // both options are optional - filename: "css/[name].[contenthash].css", - chunkFilename: "css/[name].[contenthash].css", - }), - - // Copying relevant CSS files as TinyMCE tries to import css files from the dist/js folder of static files - new rspack.CopyRspackPlugin({ - patterns: copyPatterns, - }), - // Automatically inject jquery - new rspack.ProvidePlugin({ - jQuery: "jquery", - $: "jquery", - jquery: "jquery", - "window.jQuery": "jquery", - }), - // Write manifest file which Python will read. - new BundleTracker({ - path: config.build.assetsPath, - filename: path.join(config.build.assetsPath, "manifest.json"), - publicPath: config.build.assetsURL, - }), - ], - performance: { hints: false }, - watchOptions: { - followSymlinks: true, - }, - experiments: { - css: false, - }, - devServer: { - hot: true, // Enable Hot Module Replacement (HMR) - liveReload: true, // Enable live reload - }, -}; - -if (process.env.npm_config_report) { - const BundleAnalyzerPlugin = - require("webpack-bundle-analyzer").BundleAnalyzerPlugin; - webpackConfig.plugins.push(new BundleAnalyzerPlugin()); -} - -module.exports = webpackConfig; diff --git a/invenio_theme_tuw/build_project/build/webpack.config.js b/invenio_theme_tuw/build_project/build/webpack.config.js deleted file mode 100644 index 236110e6ff413322cbb783e5f297abfdd79b380c..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/build/webpack.config.js +++ /dev/null @@ -1,274 +0,0 @@ -/* - * This file is part of Invenio. - * Copyright (C) 2017-2018 CERN. - * Copyright (C) 2022-2023 Graz University of Technology. - * Copyright (C) 2021-2024 TU Wien. - * - * Invenio is free software; you can redistribute it and/or modify it - * under the terms of the MIT License; see LICENSE file for more details. - */ - -const BundleTracker = require("webpack-bundle-tracker"); -const { CleanWebpackPlugin } = require("clean-webpack-plugin"); -const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); -const ESLintPlugin = require("eslint-webpack-plugin"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); -const TerserPlugin = require("terser-webpack-plugin"); -const config = require("./config"); -const path = require("node:path"); -const webpack = require("webpack"); - -// Load aliases from config and resolve their full path -let aliases = {}; -if (config.aliases) { - aliases = Object.fromEntries( - Object.entries(config.aliases).map(([alias, alias_path]) => [ - alias, - path.resolve(config.build.context, alias_path), - ]), - ); -} - -// Create copy patterns from config -let copyPatterns = []; -if (config.copy) { - for (const copy of config.copy) { - const copyPattern = { - from: path.resolve(__dirname, copy.from), - to: path.resolve(__dirname, copy.to), - }; - copyPatterns.push(copyPattern); - } -} - -const webpackConfig = { - mode: process.env.NODE_ENV, - entry: config.entry, - context: config.build.context, - stats: { - warnings: true, - errors: true, - errorsCount: true, - errorStack: true, - errorDetails: true, - children: true, - }, - resolve: { - extensions: ["*", ".js", ".jsx"], - symlinks: false, - alias: aliases, - fallback: { - zlib: require.resolve("browserify-zlib"), - stream: require.resolve("stream-browserify"), - https: require.resolve("https-browserify"), - http: require.resolve("stream-http"), - url: false, - assert: false, - }, - }, - output: { - path: config.build.assetsPath, - filename: "js/[name].[chunkhash].js", - chunkFilename: "js/[id].[chunkhash].js", - publicPath: config.build.assetsURL, - }, - optimization: { - minimizer: [ - new TerserPlugin({ - terserOptions: { - parse: { - // we want terser to parse ecma 8 code. However, we don't want it - // to apply any minification steps that turns valid ecma 5 code - // into invalid ecma 5 code. This is why the 'compress' and 'output' - // sections only apply transformations that are ecma 5 safe - // https://github.com/facebook/create-react-app/pull/4234 - ecma: 8, - }, - compress: { - ecma: 5, - warnings: false, - // Disabled because of an issue with Uglify breaking seemingly valid code: - // https://github.com/facebook/create-react-app/issues/2376 - // Pending further investigation: - // https://github.com/mishoo/UglifyJS2/issues/2011 - comparisons: false, - // Disabled because of an issue with Terser breaking valid code: - // https://github.com/facebook/create-react-app/issues/5250 - // Pending further investigation: - // https://github.com/terser-js/terser/issues/120 - inline: 2, - }, - mangle: { - safari10: true, - }, - output: { - ecma: 5, - comments: false, - // Turned on because emoji and regex is not minified properly using default - // https://github.com/facebook/create-react-app/issues/2488 - ascii_only: true, - }, - }, - }), - new CssMinimizerPlugin(), - ], - splitChunks: { - chunks: "all", - }, - // Extract webpack runtime and module manifest to its own file in order to - // prevent vendor hash from being updated whenever app bundle is updated. - runtimeChunk: { - name: "manifest", - }, - }, - module: { - rules: [ - { - test: require.resolve("jquery"), - use: [ - { - loader: "expose-loader", - options: { - exposes: ["$", "jQuery"], - }, - }, - ], - }, - { - test: /\.(js|jsx)$/, - exclude: [/node_modules/, /@babel(?:\/|\\{1,2})runtime/], - use: [ - { - loader: "esbuild-loader", - options: { - target: "es2015", - loader: "jsx", - }, - }, - ], - }, - { - test: /\.(scss|css)$/, - use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"], - }, - { - test: /\.(less)$/, - use: [ - MiniCssExtractPlugin.loader, - "css-loader", - { - loader: "less-loader", - options: { lessOptions: { math: "always" } }, - }, - ], - }, - // Inline images smaller than 10k - { - test: /\.(avif|webp|png|jpe?g|gif|svg)(\?.*)?$/, - type: "asset/inline", - parser: { - dataUrlCondition: { - maxSize: 10 * 1024, // 10kb - }, - }, - }, - // no mimetype for ".cur" in mimetype database, specify it with `generator` - { - test: /\.(cur)(\?.*)?$/, - type: "asset/inline", - generator: { - dataUrl: { - encoding: "base64", - mimetype: "image/x-icon", - }, - }, - parser: { - dataUrlCondition: { - maxSize: 10 * 1024, // 10kb - }, - }, - }, - // Inline webfonts smaller than 10k - { - test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, - type: "asset/resource", - generator: { - filename: "fonts/[name].[contenthash:7].[ext]", - }, - parser: { - dataUrlCondition: { - maxSize: 10 * 1024, // 10kb - }, - }, - }, - ], - }, - devtool: - process.env.NODE_ENV === "production" ? "source-map" : "inline-source-map", - plugins: [ - new ESLintPlugin({ - emitWarning: true, - quiet: true, - formatter: require("eslint-friendly-formatter"), - eslintPath: require.resolve("eslint"), - }), - // Pragmas - new webpack.DefinePlugin({ - "process.env": process.env.NODE_ENV, - }), - new MiniCssExtractPlugin({ - // Options similar to the same options in webpackOptions.output - // both options are optional - filename: "css/[name].[contenthash].css", - chunkFilename: "css/[name].[contenthash].css", - }), - // Removes the dist folder before each run. - new CleanWebpackPlugin({ - dry: false, - verbose: false, - dangerouslyAllowCleanPatternsOutsideProject: true, - cleanStaleWebpackAssets: process.env.NODE_ENV === "production", // keep stale assets in dev because of OS issues - }), - // Automatically inject jquery - new webpack.ProvidePlugin({ - jQuery: "jquery", - $: "jquery", - jquery: "jquery", - "window.jQuery": "jquery", - }), - // Write manifest file which Python will read. - new BundleTracker({ - path: config.build.assetsPath, - filename: path.join(config.build.assetsPath, "manifest.json"), - publicPath: config.build.assetsURL, - }), - ], - performance: { hints: false }, - snapshot: { - managedPaths: [], - }, - watchOptions: { - followSymlinks: true, - }, -}; - -// Copying relevant CSS files as e.g. TinyMCE tries to import CSS files from the dist/js folder of static files -// The copy plugin doesn't like being initialized with an empty list of patterns -if (copyPatterns.length > 0) { - const copyPlugin = new CopyWebpackPlugin({ patterns: copyPatterns }); - webpackConfig.plugins.push(copyPlugin); -} - -if (process.env.npm_config_report) { - const BundleAnalyzerPlugin = - require("webpack-bundle-analyzer").BundleAnalyzerPlugin; - webpackConfig.plugins.push(new BundleAnalyzerPlugin()); -} - -if (process.env.NODE_ENV === "development") { - const LiveReloadPlugin = require("webpack-livereload-plugin"); - webpackConfig.plugins.push(new LiveReloadPlugin()); -} - -module.exports = webpackConfig; diff --git a/invenio_theme_tuw/build_project/package.json b/invenio_theme_tuw/build_project/package.json deleted file mode 100644 index fdc7f4f040236bc2fc2488f56727e59798d99508..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "invenio-theme-tuw", - "version": "1.0.0", - "description": "Invenio Theme TUW", - "author": "Center for Research Data Management <centerrdm.team@tuwien.ac.at>", - "private": true, - "scripts": { - "start": "NODE_PRESERVE_SYMLINKS=1 NODE_ENV=development webpack --watch --progress --config ./build/webpack.config.js", - "build": "NODE_PRESERVE_SYMLINKS=1 NODE_ENV=production webpack --config ./build/webpack.config.js", - "postinstall": "patch-package" - }, - "dependencies": { - "tinymce": "^6.7.2" - }, - "devDependencies": { - "browserify-zlib": "^0.2.0", - "https-browserify": "^1.0.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "patch-package": "^6.5.0", - "@babel/core": "^7.18.0", - "ajv": "^8.12.0", - "@babel/eslint-parser": "^7.18.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-transform-runtime": "^7.18.0", - "@babel/preset-env": "^7.18.0", - "@babel/preset-react": "^7.18.0", - "@babel/register": "^7.18.0", - "@babel/runtime": "^7.18.0", - "@inveniosoftware/eslint-config-invenio": "^2.0.0", - "autoprefixer": "^10.4.0", - "esbuild-loader": "^4.2.0", - "chalk": "^5.0.0", - "clean-webpack-plugin": "^4.0.0", - "css-loader": "^6.0.0", - "css-minimizer-webpack-plugin": "^4.2.0", - "eslint-config-react-app": "^7.0.1", - "eslint-friendly-formatter": "^4.0.1", - "eslint-webpack-plugin": "^2.5.0", - "eventsource-polyfill": "^0.9.0", - "expose-loader": "^4.0.0", - "file-loader": "^6.0.0", - "function-bind": "^1.1.0", - "less": "^4.0.0", - "less-loader": "^11.0.0", - "mini-css-extract-plugin": "^2.0.0", - "ora": "^6.0.0", - "postcss-flexbugs-fixes": "^5.0.0", - "postcss-loader": "^7.0.0", - "postcss-preset-env": "^8.0.0", - "postcss-safe-parser": "^6.0.0", - "prettier": "^2.7.0", - "rimraf": "^4.0.0", - "sass": "^1.50.0", - "sass-loader": "^13.0.0", - "style-loader": "^3.0.0", - "terser-webpack-plugin": "^5.0.0", - "url-loader": "^4.1.0", - "webpack": "^5.0.0", - "webpack-bundle-analyzer": "^4.0.0", - "webpack-bundle-tracker": "^1.0.0", - "webpack-cli": "^5.0.0", - "webpack-dev-middleware": "^6.0.0", - "webpack-hot-middleware": "^2.24.0", - "webpack-livereload-plugin": "^3.0.0", - "webpack-merge": "^5.1.0", - "webpack-yam-plugin": "^1.0.0", - "copy-webpack-plugin": "^11.0.0" - }, - "engines": { - "node": ">= 18", - "npm": ">= 8" - } -} diff --git a/invenio_theme_tuw/build_project/patches/semantic-ui-less+2.5.0.patch b/invenio_theme_tuw/build_project/patches/semantic-ui-less+2.5.0.patch deleted file mode 100644 index 2e3eba5cf56cf660996ff95c12e5617e10191dac..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/patches/semantic-ui-less+2.5.0.patch +++ /dev/null @@ -1,102 +0,0 @@ -diff --git a/node_modules/semantic-ui-less/themes/default/collections/message.variables b/node_modules/semantic-ui-less/themes/default/collections/message.variables -index 10d7f98..a596ffa 100644 ---- a/node_modules/semantic-ui-less/themes/default/collections/message.variables -+++ b/node_modules/semantic-ui-less/themes/default/collections/message.variables -@@ -36,7 +36,7 @@ - @headerFontWeight: @bold; - @headerDisplay: block; - @headerDistance: 0rem; --@headerMargin: -@headerLineHeightOffset 0em @headerDistance 0em; -+@headerMargin: (-@headerLineHeightOffset) 0em @headerDistance 0em; - @headerParagraphDistance: 0.25em; - - /* Paragraph */ -diff --git a/node_modules/semantic-ui-less/themes/default/elements/header.variables b/node_modules/semantic-ui-less/themes/default/elements/header.variables -index 885715b..58699eb 100644 ---- a/node_modules/semantic-ui-less/themes/default/elements/header.variables -+++ b/node_modules/semantic-ui-less/themes/default/elements/header.variables -@@ -16,7 +16,7 @@ - @bottomMargin: @headerBottomMargin; - @margin: @topMargin 0em @bottomMargin; - --@firstMargin: -@lineHeightOffset; -+@firstMargin: (-@lineHeightOffset); - @lastMargin: 0em; - @horizontalPadding: 0em; - @verticalPadding: 0em; -diff --git a/node_modules/semantic-ui-less/themes/default/globals/site.variables b/node_modules/semantic-ui-less/themes/default/globals/site.variables -index f297aef..39f2555 100755 ---- a/node_modules/semantic-ui-less/themes/default/globals/site.variables -+++ b/node_modules/semantic-ui-less/themes/default/globals/site.variables -@@ -390,34 +390,34 @@ - This rounds @size values to the closest pixel then expresses that value in (r)em. - This ensures all size values round to exact pixels - */ --@mini : unit( round(@miniSize * @emSize) / @emSize, rem); --@tiny : unit( round(@tinySize * @emSize) / @emSize, rem); --@small : unit( round(@smallSize * @emSize) / @emSize, rem); --@medium : unit( round(@mediumSize * @emSize) / @emSize, rem); --@large : unit( round(@largeSize * @emSize) / @emSize, rem); --@big : unit( round(@bigSize * @emSize) / @emSize, rem); --@huge : unit( round(@hugeSize * @emSize) / @emSize, rem); --@massive : unit( round(@massiveSize * @emSize) / @emSize, rem); -+@mini : unit( (round(@miniSize * @emSize) / @emSize), rem); -+@tiny : unit( (round(@tinySize * @emSize) / @emSize), rem); -+@small : unit( (round(@smallSize * @emSize) / @emSize), rem); -+@medium : unit( (round(@mediumSize * @emSize) / @emSize), rem); -+@large : unit( (round(@largeSize * @emSize) / @emSize), rem); -+@big : unit( (round(@bigSize * @emSize) / @emSize), rem); -+@huge : unit( (round(@hugeSize * @emSize) / @emSize), rem); -+@massive : unit( (round(@massiveSize * @emSize) / @emSize), rem); - - /* em */ --@relativeMini : unit( round(@miniSize * @emSize) / @emSize, em); --@relativeTiny : unit( round(@tinySize * @emSize) / @emSize, em); --@relativeSmall : unit( round(@smallSize * @emSize) / @emSize, em); --@relativeMedium : unit( round(@mediumSize * @emSize) / @emSize, em); --@relativeLarge : unit( round(@largeSize * @emSize) / @emSize, em); --@relativeBig : unit( round(@bigSize * @emSize) / @emSize, em); --@relativeHuge : unit( round(@hugeSize * @emSize) / @emSize, em); --@relativeMassive : unit( round(@massiveSize * @emSize) / @emSize, em); -+@relativeMini : unit( (round(@miniSize * @emSize) / @emSize), em); -+@relativeTiny : unit( (round(@tinySize * @emSize) / @emSize), em); -+@relativeSmall : unit( (round(@smallSize * @emSize) / @emSize), em); -+@relativeMedium : unit( (round(@mediumSize * @emSize) / @emSize), em); -+@relativeLarge : unit( (round(@largeSize * @emSize) / @emSize), em); -+@relativeBig : unit( (round(@bigSize * @emSize) / @emSize), em); -+@relativeHuge : unit( (round(@hugeSize * @emSize) / @emSize), em); -+@relativeMassive : unit( (round(@massiveSize * @emSize) / @emSize), em); - - /* rem */ --@absoluteMini : unit( round(@miniSize * @emSize) / @emSize, rem); --@absoluteTiny : unit( round(@tinySize * @emSize) / @emSize, rem); --@absoluteSmall : unit( round(@smallSize * @emSize) / @emSize, rem); --@absoluteMedium : unit( round(@mediumSize * @emSize) / @emSize, rem); --@absoluteLarge : unit( round(@largeSize * @emSize) / @emSize, rem); --@absoluteBig : unit( round(@bigSize * @emSize) / @emSize, rem); --@absoluteHuge : unit( round(@hugeSize * @emSize) / @emSize, rem); --@absoluteMassive : unit( round(@massiveSize * @emSize) / @emSize, rem); -+@absoluteMini : unit( (round(@miniSize * @emSize) / @emSize), rem); -+@absoluteTiny : unit( (round(@tinySize * @emSize) / @emSize), rem); -+@absoluteSmall : unit( (round(@smallSize * @emSize) / @emSize), rem); -+@absoluteMedium : unit( (round(@mediumSize * @emSize) / @emSize), rem); -+@absoluteLarge : unit( (round(@largeSize * @emSize) / @emSize), rem); -+@absoluteBig : unit( (round(@bigSize * @emSize) / @emSize), rem); -+@absoluteHuge : unit( (round(@hugeSize * @emSize) / @emSize), rem); -+@absoluteMassive : unit( (round(@massiveSize * @emSize) / @emSize), rem); - - /*------------------- - Icons -diff --git a/node_modules/semantic-ui-less/themes/default/modules/search.variables b/node_modules/semantic-ui-less/themes/default/modules/search.variables -index 362bc13..e6668d5 100644 ---- a/node_modules/semantic-ui-less/themes/default/modules/search.variables -+++ b/node_modules/semantic-ui-less/themes/default/modules/search.variables -@@ -51,7 +51,7 @@ - - /* Result Content */ - @resultTitleFont: @headerFont; --@resultTitleMargin: -@headerLineHeightOffset 0em 0em; -+@resultTitleMargin: (-@headerLineHeightOffset) 0em 0em; - @resultTitleFontWeight: @bold; - @resultTitleFontSize: @relativeMedium; - @resultTitleColor: @darkTextColor; diff --git a/invenio_theme_tuw/build_project/rspack-package.json b/invenio_theme_tuw/build_project/rspack-package.json deleted file mode 100644 index 3c54353c91ad74deb05ced21d1224190c6423704..0000000000000000000000000000000000000000 --- a/invenio_theme_tuw/build_project/rspack-package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "invenio-assets", - "version": "2.0.0", - "description": "Invenio assets", - "author": "CERN <info@inveniosoftware.org>", - "private": true, - "scripts": { - "start": "NODE_PRESERVE_SYMLINKS=1 rspack --mode development --watch --config ./build/rspack.config.js", - "build": "NODE_PRESERVE_SYMLINKS=1 rspack --mode production --config ./build/rspack.config.js", - "postinstall": "patch-package" - }, - "dependencies": { - "tinymce": "^6.7.2" - }, - "devDependencies": { - "@rspack/cli": ">1.0.0", - "@rspack/core": ">1.0.0", - "@rspack/dev-server": ">1.0.0", - "@swc/core": "^1.6.13", - "@swc/helpers": "^0.5.11", - "sass-loader": "^16.0.0", - "swc-loader": "^0.2.6", - - "@babel/core": "^7.18.0", - "@babel/eslint-parser": "^7.18.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-transform-runtime": "^7.18.0", - "@babel/preset-env": "^7.18.0", - "@babel/preset-react": "^7.18.0", - "@babel/register": "^7.18.0", - "@babel/runtime": "^7.18.0", - "@inveniosoftware/eslint-config-invenio": "^2.0.0", - "ajv": "^8.12.0", - "autoprefixer": "^10.4.0", - "babel-loader": "^9.0.0", - "browserify-zlib": "^0.2.0", - "chalk": "^5.0.0", - "css-loader": "^6.0.0", - "eslint-config-react-app": "^7.0.1", - "eslint-friendly-formatter": "^4.0.1", - "eslint-webpack-plugin": "^2.5.0", - "eventsource-polyfill": "^0.9.0", - "expose-loader": "^4.0.0", - "file-loader": "^6.0.0", - "function-bind": "^1.1.0", - "https-browserify": "^1.0.0", - "less": "^4.0.0", - "less-loader": "^11.0.0", - "ora": "^6.0.0", - "patch-package": "^6.5.0", - "postcss-flexbugs-fixes": "^5.0.0", - "postcss-loader": "^7.0.0", - "postcss-preset-env": "^8.0.0", - "postcss-safe-parser": "^6.0.0", - "prettier": "^2.7.0", - "rimraf": "^4.0.0", - "sass": "^1.50.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "style-loader": "^3.0.0", - "url-loader": "^4.1.0", - "webpack-bundle-analyzer": "^4.0.0", - "webpack-bundle-tracker": "^1.0.0" - }, - "engines": { - "node": ">=18", - "npm": ">=8" - } -} diff --git a/invenio_theme_tuw/config.py b/invenio_theme_tuw/config.py index aad31bb36352053a177c3cc700e196163f3cd8c7..c285524a5fb3d3c66233b60834815ec3648d311a 100644 --- a/invenio_theme_tuw/config.py +++ b/invenio_theme_tuw/config.py @@ -97,7 +97,7 @@ OAUTHCLIENT_LOGIN_USER_TEMPLATE = "invenio_theme_tuw/overrides/login_user.html" # ================ # See https://flask-webpackext.readthedocs.io/en/latest/configuration.html -WEBPACKEXT_PROJECT = "invenio_theme_tuw.webpack:rspack_project" +WEBPACKEXT_PROJECT = "invenio_assets.webpack:rspack_project" APP_RDM_DETAIL_SIDE_BAR_TEMPLATES = [ "invenio_app_rdm/records/details/side_bar/manage_menu.html", diff --git a/invenio_theme_tuw/webpack.py b/invenio_theme_tuw/webpack.py index 38991ae74a42ea2ddd5f58cc1e969b8f2dd67014..f2ea550926eab41ddf671539aa0674c5fccacd84 100644 --- a/invenio_theme_tuw/webpack.py +++ b/invenio_theme_tuw/webpack.py @@ -7,51 +7,7 @@ """JS/CSS Webpack bundles for TU Wien theme.""" -from flask_webpackext import WebpackBundleProject as WebpackBundleProjectBase from invenio_assets.webpack import WebpackThemeBundle -from pywebpack import bundles_from_entry_point - - -class WebpackBundleProject(WebpackBundleProjectBase): - """Flask webpack bundle project.""" - - def __init__(self, import_name, base_package_json="package.json", **kwargs): - """Constructor.""" - super().__init__(import_name, **kwargs) - self._package_json_source_path = base_package_json - - -# our override for the frontend build project: -# we override the build configuration (based on the one provided in `invenio-assets`) -# in order to customize its behaviour, e.g. allowing the collection of '*.webp' images. -# -# implementation note, in case you'll need to touch this: -# `project.path` is overridden by the `_PathStorageMixin` in `flask_webpackext` and -# will point to the directory specified by `app.config['WEBPACKEXT_PROJECT_BUILDDIR']`, -# which # will be used as the working directory for `npm`, and also specifies where -# the assets from each module should be copied to. -# -# rough explanation of the arguments: -# * import_name: the import name of the current module, will be used to determine -# the base path where to look for the provided assets/configs -# * project_folder: the sub-directory in which to look for the `package.json` -# * config_path: where to put npm's `config.json` (inside the `project_folder`) -# * bundles: the bundles that should be used for building the frontend -webpack_project = WebpackBundleProject( - import_name=__name__, - project_folder="build_project", - config_path="build/config.json", - bundles=bundles_from_entry_point("invenio_assets.webpack"), -) -project = webpack_project - -rspack_project = WebpackBundleProject( - import_name=__name__, - base_package_json="rspack-package.json", - project_folder="build_project", - config_path="build/config.json", - bundles=bundles_from_entry_point("invenio_assets.webpack"), -) # the definition of our own bundle of frontend assets, which will be collected and # built by `pywebpack`/`flask_webpackext`/`invenio_assets`.