✅ COMPLETED: 1. Dockerfile uses port 80 (astro preview) 2. BaseLayout imports globals.css 3. globals.css with Tailwind v4 @theme syntax 4. index.astro has Header, Footer, FixedContact 5. All image references fixed to existing files 6. Hero uses hdpe_pipe_main.jpg 7. Product cards use hdpe001.jpg 8. pt-20 on main for fixed header ✅ TESTED LOCALLY: - Build: 15 pages in 1.27s - Docker build successful - Port 80 working - Images load - CSS works Ready for Easypanel deployment.
50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
import Blob from './index.js'
|
|
|
|
const _File = class File extends Blob {
|
|
#lastModified = 0
|
|
#name = ''
|
|
|
|
/**
|
|
* @param {*[]} fileBits
|
|
* @param {string} fileName
|
|
* @param {{lastModified?: number, type?: string}} options
|
|
*/// @ts-ignore
|
|
constructor (fileBits, fileName, options = {}) {
|
|
if (arguments.length < 2) {
|
|
throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`)
|
|
}
|
|
super(fileBits, options)
|
|
|
|
if (options === null) options = {}
|
|
|
|
// Simulate WebIDL type casting for NaN value in lastModified option.
|
|
const lastModified = options.lastModified === undefined ? Date.now() : Number(options.lastModified)
|
|
if (!Number.isNaN(lastModified)) {
|
|
this.#lastModified = lastModified
|
|
}
|
|
|
|
this.#name = String(fileName)
|
|
}
|
|
|
|
get name () {
|
|
return this.#name
|
|
}
|
|
|
|
get lastModified () {
|
|
return this.#lastModified
|
|
}
|
|
|
|
get [Symbol.toStringTag] () {
|
|
return 'File'
|
|
}
|
|
|
|
static [Symbol.hasInstance] (object) {
|
|
return !!object && object instanceof Blob &&
|
|
/^(File)$/.test(object[Symbol.toStringTag])
|
|
}
|
|
}
|
|
|
|
/** @type {typeof globalThis.File} */// @ts-ignore
|
|
export const File = _File
|
|
export default File
|