chore: checkpoint local changes

This commit is contained in:
kkfluous
2026-08-25 12:37:53 +08:00
parent 52dde9195a
commit 6eea47b706
48 changed files with 26015 additions and 0 deletions
@@ -0,0 +1,84 @@
;(function () {
function applyRootSizing() {
var urlParams = new URLSearchParams(window.location.search);
var scale = urlParams.get('scale');
var width = urlParams.get('width');
var height = urlParams.get('height');
var rootElement = document.getElementById('root');
if (!rootElement) {
return;
}
if (scale) {
var scaleValue = parseFloat(scale);
if (!Number.isNaN(scaleValue) && scaleValue > 0) {
rootElement.style.transform = 'scale(' + scaleValue + ')';
rootElement.style.transformOrigin = 'top left';
}
}
if (width) {
var widthValue = parseInt(width, 10);
if (!Number.isNaN(widthValue) && widthValue > 0) {
rootElement.style.width = widthValue + 'px';
}
}
if (height) {
var heightValue = parseInt(height, 10);
if (!Number.isNaN(heightValue) && heightValue > 0) {
rootElement.style.height = heightValue + 'px';
}
}
}
function renderComponent(Component, props) {
var rootElement = document.getElementById('root');
if (!rootElement) {
console.error('[Html Template] 找不到 #root 元素');
return;
}
if (!window.React || !window.ReactDOM) {
console.error('[Html Template] React 或 ReactDOM 未加载');
return;
}
var finalProps = props || {
container: rootElement,
config: {},
data: {},
events: {},
};
try {
if (typeof window.ReactDOM.createRoot === 'function') {
window.ReactDOM.createRoot(rootElement).render(window.React.createElement(Component, finalProps));
return;
}
if (typeof window.ReactDOM.render === 'function') {
window.ReactDOM.render(window.React.createElement(Component, finalProps), rootElement);
return;
}
throw new Error('当前 ReactDOM 版本不支持 createRoot/render');
} catch (error) {
console.error('[Html Template] 渲染失败:', error);
}
}
applyRootSizing();
window.__AXHUB_DEFINE_COMPONENT__ = function (Component) {
window.UserComponent = Component;
return Component;
};
window.HtmlTemplateBootstrap = {
renderComponent: renderComponent,
React: window.React,
ReactDOM: window.ReactDOM,
};
})();