');
var target = get('target');
html.push(rowRef('Target', target ? target.value : null));
var alignMode = get('alignMode');
if (alignMode) html.push(renderField(compIndex, alignMode));
// 边距
var edgeKeys = ['top', 'bottom', 'left', 'right'];
for (var e = 0; e < edgeKeys.length; e++) {
var ek = edgeKeys[e];
var ef = get(ek);
if (ef) html.push(renderField(compIndex, ef));
}
return html.join('');
}
function segBtn(compIndex, mode, text, active) {
return '';
}
InspectorPanel.prototype._bindSections = function () {
var heads = this.body.querySelectorAll('.pw-insp-sec-head[data-toggle]');
for (var i = 0; i < heads.length; i++) {
heads[i].addEventListener('click', function (ev) {
var sec = ev.currentTarget.parentNode;
if (sec) sec.classList.toggle('open');
});
}
};
InspectorPanel.prototype._bindFields = function () {
var self = this;
var body = this.body;
if (!body || !this._bridge || !this._uuid) return;
// Widget 对齐分段
var segs = body.querySelectorAll('.pw-seg-btn[data-widget-mode]');
for (var s = 0; s < segs.length; s++) {
(function (btn) {
btn.addEventListener('click', function () {
var mode = btn.getAttribute('data-widget-mode') || 'none';
var group = btn.parentNode;
var isH = group && group.getAttribute('data-widget-h');
var compIndex = btn.getAttribute('data-widget-comp') || '0';
var flags = {};
if (isH) {
flags.isAlignLeft = mode === 'left' || mode === 'left-center' || mode === 'stretch';
flags.isAlignHorizontalCenter = mode === 'left-center' || mode === 'center' || mode === 'right-center';
flags.isAlignRight = mode === 'right' || mode === 'right-center' || mode === 'stretch';
} else {
flags.isAlignTop = mode === 'top' || mode === 'top-center' || mode === 'stretch';
flags.isAlignVerticalCenter = mode === 'top-center' || mode === 'center' || mode === 'bottom-center';
flags.isAlignBottom = mode === 'bottom' || mode === 'bottom-center' || mode === 'stretch';
}
var keys = Object.keys(flags);
for (var k = 0; k < keys.length; k++) {
self._bridge.call('node.set', {
uuid: self._uuid,
fid: 'c' + compIndex + '_' + keys[k],
value: flags[keys[k]],
});
}
// UI 更新
if (group) {
var btns = group.querySelectorAll('.pw-seg-btn');
for (var b = 0; b < btns.length; b++) {
btns[b].classList.toggle('active', btns[b] === btn);
}
}
});
})(segs[s]);
}
var inputs = body.querySelectorAll('[data-fid]');
for (var i = 0; i < inputs.length; i++) {
(function (el) {
var run = function () {
var fid = el.getAttribute('data-fid');
var value;
if (el.tagName === 'BUTTON' && el.getAttribute('data-align')) {
var on = !el.classList.contains('active');
el.classList.toggle('active', on);
self._bridge.call('node.set', { uuid: self._uuid, fid: fid, value: !!on });
return;
}
if (el.tagName === 'SELECT') value = parseEnumValue(el);
else if (el.type === 'checkbox') {
value = !!el.checked;
var lab = el.closest ? el.closest('.pw-insp-check') : null;
if (lab) lab.classList.toggle('on', value);
}
else if (el.type === 'color') value = el.value;
else if (el.type === 'number') value = parseFloat(el.value);
else value = el.value;
self._bridge.call('node.set', { uuid: self._uuid, fid: fid, value: value });
if (el.getAttribute('data-color-pair')) {
var siblings = el.parentNode ? el.parentNode.querySelectorAll('[data-fid="' + fid + '"]') : [];
for (var si = 0; si < siblings.length; si++) {
if (siblings[si] === el) continue;
var nv = String(value);
if (nv.charAt(0) !== '#' && siblings[si].type === 'color') nv = '#' + nv;
if (siblings[si].type === 'color') siblings[si].value = nv.slice(0, 7);
else siblings[si].value = nv;
}
}
};
el.addEventListener('change', run);
if (el.type !== 'checkbox' && el.tagName !== 'SELECT' && el.tagName !== 'BUTTON') {
el.addEventListener('input', run);
}
})(inputs[i]);
}
};
function parseEnumValue(el) {
var opt = el.options[el.selectedIndex];
if (!opt) return el.value;
var raw = opt.getAttribute('data-num');
if (raw != null && raw !== '') return Number(raw);
return el.value;
}
function labelHtml(label) {
var text = label == null ? '' : String(label);
return '';
}
function rowText(label, id, value) {
return '
' + labelHtml(label) +
'
';
}
function rowNum(label, id, value) {
return '
' + labelHtml(label) +
'
';
}
function rowCheck(label, id, value) {
return '
' + labelHtml(label) +
'
';
}
function rowEnum(label, id, value, options) {
var opts = [];
for (var i = 0; i < options.length; i++) {
var o = options[i];
var selected = o.value === value || String(o.value) === String(value);
opts.push('');
}
return '
' + labelHtml(label) +
'
';
}
function rowRef(label, value) {
var v = value || {};
var text = (v.kind ? v.kind + ' · ' : '') + (v.name || '(空)');
return '