From 3282e95db0207ee133d1e98d9771dec9d83b0fc4 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 02 四月 2026 16:24:38 +0800
Subject: [PATCH] 2026.4.2 新增专题管理功能

---
 miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js |  140 ----------------------------------------------
 1 files changed, 1 insertions(+), 139 deletions(-)

diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js b/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js
index d9b15b7..ff1a6e2 100644
--- a/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js
@@ -1,139 +1 @@
-import { isPlainObject, toObject } from './flatTool';
-import { canUseVirtualHost } from '../version';
-const RawLifeCycles = ['Created', 'Attached', 'Ready', 'Moved', 'Detached', 'Error'];
-const NativeLifeCycles = RawLifeCycles.map((k) => k.toLowerCase());
-const ComponentNativeProps = [
-    'properties',
-    'data',
-    'observers',
-    'methods',
-    'behaviors',
-    ...NativeLifeCycles,
-    'relations',
-    'externalClasses',
-    'options',
-    'lifetimes',
-    'pageLifeTimes',
-    'definitionFilter',
-];
-export const toComponent = function toComponent(options) {
-    const { relations, behaviors = [], externalClasses = [] } = options;
-    if (options.properties) {
-        Object.keys(options.properties).forEach((k) => {
-            let opt = options.properties[k];
-            if (!isPlainObject(opt)) {
-                opt = { type: opt };
-            }
-            options.properties[k] = opt;
-        });
-        const ariaProps = [
-            { key: 'ariaHidden', type: Boolean },
-            { key: 'ariaRole', type: String },
-            { key: 'ariaLabel', type: String },
-            { key: 'ariaLabelledby', type: String },
-            { key: 'ariaDescribedby', type: String },
-            { key: 'ariaBusy', type: Boolean },
-        ];
-        ariaProps.forEach(({ key, type }) => {
-            options.properties[key] = {
-                type,
-            };
-        });
-        options.properties.style = { type: String, value: '' };
-        options.properties.customStyle = { type: String, value: '' };
-    }
-    if (!options.methods)
-        options.methods = {};
-    if (!options.lifetimes)
-        options.lifetimes = {};
-    const inits = {};
-    if (relations) {
-        const getRelations = (relation, path) => Behavior({
-            created() {
-                Object.defineProperty(this, `$${relation}`, {
-                    get: () => {
-                        const nodes = this.getRelationNodes(path) || [];
-                        return relation === 'parent' ? nodes[0] : nodes;
-                    },
-                });
-            },
-        });
-        const map = {};
-        Object.keys(relations).forEach((path) => {
-            const comp = relations[path];
-            const relation = ['parent', 'ancestor'].includes(comp.type) ? 'parent' : 'children';
-            const mixin = getRelations(relation, path);
-            map[relation] = mixin;
-        });
-        behaviors.push(...Object.keys(map).map((key) => map[key]));
-    }
-    options.behaviors = [...behaviors];
-    options.externalClasses = ['class', ...externalClasses];
-    Object.getOwnPropertyNames(options).forEach((k) => {
-        const desc = Object.getOwnPropertyDescriptor(options, k);
-        if (!desc)
-            return;
-        if (NativeLifeCycles.indexOf(k) < 0 && typeof desc.value === 'function') {
-            Object.defineProperty(options.methods, k, desc);
-            delete options[k];
-        }
-        else if (ComponentNativeProps.indexOf(k) < 0) {
-            inits[k] = desc;
-        }
-        else if (NativeLifeCycles.indexOf(k) >= 0) {
-            options.lifetimes[k] = options[k];
-        }
-    });
-    if (Object.keys(inits).length) {
-        const oldCreated = options.lifetimes.created;
-        const oldAttached = options.lifetimes.attached;
-        const { controlledProps = [] } = options;
-        options.lifetimes.created = function (...args) {
-            Object.defineProperties(this, inits);
-            if (oldCreated)
-                oldCreated.apply(this, args);
-        };
-        options.lifetimes.attached = function (...args) {
-            if (oldAttached)
-                oldAttached.apply(this, args);
-            controlledProps.forEach(({ key }) => {
-                const defaultKey = `default${key.replace(/^(\w)/, (m, m1) => m1.toUpperCase())}`;
-                const props = this.properties;
-                if (props[key] == null) {
-                    this._selfControlled = true;
-                }
-                if (props[key] == null && props[defaultKey] != null) {
-                    this.setData({
-                        [key]: props[defaultKey],
-                    });
-                }
-            });
-        };
-        options.methods._trigger = function (evtName, detail, opts) {
-            const target = controlledProps.find((item) => item.event == evtName);
-            if (target) {
-                const { key } = target;
-                if (this._selfControlled) {
-                    this.setData({
-                        [key]: detail[key],
-                    });
-                }
-            }
-            this.triggerEvent(evtName, detail, opts);
-        };
-    }
-    return options;
-};
-export const wxComponent = function wxComponent() {
-    return function (constructor) {
-        class WxComponent extends constructor {
-        }
-        const current = new WxComponent();
-        current.options = current.options || {};
-        if (canUseVirtualHost()) {
-            current.options.virtualHost = true;
-        }
-        const obj = toComponent(toObject(current));
-        Component(obj);
-    };
-};
+import{toObject}from"./flatTool";import{isPlainObject}from"../validator";import{canUseVirtualHost}from"../version";const RawLifeCycles=["Created","Attached","Ready","Moved","Detached","Error"],NativeLifeCycles=RawLifeCycles.map(e=>e.toLowerCase()),ComponentNativeProps=["properties","data","observers","methods","behaviors",...NativeLifeCycles,"relations","externalClasses","options","lifetimes","pageLifeTimes","definitionFilter"];export const toComponent=function(e){const{relations:t,behaviors:o=[],externalClasses:i=[]}=e;if(e.properties){Object.keys(e.properties).forEach(t=>{let o=e.properties[t];isPlainObject(o)||(o={type:o}),e.properties[t]=o});[{key:"ariaHidden",type:Boolean},{key:"ariaRole",type:String},{key:"ariaLabel",type:String},{key:"ariaLabelledby",type:String},{key:"ariaDescribedby",type:String},{key:"ariaBusy",type:Boolean}].forEach(({key:t,type:o})=>{e.properties[t]={type:o}}),e.properties.style={type:String,value:""},e.properties.customStyle={type:String,value:""}}e.methods||(e.methods={}),e.lifetimes||(e.lifetimes={});const s={};if(t){const e=(e,t)=>Behavior({created(){Object.defineProperty(this,`$${e}`,{get:()=>{const o=this.getRelationNodes(t)||[];return"parent"===e?o[0]:o}})}}),i={};Object.keys(t).forEach(o=>{const s=t[o],r=["parent","ancestor"].includes(s.type)?"parent":"children",n=e(r,o);i[r]=n}),o.push(...Object.keys(i).map(e=>i[e]))}if(e.behaviors=[...o],e.externalClasses=["class",...i],Object.getOwnPropertyNames(e).forEach(t=>{const o=Object.getOwnPropertyDescriptor(e,t);o&&(NativeLifeCycles.indexOf(t)<0&&"function"==typeof o.value?(Object.defineProperty(e.methods,t,o),delete e[t]):ComponentNativeProps.indexOf(t)<0?s[t]=o:NativeLifeCycles.indexOf(t)>=0&&(e.lifetimes[t]=e[t]))}),Object.keys(s).length){const t=e.lifetimes.created,o=e.lifetimes.attached,{controlledProps:i=[]}=e;e.lifetimes.created=function(...e){Object.defineProperties(this,s),t&&t.apply(this,e)},e.lifetimes.attached=function(...e){o&&o.apply(this,e),i.forEach(({key:e})=>{const t=`default${e.replace(/^(\w)/,(e,t)=>t.toUpperCase())}`,o=this.properties;null==o[e]&&(this._selfControlled=!0),null==o[e]&&null!=o[t]&&this.setData({[e]:o[t]})})},e.methods._trigger=function(e,t,o){const s=i.find(t=>t.event===e);if(s){const{key:e}=s;this._selfControlled&&this.setData({[e]:t[e]})}this.triggerEvent(e,t,o)}}return e};export const wxComponent=function(){return function(e){const t=new class extends e{};t.options=t.options||{},canUseVirtualHost()&&(t.options.virtualHost=!0);const o=toComponent(toObject(t));Component(o)}};
\ No newline at end of file

--
Gitblit v1.9.3