(function () {
globalThis.__htuiListeners = {};
globalThis.__htuiElements = {};
globalThis.__htuiTimers = {};
globalThis.__htuiFetchResolvers = {};
globalThis.__htuiClassListCache = {};
globalThis.__htuiDatasetCache = {};
globalThis.__htuiMQLs = [];
function index(p) {
if (typeof p !== 'string') return NaN;
var n = Number(p);
return String(n) === p ? n : NaN;
}
var PROTO_OWN = Object.getOwnPropertyNames(Object.prototype);
function isProtoOwn(p) {
return PROTO_OWN.indexOf(p) !== -1;
}
var NAME_REST = /^[A-Za-z_\u0080-\uFFFF][A-Za-z0-9_.\-\u0080-\uFFFF]*$/;
function isValidName(name) {
return NAME_REST.test(name);
}
globalThis.__htuiAddListener = function (nodeId, type, fn) {
var entry = globalThis.__htuiListeners[nodeId] || (globalThis.__htuiListeners[nodeId] = {});
var arr = entry[type] || (entry[type] = []);
if (arr.indexOf(fn) === -1) { arr.push(fn); }
};
globalThis.__htuiGetListeners = function (nodeId, type) {
var entry = globalThis.__htuiListeners[nodeId];
return entry ? (entry[type] || []) : [];
};
globalThis.__htuiClearAllListeners = function (nodeId) {
delete globalThis.__htuiListeners[nodeId];
};
globalThis.__htuiAttrHandlers = {};
globalThis.__htuiSetAttrHandler = function (nodeId, type, fn) {
var entry = globalThis.__htuiAttrHandlers[nodeId] || (globalThis.__htuiAttrHandlers[nodeId] = {});
entry[type] = fn;
};
globalThis.__htuiClearAttrHandler = function (nodeId, type) {
var entry = globalThis.__htuiAttrHandlers[nodeId];
if (entry) { delete entry[type]; }
};
globalThis.__htuiClearAllAttrHandlers = function (nodeId) {
delete globalThis.__htuiAttrHandlers[nodeId];
};
globalThis.__htuiLiveList = function (getLen, getItem) {
var target = {
item: function (i) {
i = Number(i) | 0;
return (i >= 0 && i < getLen()) ? getItem(i) : null;
},
forEach: function (cb, self) {
for (var i = 0; i < getLen(); i++) cb.call(self, getItem(i), i, this);
}
};
return new Proxy(target, {
get: function (t, p) {
if (p === 'length') return getLen();
var i = index(p);
if (i >= 0 && i < getLen()) return getItem(i);
if (p === Symbol.iterator) return function () {
var i = 0;
return { next: function () {
return i < getLen()
? { value: getItem(i++), done: false }
: { value: undefined, done: true };
} };
};
return Reflect.get(t, p);
},
has: function (t, p) {
if (p === 'length') return true;
var i = index(p);
if (i >= 0 && i < getLen()) return true;
return Reflect.has(t, p);
},
ownKeys: function () {
var keys = [];
for (var i = 0; i < getLen(); i++) keys.push(String(i));
keys.push('length');
return keys;
},
getOwnPropertyDescriptor: function (t, p) {
if (p === 'length') return { get: getLen, enumerable: false, configurable: true };
var i = index(p);
if (i >= 0 && i < getLen()) {
return { value: getItem(i), writable: true, enumerable: true, configurable: true };
}
return Reflect.getOwnPropertyDescriptor(t, p);
},
set: function () { return false; },
deleteProperty: function () { return false; }
});
};
globalThis.__htuiDataset = function (get, set, remove, keys) {
function kebab(p) {
return String(p).replace(/[A-Z]/g, function (c) { return '-' + c.toLowerCase(); });
}
var target = {
toString: function () { return '[object DOMStringMap]'; }
};
return new Proxy(target, {
get: function (t, p) {
if (typeof p === 'symbol' || isProtoOwn(p)) return Reflect.get(t, p);
return get(kebab(p));
},
set: function (t, p, v) {
if (typeof p === 'symbol' || isProtoOwn(p)) return Reflect.set(t, p, v);
var k = kebab(p);
if (!isValidName(k)) {
throw new SyntaxError("'" + p + "' is not a valid name.");
}
set(k, String(v));
return true;
},
has: function (t, p) {
if (typeof p === 'symbol' || isProtoOwn(p)) return Reflect.has(t, p);
return get(kebab(p)) !== undefined;
},
deleteProperty: function (t, p) {
if (typeof p === 'symbol') return Reflect.deleteProperty(t, p);
if (isProtoOwn(p)) return true;
var k = kebab(p);
if (!isValidName(k)) return true;
remove(k);
return true;
},
ownKeys: function () {
return keys();
},
getOwnPropertyDescriptor: function (t, p) {
if (typeof p !== 'string' || isProtoOwn(p)) return undefined;
var v = get(kebab(p));
if (v === undefined) return undefined;
return { value: v, writable: true, enumerable: true, configurable: true };
}
});
};
globalThis.__htuiClassList = function (getAttr, setAttr) {
var cacheRaw = null;
var cacheTokens = [];
function tokens() {
var raw = getAttr();
if (raw !== cacheRaw) {
cacheRaw = raw;
cacheTokens = raw ? raw.split(/\s+/).filter(Boolean) : [];
}
return cacheTokens;
}
function write(list) {
setAttr(list.join(' '));
}
function check(token) {
if (token === '') throw new SyntaxError('The token provided must not be empty.');
if (/[ \t\n\f\r]/.test(token)) {
throw new SyntaxError('The token provided contains HTML space characters.');
}
}
function makeIter(step) {
var it = { next: step };
it[Symbol.iterator] = function () { return it; };
return it;
}
var target = {
item: function (i) {
var t = tokens();
i = Number(i) | 0;
return (i >= 0 && i < t.length) ? t[i] : null;
},
contains: function (token) {
token = String(token);
check(token);
return tokens().indexOf(token) !== -1;
},
add: function () {
var t = tokens();
var changed = false;
for (var i = 0; i < arguments.length; i++) {
var tok = String(arguments[i]);
check(tok);
if (t.indexOf(tok) === -1) { t.push(tok); changed = true; }
}
if (changed) write(t);
},
remove: function () {
var t = tokens();
var changed = false;
for (var i = 0; i < arguments.length; i++) {
var tok = String(arguments[i]);
check(tok);
var p = t.indexOf(tok);
if (p !== -1) { t.splice(p, 1); changed = true; }
}
if (changed) write(t);
},
toggle: function (token, force) {
token = String(token);
check(token);
var t = tokens();
var p = t.indexOf(token);
var present = p !== -1;
if (force === undefined) {
if (present) t.splice(p, 1); else t.push(token);
write(t);
return !present;
}
if (force) {
if (!present) { t.push(token); write(t); }
return true;
}
if (present) { t.splice(p, 1); write(t); }
return false;
},
replace: function (oldToken, newToken) {
oldToken = String(oldToken);
newToken = String(newToken);
check(oldToken);
check(newToken);
var t = tokens();
var p = t.indexOf(oldToken);
if (p === -1) return false;
t.splice(p, 1);
if (t.indexOf(newToken) === -1) t.push(newToken);
write(t);
return true;
},
forEach: function (cb, self) {
var t = tokens();
for (var i = 0; i < t.length; i++) cb.call(self, t[i], i, this);
},
toString: function () {
return getAttr() || '';
},
entries: function () {
var i = 0;
var t = tokens();
return makeIter(function () {
return i < t.length ? { value: [i, t[i++]], done: false } : { value: undefined, done: true };
});
},
keys: function () {
var i = 0;
var t = tokens();
return makeIter(function () {
return i < t.length ? { value: i++, done: false } : { value: undefined, done: true };
});
},
values: function () {
var i = 0;
var t = tokens();
return makeIter(function () {
return i < t.length ? { value: t[i++], done: false } : { value: undefined, done: true };
});
}
};
target[Symbol.iterator] = target.values;
Object.defineProperty(target, 'value', {
get: function () { return getAttr() || ''; },
set: function (v) { setAttr(String(v)); },
enumerable: false,
configurable: true
});
return new Proxy(target, {
get: function (t, p) {
if (p === 'length') return tokens().length;
var i = index(p);
if (i >= 0) {
var tk = tokens();
if (i < tk.length) return tk[i];
}
return Reflect.get(t, p);
},
has: function (t, p) {
if (p === 'length') return true;
var i = index(p);
return i >= 0 ? i < tokens().length : Reflect.has(t, p);
},
ownKeys: function () {
var keys = [];
var t = tokens();
for (var i = 0; i < t.length; i++) keys.push(String(i));
keys.push('length');
return keys;
},
getOwnPropertyDescriptor: function (t, p) {
if (p === 'length') return { get: function () { return tokens().length; }, enumerable: false, configurable: true };
var i = index(p);
if (i >= 0) {
var tk = tokens();
if (i < tk.length) {
return { value: tk[i], writable: true, enumerable: true, configurable: true };
}
}
return Reflect.getOwnPropertyDescriptor(t, p);
},
set: function (t, p, v) {
if (p === 'value') return Reflect.set(t, 'value', v);
return false;
},
deleteProperty: function () { return false; }
});
};
})();