8a80d8801a
* refactoring server for screens & page layout restructure * Disable API calls, UI placeholders. * buildPropsHierarchy is gone & screen has url * Recent changes. * router * router * updated git-ignore to reinclude server/utilities/builder * modified cli - budi new create new file structure * Fix uuid import. * prettier fixes * prettier fixes * prettier fixes * page/screen restructure.. broken tests * all tests passing at last * screen routing tests * Working screen editor and preview. * Render page previews to the screen. * Key input lists to ensure new array references when updating styles. * Ensure the iframe html and body fills the container. * Save screens via the API. * Get all save APIs almost working. * Write pages.json to disk. * Use correct API endpoint for saving styles. * Differentiate between saving properties of screens and pages. * Add required fields to default pages layouts. * Add _css default property to newly created screens. * Add default code property. * page layout / screens - app output Co-authored-by: pngwn <pnda007@gmail.com>
43 lines
1 KiB
JavaScript
43 lines
1 KiB
JavaScript
const crypto = require("crypto")
|
|
const { ensureDir, emptyDir, writeFile } = require("fs-extra")
|
|
const { join } = require("path")
|
|
|
|
module.exports.convertCssToFiles = async (publicPagePath, pkg) => {
|
|
const cssDir = join(publicPagePath, "css")
|
|
await ensureDir(cssDir)
|
|
await emptyDir(cssDir)
|
|
|
|
for (let screen of pkg.screens) {
|
|
if (!screen._css) continue
|
|
if (screen._css.trim().length === 0) {
|
|
delete screen._css
|
|
continue
|
|
}
|
|
screen._css = await createCssFile(cssDir, screen._css)
|
|
}
|
|
|
|
if (pkg.page._css) {
|
|
pkg.page._css = await createCssFile(cssDir, pkg.page._css)
|
|
}
|
|
}
|
|
|
|
module.exports.getHashedCssPaths = (cssDir, _css) => {
|
|
const fileName =
|
|
crypto
|
|
.createHash("md5")
|
|
.update(_css)
|
|
.digest("hex") + ".css"
|
|
|
|
const filePath = join(cssDir, fileName)
|
|
const url = `/css/${fileName}`
|
|
|
|
return { filePath, url }
|
|
}
|
|
|
|
const createCssFile = async (cssDir, _css) => {
|
|
const { filePath, url } = module.exports.getHashedCssPaths(cssDir, _css)
|
|
|
|
await writeFile(filePath, _css)
|
|
|
|
return url
|
|
}
|