#!/bin/sh set -eu root_dir=$(cd "$(dirname "$0")" && pwd) . "$root_dir/../shared/build-lib.sh" src_html="$root_dir/template.html" output_dir="$root_dir/dist" output_html="$output_dir/archive.html" mkdir -p "$output_dir" ensure_exists "$src_html" css_temp=$(mktemp) js_raw=$(mktemp) js_temp=$(mktemp) cleanup() { rm -f "$css_temp" "$js_raw" "$js_temp"; } trap cleanup EXIT # CSS files to concatenate in order concat_files \ "../shared/base.css" \ "../shared/toast.css" \ "css/base.css" \ "css/layout.css" \ "css/components.css" \ "css/table.css" \ "css/print.css" \ > "$css_temp" # JavaScript files to concatenate in order. Vendored libraries first # (jszip, docx-preview) so window.JSZip + window.docx are defined before # any tool code runs — replaces the previous CDN loadLibrary() calls in # table.js + export.js. xlsx is intentionally still CDN-loaded on demand # (~900 KB; too large to inline). concat_files \ "../shared/vendor/jszip.min.js" \ "../shared/vendor/docx-preview.min.js" \ "../shared/zddc.js" \ "../shared/hash.js" \ "../shared/theme.js" \ "../shared/toast.js" \ "../shared/preview-lib.js" \ "js/init.js" \ "js/parser.js" \ "js/source.js" \ "js/hash.js" \ "js/drag-drop.js" \ "js/directory.js" \ "../shared/zddc-filter.js" \ "js/filtering.js" \ "js/table.js" \ "js/export.js" \ "js/presets.js" \ "js/url-state.js" \ "js/events.js" \ "js/app.js" \ "../shared/help.js" \ > "$js_raw" # Escape ' tag. Required for any tool with template literals. escape_js_close_tags "$js_raw" "$js_temp" compute_build_label "archive" "${1:-}" "${2:-}" # Process template: inject CSS/JS, substitute build label, strip CDN refs. awk -v css_file="$css_temp" -v js_file="$js_temp" -v build_label="$build_label" -v is_red="$is_red" -v favicon_uri="$favicon_data_uri" ' /\{\{CSS_PLACEHOLDER\}\}/ { while ((getline line < css_file) > 0) print line close(css_file) next } /\{\{JS_PLACEHOLDER\}\}/ { while ((getline line < js_file) > 0) print line close(js_file) next } /\{\{BUILD_LABEL\}\}/ { if (is_red == "1") { gsub(/\{\{BUILD_LABEL\}\}/, "" build_label "") } else { gsub(/\{\{BUILD_LABEL\}\}/, build_label) } print next } /\{\{FAVICON\}\}/ { gsub(/\{\{FAVICON\}\}/, favicon_uri) print next } /