Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions packages/base/src/theming/applyTheme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { fireThemeLoaded } from "./ThemeLoaded.js";
import { attachCustomThemeStylesToHead, getThemeRoot } from "../config/ThemeRoot.js";
import { DEFAULT_THEME } from "../generated/AssetParameters.js";
import { getCurrentRuntimeIndex } from "../Runtimes.js";
import { getLoadBaseThemingCSSVariables } from "../config/Theme.js";

// eslint-disable-next-line
export let _lib = "ui5";
Expand Down Expand Up @@ -34,10 +33,6 @@ const loadComponentPackages = async (theme: string, externalThemeName?: string)
const registeredPackages = getRegisteredPackages();

const packagesStylesPromises = [...registeredPackages].map(async packageName => {
if (getLoadBaseThemingCSSVariables() !== true && packageName === `${BASE_THEME_PACKAGE}-raw`) {
return;
}

if (packageName === BASE_THEME_PACKAGE) {
return;
}
Expand Down
8 changes: 2 additions & 6 deletions packages/theming/package-scripts.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,8 @@ module.exports = {
src: `ui5nps-script "${TOOLS_LIB}copy-and-watch/index.js" "src/**/*.{json}" dist/`,
typescript: "tsc",
postcss: `ui5nps-script "${TOOLS_LIB}/css-processors/css-processor-themes.mjs"`,
jsonImports: {
default: "ui5nps build.jsonImports.scoped build.jsonImports.raw",
scoped: `ui5nps-script "${jsonImportsScript}" src/themes src/generated/json-imports`,
raw: `ui5nps-script "${jsonImportsScript}" src/themes src/generated/json-imports -raw`,
}
jsonImports: `ui5nps-script "${jsonImportsScript}" src/themes src/generated/json-imports`,
},
generateReport: `ui5nps-script "${generateReportScript}"`,
generateReport: `node "${generateReportScript}"`,
},
};
1 change: 0 additions & 1 deletion packages/theming/src/Assets-fetch.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
// The theming package provides theming assets only
import "./generated/json-imports/Themes-fetch.js";
import "./generated/json-imports/Themes-raw-fetch.js";
1 change: 0 additions & 1 deletion packages/theming/src/Assets-node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,3 @@
*/

import "./generated/json-imports/Themes-node.js";
import "./generated/json-imports/Themes-raw-node.js";
1 change: 0 additions & 1 deletion packages/theming/src/Assets.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
// The theming package provides theming assets only
import "./generated/json-imports/Themes.js";
import "./generated/json-imports/Themes-raw.js";
13 changes: 11 additions & 2 deletions packages/tools/lib/css-processors/shared.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,20 @@ const DEFAULT_THEME = assets.themes.default;

const getDefaultThemeCode = packageName => {
return `import { registerThemePropertiesLoader } from "@ui5/webcomponents-base/dist/asset-registries/Themes.js";

import { getLoadBaseThemingCSSVariables } from "@ui5/webcomponents-base/dist/config/Theme.js";
import defaultThemeBase from "@ui5/webcomponents-theming/dist/generated/themes/${DEFAULT_THEME}/parameters-bundle.css.js";
import defaultTheme from "./${DEFAULT_THEME}/parameters-bundle.css.js";

registerThemePropertiesLoader("@" + "ui5" + "/" + "webcomponents-theming", "${DEFAULT_THEME}", async () => defaultThemeBase);
registerThemePropertiesLoader("@" + "ui5" + "/" + "webcomponents-theming", "${DEFAULT_THEME}", async () => {
if (getLoadBaseThemingCSSVariables()) {
const rawCss = (await import("@ui5/webcomponents-theming/dist/generated/themes/${DEFAULT_THEME}/parameters-bundle-raw.css.js")).default;

return \`\$\{defaultThemeBase\}\\n\$\{rawCss\}\`;
}

return defaultThemeBase;
});

registerThemePropertiesLoader(${ packageName.split("").map(c => `"${c}"`).join (" + ") }, "${DEFAULT_THEME}", async () => defaultTheme);
`;
};
Expand Down
36 changes: 28 additions & 8 deletions packages/tools/lib/generate-json-imports/themes.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ const ext = isTypeScript ? 'ts' : 'js';

const generate = async (argv) => {
const inputFolder = path.normalize(argv[2]);
const outputSuffix = argv[4] || "";
const outputFileDynamic = path.normalize(`${argv[3]}/Themes${outputSuffix}.${ext}`);
const outputFileDynamicImportJSONAttr = path.normalize(`${argv[3]}/Themes${outputSuffix}-node.${ext}`);
const outputFileFetchMetaResolve = path.normalize(`${argv[3]}/Themes${outputSuffix}-fetch.${ext}`);
const outputFileDynamic = path.normalize(`${argv[3]}/Themes.${ext}`);
const outputFileDynamicImportJSONAttr = path.normalize(`${argv[3]}/Themes-node.${ext}`);
const outputFileFetchMetaResolve = path.normalize(`${argv[3]}/Themes-fetch.${ext}`);

// All supported optional themes
const allThemes = assets.themes.all;
Expand All @@ -25,9 +24,30 @@ const generate = async (argv) => {
const packageName = JSON.parse(await fs.readFile("package.json")).name;

const availableThemesArray = `[${themesOnFileSystem.map(theme => `"${theme}"`).join(", ")}]`;
const dynamicImportLines = themesOnFileSystem.map(theme => `\t\tcase "${theme}": return (await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle" */"../assets/themes/${theme}/parameters-bundle${outputSuffix}.css.json")).default;`).join("\n");
const dynamicImportJSONAttrLines = themesOnFileSystem.map(theme => `\t\tcase "${theme}": return (await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle" */"../assets/themes/${theme}/parameters-bundle${outputSuffix}.css.json", {with: { type: 'json'}})).default;`).join("\n");
const fetchMetaResolveLines = themesOnFileSystem.map(theme => `\t\tcase "${theme}": return (await fetch(new URL("../assets/themes/${theme}/parameters-bundle${outputSuffix}.css.json", import.meta.url))).json();`).join("\n");

const dynamicImportLines = themesOnFileSystem.map(theme => `case "${theme}": {
const scopedCss = (await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle" */"../assets/themes/${theme}/parameters-bundle.css.json")).default;
const rawCss = ${packageName === "@ui5/webcomponents-theming" ? `(await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle-raw" */"../assets/themes/${theme}/parameters-bundle-raw.css.json")).default` : "\"\""};

return \`\$\{scopedCss\}\\n\$\{rawCss\}\`;
}
`).join("\n");

const dynamicImportJSONAttrLines = themesOnFileSystem.map(theme => `case "${theme}": {
const scopedCss = (await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle" */"../assets/themes/${theme}/parameters-bundle.css.json", {with: { type: 'json'}})).default;
const rawCss = ${packageName === "@ui5/webcomponents-theming" ? `(await import(/* webpackChunkName: "${packageName.replace("@", "").replace("/", "-")}-${theme.replace("_", "-")}-parameters-bundle-raw" */"../assets/themes/${theme}/parameters-bundle-raw.css.json", {with: { type: 'json'}})).default` : "\"\""};

return \`\$\{scopedCss\}\\n\$\{rawCss\}\`;
}
`).join("\n");

const fetchMetaResolveLines = themesOnFileSystem.map(theme => `case "${theme}": {
const scopedCss = (await fetch(new URL("../assets/themes/${theme}/parameters-bundle.css.json", import.meta.url))).json();
const rawCss = ${packageName === "@ui5/webcomponents-theming" ? `(await fetch(new URL("../assets/themes/${theme}/parameters-bundle-raw.css.json", import.meta.url))).json()` : "\"\""};

return \`\$\{scopedCss\}\\n\$\{rawCss\}\`;
}
`).join("\n");

// dynamic imports file content
const contentDynamic = function (lines) {
Expand All @@ -50,7 +70,7 @@ const loadAndCheck = async (themeName) => {
};

${availableThemesArray}
.forEach(themeName => registerThemePropertiesLoader(${`${packageName + outputSuffix}`.split("").map(c => `"${c}"`).join(" + ")}, themeName, loadAndCheck));
.forEach(themeName => registerThemePropertiesLoader(${packageName.split("").map(c => `"${c}"`).join(" + ")}, themeName, loadAndCheck));
`;
}

Expand Down
Loading