@eva/plugin-renderer-text 2.1.0-beta.13 → 2.1.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EVA.plugin.renderer.text.js +312 -112
- package/dist/EVA.plugin.renderer.text.min.js +1 -1
- package/dist/plugin-renderer-text.cjs.js +373 -119
- package/dist/plugin-renderer-text.cjs.prod.js +1 -1
- package/dist/plugin-renderer-text.d.ts +18 -0
- package/dist/plugin-renderer-text.esm.js +376 -122
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),t=require("pixi.js"),o=require("@eva/plugin-renderer"),i=require("@eva/renderer-adapter");function r(e,t,o,i){var r,n=arguments.length,p=n<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(e,t,o,i);else for(var d=e.length-1;d>=0;d--)(r=e[d])&&(p=(n<3?r(p):n>3?r(t,o,p):r(t,o))||p);return n>3&&p&&Object.defineProperty(t,o,p),p}function n(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function p(e,t,o,i){return new(o||(o=Promise))(function(r,n){function p(e){try{s(i.next(e))}catch(e){n(e)}}function d(e){try{s(i.throw(e))}catch(e){n(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(p,d)}s((i=i.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class d{}r([e.type("string"),n("design:type",Object)],d.prototype,"fontFamily",void 0),r([e.type("number"),n("design:type",Object)],d.prototype,"fontSize",void 0),r([e.Field({type:"color"}),n("design:type",Object)],d.prototype,"fill",void 0),r([e.type("string"),n("design:type",String)],d.prototype,"align",void 0),r([e.type("number"),n("design:type",Number)],d.prototype,"letterSpacing",void 0),r([e.type("number"),n("design:type",Number)],d.prototype,"padding",void 0),r([e.Field({type:"color"}),n("design:type",Object)],d.prototype,"stroke",void 0),r([e.type("number"),n("design:type",Number)],d.prototype,"strokeThickness",void 0),r([e.type("string"),n("design:type",String)],d.prototype,"fontWeight",void 0),r([e.type("string"),n("design:type",String)],d.prototype,"fontStyle",void 0);class s extends e.Component{constructor(){super(...arguments),this.text="",this.style={}}init(e){this.style=Object.assign({fontSize:24,fill:"#000000",fontFamily:"Arial"},null==e?void 0:e.style),e&&(this.text=e.text)}}s.componentName="BitmapText",r([e.type("string"),n("design:type",String)],s.prototype,"text",void 0),r([e.Field(()=>d),n("design:type",Object)],s.prototype,"style",void 0);class y{}r([e.type("number"),n("design:type",Number)],y.prototype,"alpha",void 0),r([e.Field({type:"color"}),n("design:type",Object)],y.prototype,"color",void 0),r([e.type("string"),n("design:type",String)],y.prototype,"join",void 0),r([e.type("number"),n("design:type",Number)],y.prototype,"miterLimit",void 0),r([e.type("number"),n("design:type",Number)],y.prototype,"width",void 0);class l{}r([e.type("number"),n("design:type",Number)],l.prototype,"alpha",void 0),r([e.type("number"),n("design:type",Number)],l.prototype,"angle",void 0),r([e.type("number"),n("design:type",Number)],l.prototype,"blur",void 0),r([e.Field({type:"color"}),n("design:type",Object)],l.prototype,"color",void 0),r([e.type("number"),n("design:type",Number)],l.prototype,"distance",void 0),r([e.type("boolean"),n("design:type",Boolean)],l.prototype,"enabled",void 0);class a{}r([e.type("string"),n("design:type",String)],a.prototype,"align",void 0),r([e.type("boolean"),n("design:type",Boolean)],a.prototype,"breakWords",void 0),r([e.Field(()=>l),n("design:type",Object)],a.prototype,"dropShadow",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"dropShadowAlpha",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"dropShadowAngle",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"dropShadowBlur",void 0),r([e.Field({type:"color"}),n("design:type",Object)],a.prototype,"dropShadowColor",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"dropShadowDistance",void 0),r([e.Field({type:"color"}),n("design:type",Object)],a.prototype,"fill",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"fillGradientType",void 0),r([e.type("number"),n("design:type",Array)],a.prototype,"fillGradientStops",void 0),r([e.type("string"),n("design:type",Object)],a.prototype,"fontFamily",void 0),r([e.type("number"),n("design:type",Object)],a.prototype,"fontSize",void 0),r([e.type("string"),n("design:type",String)],a.prototype,"fontStyle",void 0),r([e.type("string"),n("design:type",String)],a.prototype,"fontVariant",void 0),r([e.type("string"),n("design:type",String)],a.prototype,"fontWeight",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"leading",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"letterSpacing",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"lineHeight",void 0),r([e.type("string"),n("design:type",String)],a.prototype,"lineJoin",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"miterLimit",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"padding",void 0),r([e.Field(()=>y),n("design:type",Object)],a.prototype,"stroke",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"strokeThickness",void 0),r([e.type("string"),n("design:type",String)],a.prototype,"textBaseline",void 0),r([e.type("string"),n("design:type",String)],a.prototype,"verticalAlign",void 0),r([e.type("boolean"),n("design:type",Boolean)],a.prototype,"trim",void 0),r([e.type("string"),n("design:type",String)],a.prototype,"whiteSpace",void 0),r([e.type("boolean"),n("design:type",Boolean)],a.prototype,"wordWrap",void 0),r([e.type("number"),n("design:type",Number)],a.prototype,"wordWrapWidth",void 0);class c extends e.Component{constructor(e){super(e),this.text="",this.style={},this.init(e)}init(e){const o=new t.TextStyle({fontSize:20}),i={};for(const e in o)0===e.indexOf("_")&&(i[e.substring(1)]=o[e]);delete i.styleKey,this.style=i,e&&(this.text=e.text,Object.assign(this.style,e.style))}}c.componentName="Text",r([e.type("string"),n("design:type",String)],c.prototype,"text",void 0),r([e.Field(()=>a),n("design:type",Object)],c.prototype,"style",void 0);class g{}r([e.type("string"),n("design:type",String)],g.prototype,"scaleMode",void 0),r([e.type("number"),n("design:type",Number)],g.prototype,"resolution",void 0);class m{}r([e.type("string"),n("design:type",Object)],m.prototype,"fontFamily",void 0),r([e.type("number"),n("design:type",Object)],m.prototype,"fontSize",void 0),r([e.type("string"),n("design:type",String)],m.prototype,"fontWeight",void 0),r([e.type("string"),n("design:type",String)],m.prototype,"fontStyle",void 0),r([e.type("string"),n("design:type",String)],m.prototype,"fontVariant",void 0),r([e.type("string"),n("design:type",String)],m.prototype,"align",void 0),r([e.type("string"),n("design:type",String)],m.prototype,"textBaseline",void 0),r([e.Field({type:"color"}),n("design:type",Object)],m.prototype,"fill",void 0),r([e.Field({type:"color"}),n("design:type",Object)],m.prototype,"stroke",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"strokeThickness",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"lineHeight",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"letterSpacing",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"padding",void 0),r([e.type("boolean"),n("design:type",Boolean)],m.prototype,"wordWrap",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"wordWrapWidth",void 0),r([e.type("boolean"),n("design:type",Boolean)],m.prototype,"breakWords",void 0),r([e.type("string"),n("design:type",String)],m.prototype,"whiteSpace",void 0),r([e.type("boolean"),n("design:type",Boolean)],m.prototype,"dropShadow",void 0),r([e.Field({type:"color"}),n("design:type",Object)],m.prototype,"dropShadowColor",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"dropShadowAlpha",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"dropShadowAngle",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"dropShadowBlur",void 0),r([e.type("number"),n("design:type",Number)],m.prototype,"dropShadowDistance",void 0),r([e.type("object"),n("design:type",Array)],m.prototype,"cssOverrides",void 0),r([e.type("object"),n("design:type",Object)],m.prototype,"tagStyles",void 0),r([e.type("boolean"),n("design:type",Boolean)],m.prototype,"trim",void 0);class u extends e.Component{constructor(){super(...arguments),this.text="",this.style={},this.textureStyle={}}init(e){this.style=Object.assign({fontSize:24,fill:"#000000",fontFamily:"Arial"},null==e?void 0:e.style),this.textureStyle=Object.assign({scaleMode:"linear",resolution:window.devicePixelRatio||1},null==e?void 0:e.textureStyle),e&&(this.text=e.text)}}u.componentName="HTMLText",r([e.type("string"),n("design:type",String)],u.prototype,"text",void 0),r([e.Field(()=>m),n("design:type",Object)],u.prototype,"style",void 0),r([e.Field(()=>g),n("design:type",Object)],u.prototype,"textureStyle",void 0);let h=class extends o.Renderer{constructor(){super(...arguments),this.name="Text",this.texts={}}init(){this.renderSystem=this.game.getSystem(o.RendererSystem),this.renderSystem.rendererManager.register(this)}componentChanged(t){return p(this,void 0,void 0,function*(){const o="Text"===t.componentName,i="HTMLText"===t.componentName,r="BitmapText"===t.componentName;if(o||i||r)if(t.type===e.OBSERVER_TYPE.ADD)o?yield this.addTextComponent(t):i?yield this.addHTMLTextComponent(t):yield this.addBitmapTextComponent(t),this.setSize(t);else if(t.type===e.OBSERVER_TYPE.REMOVE)this.containerManager.getContainer(t.gameObject.id).removeChild(this.texts[t.gameObject.id].text),this.texts[t.gameObject.id].text.destroy({children:!0}),delete this.texts[t.gameObject.id];else{this.change(t);const e=t.component;if("style"===t.prop.prop[0]&&e.style&&e.style.fontFamily){const{text:o}=this.texts[t.gameObject.id];yield this.waitForFontResource(o,t,e.style.fontFamily)}this.setSize(t)}})}addTextComponent(e){return p(this,void 0,void 0,function*(){const t=e.component,o=this.processStyle(t.style),r=o.fontFamily;delete o.fontFamily;const n=r?"":t.text,p=new i.Text(n,o);this.containerManager.getContainer(e.gameObject.id).addChildAt(p,0),this.texts[e.gameObject.id]={text:p,component:t},r&&(yield this.waitForFontResource(p,e,r))})}addHTMLTextComponent(e){return p(this,void 0,void 0,function*(){const t=e.component,o=this.processStyle(t.style),r=o.fontFamily;delete o.fontFamily;const n=r?"":t.text,p=new i.HTMLText(Object.assign({text:n,style:o},t.textureStyle&&{textureStyle:t.textureStyle}));this.containerManager.getContainer(e.gameObject.id).addChildAt(p,0),this.texts[e.gameObject.id]={text:p,component:t},r&&(yield this.waitForFontResource(p,e,r))})}addBitmapTextComponent(e){return p(this,void 0,void 0,function*(){const t=e.component,o=this.processStyle(t.style),r=o.fontFamily;delete o.fontFamily;const n=r?"":t.text,p=new i.BitmapText(n,o);this.containerManager.getContainer(e.gameObject.id).addChildAt(p,0),this.texts[e.gameObject.id]={text:p,component:t},r&&(yield this.waitForFontResource(p,e,r))})}waitForFontResource(t,o,i){return p(this,void 0,void 0,function*(){if(i)try{const r=Array.isArray(i)?i[0]:i,n=this.increaseAsyncId(o.gameObject.id);if(yield e.resource.getResource(r),!this.validateAsyncId(o.gameObject.id,n))return;const p=this.texts[o.gameObject.id].component;t.style.fontFamily=i,t.text=p.text}catch(e){console.warn(`字体资源 ${i} 加载失败:`,e)}})}processStyle(e){const o=Object.assign({},e);if(o.strokeThickness){const e=o.stroke;o.stroke={color:e,width:o.strokeThickness},delete o.strokeThickness}const i=null!=o.dropShadowColor||null!=o.dropShadowDistance||null!=o.dropShadowAngle||null!=o.dropShadowAlpha||null!=o.dropShadowBlur;if(o.dropShadow&&i){const e=o.dropShadow&&"object"==typeof o.dropShadow&&!Array.isArray(o.dropShadow)?Object.assign({},o.dropShadow):{};null!=o.dropShadowColor&&(e.color=o.dropShadowColor),null!=o.dropShadowDistance&&(e.distance=o.dropShadowDistance),null!=o.dropShadowAngle&&(e.angle=o.dropShadowAngle),null!=o.dropShadowAlpha&&(e.alpha=o.dropShadowAlpha),null!=o.dropShadowBlur&&(e.blur=o.dropShadowBlur),o.dropShadow=e}if(delete o.dropShadowColor,delete o.dropShadowDistance,delete o.dropShadowAngle,delete o.dropShadowAlpha,delete o.dropShadowBlur,Array.isArray(o.fill)&&(o.fill=o.fill[0]),Array.isArray(o.fillGradientStops)){let e;e=null==o.fontSize?t.TextStyle.defaultTextStyle.fontSize:"string"==typeof o.fontSize?parseInt(o.fontSize,10):o.fontSize;const i=new t.FillGradient(0,0,0,1.7*e),r=o.fillGradientStops.map(e=>t.Color.shared.setValue(e).toNumber());r.forEach((e,t)=>{const o=t/(r.length-1);i.addColorStop(o,e)}),o.fill={fill:i},delete o.fillGradientStops}return o}change(e){const{text:t,component:o}=this.texts[e.gameObject.id],r="HTMLText"===e.componentName;if("text"===e.prop.prop[0])t.text=o.text;else if("style"===e.prop.prop[0]){const e=this.processStyle(o.style);Object.assign(t.style,e)}else if("textureStyle"===e.prop.prop[0]&&r){const r=o,n=this.containerManager.getContainer(e.gameObject.id),p=n.getChildIndex(t);n.removeChild(t),t.destroy({children:!0});const d=new i.HTMLText({text:r.text,style:r.style,textureStyle:r.textureStyle});n.addChildAt(d,p),this.texts[e.gameObject.id].text=d}}setSize(e){const{transform:t}=e.gameObject;if(!t)return;const{text:o}=this.texts[e.gameObject.id],i=o.getSize();t.size.width=i.width,t.size.height=i.height}};h.systemName="Text",h=r([e.decorators.componentObserver({Text:["text",{prop:["style"],deep:!0}],HTMLText:["text",{prop:["style"],deep:!0},{prop:["textureStyle"],deep:!0}],BitmapText:["text",{prop:["style"],deep:!0}]})],h);var b=h;exports.BitmapText=s,exports.HTMLText=u,exports.Text=c,exports.TextSystem=b;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@eva/eva.js"),t=require("pixi.js"),o=require("@eva/plugin-renderer"),n=require("@eva/renderer-adapter");function i(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(o[n[i]]=e[n[i]])}return o}function r(e,t,o,n){var i,r=arguments.length,s=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,n);else for(var p=e.length-1;p>=0;p--)(i=e[p])&&(s=(r<3?i(s):r>3?i(t,o,s):i(t,o))||s);return r>3&&s&&Object.defineProperty(t,o,s),s}function s(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function p(e,t,o,n){return new(o||(o=Promise))(function(i,r){function s(e){try{d(n.next(e))}catch(e){r(e)}}function p(e){try{d(n.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(s,p)}d((n=n.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class d{}r([e.type("string"),s("design:type",Object)],d.prototype,"fontFamily",void 0),r([e.type("number"),s("design:type",Object)],d.prototype,"fontSize",void 0),r([e.Field({type:"color"}),s("design:type",Object)],d.prototype,"fill",void 0),r([e.type("string"),s("design:type",String)],d.prototype,"align",void 0),r([e.type("number"),s("design:type",Number)],d.prototype,"letterSpacing",void 0),r([e.type("number"),s("design:type",Number)],d.prototype,"padding",void 0),r([e.Field({type:"color"}),s("design:type",Object)],d.prototype,"stroke",void 0),r([e.type("number"),s("design:type",Number)],d.prototype,"strokeThickness",void 0),r([e.type("string"),s("design:type",String)],d.prototype,"fontWeight",void 0),r([e.type("string"),s("design:type",String)],d.prototype,"fontStyle",void 0);class l extends e.Component{constructor(){super(...arguments),this.text="",this.style={}}init(e){this.style=Object.assign({fontSize:24,fill:"#000000",fontFamily:"Arial"},null==e?void 0:e.style),e&&(this.text=e.text)}}l.componentName="BitmapText",r([e.type("string"),s("design:type",String)],l.prototype,"text",void 0),r([e.Field(()=>d),s("design:type",Object)],l.prototype,"style",void 0);class y{}r([e.type("number"),s("design:type",Number)],y.prototype,"alpha",void 0),r([e.Field({type:"color"}),s("design:type",Object)],y.prototype,"color",void 0),r([e.type("string"),s("design:type",String)],y.prototype,"join",void 0),r([e.type("number"),s("design:type",Number)],y.prototype,"miterLimit",void 0),r([e.type("number"),s("design:type",Number)],y.prototype,"width",void 0);class a{}r([e.type("number"),s("design:type",Number)],a.prototype,"alpha",void 0),r([e.type("number"),s("design:type",Number)],a.prototype,"angle",void 0),r([e.type("number"),s("design:type",Number)],a.prototype,"blur",void 0),r([e.Field({type:"color"}),s("design:type",Object)],a.prototype,"color",void 0),r([e.type("number"),s("design:type",Number)],a.prototype,"distance",void 0),r([e.type("boolean"),s("design:type",Boolean)],a.prototype,"enabled",void 0);class c{}r([e.type("string"),s("design:type",String)],c.prototype,"align",void 0),r([e.type("boolean"),s("design:type",Boolean)],c.prototype,"breakWords",void 0),r([e.Field(()=>a),s("design:type",Object)],c.prototype,"dropShadow",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"dropShadowAlpha",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"dropShadowAngle",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"dropShadowBlur",void 0),r([e.Field({type:"color"}),s("design:type",Object)],c.prototype,"dropShadowColor",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"dropShadowDistance",void 0),r([e.Field({type:"color"}),s("design:type",Object)],c.prototype,"fill",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"fillGradientType",void 0),r([e.type("number"),s("design:type",Array)],c.prototype,"fillGradientStops",void 0),r([e.type("string"),s("design:type",Object)],c.prototype,"fontFamily",void 0),r([e.type("number"),s("design:type",Object)],c.prototype,"fontSize",void 0),r([e.type("string"),s("design:type",String)],c.prototype,"fontStyle",void 0),r([e.type("string"),s("design:type",String)],c.prototype,"fontVariant",void 0),r([e.type("string"),s("design:type",String)],c.prototype,"fontWeight",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"leading",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"letterSpacing",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"lineHeight",void 0),r([e.type("string"),s("design:type",String)],c.prototype,"lineJoin",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"miterLimit",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"padding",void 0),r([e.Field(()=>y),s("design:type",Object)],c.prototype,"stroke",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"strokeThickness",void 0),r([e.type("string"),s("design:type",String)],c.prototype,"textBaseline",void 0),r([e.type("string"),s("design:type",String)],c.prototype,"verticalAlign",void 0),r([e.type("boolean"),s("design:type",Boolean)],c.prototype,"trim",void 0),r([e.type("string"),s("design:type",String)],c.prototype,"whiteSpace",void 0),r([e.type("boolean"),s("design:type",Boolean)],c.prototype,"wordWrap",void 0),r([e.type("number"),s("design:type",Number)],c.prototype,"wordWrapWidth",void 0);class u extends e.Component{constructor(e){super(e),this.text="",this.style={},this.init(e)}init(e){const o=new t.TextStyle({fontSize:20}),n={};for(const e in o)0===e.indexOf("_")&&(n[e.substring(1)]=o[e]);delete n.styleKey,this.style=n,e&&(this.text=e.text,Object.assign(this.style,e.style))}}u.componentName="Text",r([e.type("string"),s("design:type",String)],u.prototype,"text",void 0),r([e.Field(()=>c),s("design:type",Object)],u.prototype,"style",void 0);class g{}r([e.type("string"),s("design:type",String)],g.prototype,"scaleMode",void 0),r([e.type("number"),s("design:type",Number)],g.prototype,"resolution",void 0);class m{}r([e.type("string"),s("design:type",Object)],m.prototype,"fontFamily",void 0),r([e.type("number"),s("design:type",Object)],m.prototype,"fontSize",void 0),r([e.type("string"),s("design:type",String)],m.prototype,"fontWeight",void 0),r([e.type("string"),s("design:type",String)],m.prototype,"fontStyle",void 0),r([e.type("string"),s("design:type",String)],m.prototype,"fontVariant",void 0),r([e.type("string"),s("design:type",String)],m.prototype,"align",void 0),r([e.type("string"),s("design:type",String)],m.prototype,"textBaseline",void 0),r([e.Field({type:"color"}),s("design:type",Object)],m.prototype,"fill",void 0),r([e.Field({type:"color"}),s("design:type",Object)],m.prototype,"stroke",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"strokeThickness",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"lineHeight",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"letterSpacing",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"padding",void 0),r([e.type("boolean"),s("design:type",Boolean)],m.prototype,"wordWrap",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"wordWrapWidth",void 0),r([e.type("boolean"),s("design:type",Boolean)],m.prototype,"breakWords",void 0),r([e.type("string"),s("design:type",String)],m.prototype,"whiteSpace",void 0),r([e.type("boolean"),s("design:type",Boolean)],m.prototype,"dropShadow",void 0),r([e.Field({type:"color"}),s("design:type",Object)],m.prototype,"dropShadowColor",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"dropShadowAlpha",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"dropShadowAngle",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"dropShadowBlur",void 0),r([e.type("number"),s("design:type",Number)],m.prototype,"dropShadowDistance",void 0),r([e.type("object"),s("design:type",Array)],m.prototype,"cssOverrides",void 0),r([e.type("object"),s("design:type",Object)],m.prototype,"tagStyles",void 0),r([e.type("boolean"),s("design:type",Boolean)],m.prototype,"trim",void 0);class h extends e.Component{constructor(){super(...arguments),this.text="",this.style={},this.textureStyle={}}init(e){this.style=Object.assign({fontSize:24,fill:"#000000",fontFamily:"Arial"},null==e?void 0:e.style),this.textureStyle=Object.assign({scaleMode:"linear",resolution:window.devicePixelRatio||1},null==e?void 0:e.textureStyle),e&&(this.text=e.text)}}h.componentName="HTMLText",r([e.type("string"),s("design:type",String)],h.prototype,"text",void 0),r([e.Field(()=>m),s("design:type",Object)],h.prototype,"style",void 0),r([e.Field(()=>g),s("design:type",Object)],h.prototype,"textureStyle",void 0);let v=class extends o.Renderer{constructor(){super(...arguments),this.name="Text",this.presentationAddFlushEnabled=!0,this.texts={},this.retired=!1,this.pendingHTMLTextComponents={},this.fontIdentityIds=new WeakMap,this.nextFontIdentityId=1}init(){this.renderSystem=this.game.getSystem(o.RendererSystem),this.renderSystem.rendererManager.register(this)}shouldFlushPresentationAddition(e){return"Text"===e.componentName||"HTMLText"===e.componentName||"BitmapText"===e.componentName}componentChanged(t){var o,n,i,r,s;return p(this,void 0,void 0,function*(){if(this.retired)return;const p="Text"===t.componentName,d="HTMLText"===t.componentName,l="BitmapText"===t.componentName;if(!p&&!d&&!l)return;const y=t.gameObject.id;if(t.type===e.OBSERVER_TYPE.ADD){if(p){const e=this.addTextComponent(t);e&&(yield e)}else if(d){const e=this.addHTMLTextComponent(t);e&&(yield e)}else{const e=this.addBitmapTextComponent(t);e&&(yield e)}(null===(o=this.texts[y])||void 0===o?void 0:o.component)===t.component&&this.setSize(t)}else if(t.type===e.OBSERVER_TYPE.REMOVE){if((null===(n=this.texts[y])||void 0===n?void 0:n.component)!==t.component&&this.pendingHTMLTextComponents[y]!==t.component)return;this.increaseAsyncId(y),this.pendingHTMLTextComponents[y]===t.component&&delete this.pendingHTMLTextComponents[y];const e=this.texts[y];if(!e||e.component!==t.component)return;this.containerManager.getContainer(y).removeChild(e.text),e.text.destroy({children:!0}),delete this.texts[y]}else{const e=t.component,o=t.prop.prop,n="style"===o[0]&&(1===o.length||"fontFamily"===o[1]),p=this.texts[y];if(!p)return void(d&&this.pendingHTMLTextComponents[y]===e&&n&&(yield this.addHTMLTextComponent(t),(null===(i=this.texts[y])||void 0===i?void 0:i.component)===e&&this.setSize(t)));if(p.component!==e)return;const l=n&&e.style&&this.needsFontLoad(e.style.fontFamily);if(n&&!l&&this.increaseAsyncId(y),this.change(t),l){const{text:o}=p;yield this.waitForFontResource(o,t,e.style.fontFamily)}(null===(r=this.texts[y])||void 0===r?void 0:r.text)===p.text&&(null===(s=this.texts[y])||void 0===s?void 0:s.component)===e&&this.setSize(t)}})}addTextComponent(e){const t=e.component,o=this.processStyle(t.style),i=o.fontFamily,r=this.needsFontLoad(i);r&&delete o.fontFamily;const s=r?"":t.text,p=new n.Text(s,o);if(this.containerManager.getContainer(e.gameObject.id).addChildAt(p,0),this.texts[e.gameObject.id]={text:p,component:t,awaitingInitialFont:r},r)return this.waitForFontResource(p,e,i)}addHTMLTextComponent(e){const t=e.component,o=e.gameObject.id,n=this.processStyle(t.style).fontFamily;if(this.needsFontLoad(n))return this.pendingHTMLTextComponents[o]=t,this.addHTMLTextAfterFont(e,t,n,this.increaseAsyncId(o));this.pendingHTMLTextComponents[o]===t&&delete this.pendingHTMLTextComponents[o],this.mountHTMLText(e,t)}addHTMLTextAfterFont(e,t,o,n){var i;return p(this,void 0,void 0,function*(){const r=e.gameObject.id,s=this.getFontName(o);(yield this.loadFontResource(o))&&!this.retired&&!e.gameObject.destroyed&&this.validateAsyncId(r,n)&&this.pendingHTMLTextComponents[r]===t&&this.getFontName(null===(i=t.style)||void 0===i?void 0:i.fontFamily)===s&&this.mountHTMLText(e,t)})}mountHTMLText(e,t){const o=e.gameObject.id,r=this.processStyle(t.style),s=i(t.textureStyle||{},["resolution"]),p=new n.HTMLText({text:t.text,style:r,textureStyle:Object.assign({},s)});p.rasterCacheFontIdentity=e=>this.getHTMLRasterFontIdentity(e),this.applyHTMLResolution(p,t,e),this.containerManager.getContainer(o).addChildAt(p,0),this.texts[o]={text:p,component:t},delete this.pendingHTMLTextComponents[o]}getHTMLRasterFontIdentity(t){var o;const n=[...new Set(t.filter(e=>"string"==typeof e).map(e=>e.replace(/["']/g,"").trim()).filter(Boolean))];if(!n.length)return"external:<default>";const i=e=>[this.objectIdentity(e),e.family,e.style,e.weight,e.stretch,e.unicodeRange,e.variant,e.featureSettings,e.display].map(e=>String(null!=e?e:"")).join(":"),r=[];for(const t of n){const n=e.resource.resourcesMap[t];if(!n||n.type!==e.RESOURCE_TYPE.FONT){r.push(`external:${t}`);continue}if(!0!==n.complete)return null;const s=null===(o=n.data)||void 0===o?void 0:o.font,p=Array.isArray(s)?s:[s];if(!p.length||p.some(e=>!e||"object"!=typeof e||"loaded"!==e.status))return null;r.push(`${t}|resource:${this.objectIdentity(n)}|faces:${p.map(i).join(",")}`)}return r.join(";")}objectIdentity(e){let t=this.fontIdentityIds.get(e);return t||(t=this.nextFontIdentityId++,this.fontIdentityIds.set(e,t)),t}addBitmapTextComponent(e){const t=e.component,o=this.processStyle(t.style),i=o.fontFamily,r=this.needsFontLoad(i);r&&delete o.fontFamily;const s=r?"":t.text,p=new n.BitmapText(s,o);if(this.containerManager.getContainer(e.gameObject.id).addChildAt(p,0),this.texts[e.gameObject.id]={text:p,component:t,awaitingInitialFont:r},r)return this.waitForFontResource(p,e,i)}hasRegisteredFont(t){var o;if(!t)return!1;const n=this.getFontName(t);return(null===(o=e.resource.resourcesMap[n])||void 0===o?void 0:o.type)===e.RESOURCE_TYPE.FONT}needsFontLoad(t){return!!this.hasRegisteredFont(t)&&!0!==e.resource.resourcesMap[this.getFontName(t)].complete}getFontName(e){if(e)return Array.isArray(e)?e[0]:e}loadFontResource(t){return p(this,void 0,void 0,function*(){const o=this.getFontName(t);if(!o||!this.hasRegisteredFont(t))return!1;const n=e.resource.resourcesMap[o];try{const t=yield e.resource.getResource(o);return t===n&&!0===t.complete&&e.resource.resourcesMap[o]===n}catch(e){return console.warn(`字体资源 ${t} 加载失败:`,e),!1}})}waitForFontResource(e,t,o){var n;return p(this,void 0,void 0,function*(){if(!o)return;const i=t.gameObject.id,r=this.getFontName(o);if(!r||!this.hasRegisteredFont(o))return;const s=this.increaseAsyncId(i),p=yield this.loadFontResource(o),d=this.texts[i];if(!p||this.retired||t.gameObject.destroyed||!this.validateAsyncId(i,s)||!d||d.text!==e||d.component!==t.component)return;const l=null===(n=d.component.style)||void 0===n?void 0:n.fontFamily;this.getFontName(l)===r&&(e.style.fontFamily=l,d.awaitingInitialFont=!1,e.text=d.component.text)})}processStyle(e){const o=this.cloneStyleValue(e);if(null!=o.strokeThickness||null!=o.lineJoin||null!=o.miterLimit){const e=o.stroke,t=e&&"object"==typeof e&&["color","width","fill","texture","join"].some(t=>t in e)?Object.assign({},e):{color:null!=e?e:0};null!=o.strokeThickness&&(t.width=o.strokeThickness),null!=o.lineJoin&&(t.join=o.lineJoin),null!=o.miterLimit&&(t.miterLimit=o.miterLimit),null==e&&null==o.strokeThickness||(o.stroke=t)}delete o.strokeThickness,delete o.lineJoin,delete o.miterLimit,o.dropShadow&&"object"==typeof o.dropShadow&&!Array.isArray(o.dropShadow)&&(!1===o.dropShadow.enabled?o.dropShadow=!1:delete o.dropShadow.enabled);const n=null!=o.dropShadowColor||null!=o.dropShadowDistance||null!=o.dropShadowAngle||null!=o.dropShadowAlpha||null!=o.dropShadowBlur;if(o.dropShadow&&n){const e=o.dropShadow&&"object"==typeof o.dropShadow&&!Array.isArray(o.dropShadow)?Object.assign({},o.dropShadow):{};null!=o.dropShadowColor&&(e.color=o.dropShadowColor),null!=o.dropShadowDistance&&(e.distance=o.dropShadowDistance),null!=o.dropShadowAngle&&(e.angle=o.dropShadowAngle),null!=o.dropShadowAlpha&&(e.alpha=o.dropShadowAlpha),null!=o.dropShadowBlur&&(e.blur=o.dropShadowBlur),o.dropShadow=e}if(delete o.dropShadowColor,delete o.dropShadowDistance,delete o.dropShadowAngle,delete o.dropShadowAlpha,delete o.dropShadowBlur,Array.isArray(o.fill)){const e=o.fill;if(e.length>1){const n=o.fillGradientStops,i=Array.isArray(n)&&n.length===e.length?n:e.map((t,o)=>o/(e.length-1)),r=1===o.fillGradientType,s=new t.FillGradient({start:{x:0,y:0},end:r?{x:1,y:0}:{x:0,y:1},textureSpace:"local"});e.forEach((e,o)=>{s.addColorStop(i[o],t.Color.shared.setValue(e).toNumber())}),o.fill={fill:s}}else o.fill=e[0]}return delete o.fillGradientStops,delete o.fillGradientType,o}change(e){var o,n,r,s,p,d,l,y;const a=this.texts[e.gameObject.id],{text:c,component:u}=a,g="HTMLText"===e.componentName;if("text"===e.prop.prop[0])a.awaitingInitialFont||(c.text=u.text);else if("style"===e.prop.prop[0]){const e=this.processStyle(u.style);this.needsFontLoad(e.fontFamily)&&delete e.fontFamily,Object.assign(c.style,e),a.awaitingInitialFont&&!this.needsFontLoad(null===(o=u.style)||void 0===o?void 0:o.fontFamily)&&(a.awaitingInitialFont=!1,c.text=u.text)}else if("textureStyle"===e.prop.prop[0]&&g){const o=u,a=c,g=i(o.textureStyle||{},["resolution"]);if(a.textureStyle){const e=Object.assign(Object.assign({},(null===t.TextureStyle||void 0===t.TextureStyle?void 0:t.TextureStyle.defaultOptions)||{addressMode:"clamp-to-edge",scaleMode:"linear"}),g);a.textureStyle.addressMode=e.addressMode,a.textureStyle.scaleMode=e.scaleMode,Object.assign(a.textureStyle,{addressModeU:null!==(n=e.addressModeU)&&void 0!==n?n:e.addressMode,addressModeV:null!==(r=e.addressModeV)&&void 0!==r?r:e.addressMode,addressModeW:null!==(s=e.addressModeW)&&void 0!==s?s:e.addressMode,magFilter:null!==(p=e.magFilter)&&void 0!==p?p:e.scaleMode,minFilter:null!==(d=e.minFilter)&&void 0!==d?d:e.scaleMode,mipmapFilter:null!==(l=e.mipmapFilter)&&void 0!==l?l:e.scaleMode,lodMinClamp:e.lodMinClamp,lodMaxClamp:e.lodMaxClamp,compare:e.compare,maxAnisotropy:null!==(y=e.maxAnisotropy)&&void 0!==y?y:1}),a.textureStyle.update()}else a.textureStyle=new t.TextureStyle(g);this.applyHTMLResolution(a,o,e)}}applyHTMLResolution(e,t,o){var n,i,r,s;const p=null===(i=(n=o.gameObject).getComponent)||void 0===i?void 0:i.call(n,"Render"),d=null!==(r=null==p?void 0:p.resolution)&&void 0!==r?r:null===(s=t.textureStyle)||void 0===s?void 0:s.resolution;"number"==typeof d&&Number.isFinite(d)&&d>0&&e.resolution!==d?e.resolution=d:null==d&&(e.resolution=null)}onDestroy(){var e,t;this.retired=!0;for(const e of Object.keys(this.asyncIdMap))this.increaseAsyncId(Number(e));this.pendingHTMLTextComponents={};for(const{text:o}of Object.values(this.texts))null===(e=o.parent)||void 0===e||e.removeChild(o),o.destroyed||null===(t=o.destroy)||void 0===t||t.call(o,{children:!0});this.texts={}}cloneStyleValue(e){return Array.isArray(e)?e.map(e=>this.cloneStyleValue(e)):e&&Object.getPrototypeOf(e)===Object.prototype?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,this.cloneStyleValue(t)])):e}setSize(e){const{transform:t}=e.gameObject;if(!t)return;const{text:o}=this.texts[e.gameObject.id],n=o.getSize();t.size.width===n.width&&t.size.height===n.height||(t.size.width=n.width,t.size.height=n.height,this.renderSystem.commitIntrinsicSize(e.gameObject))}};v.systemName="Text",v=r([e.decorators.componentObserver({Text:["text",{prop:["style"],deep:!0}],HTMLText:["text",{prop:["style"],deep:!0},{prop:["textureStyle"],deep:!0}],BitmapText:["text",{prop:["style"],deep:!0}]})],v);var b=v;exports.BitmapText=l,exports.HTMLText=h,exports.Text=u,exports.TextSystem=b;
|
|
@@ -285,20 +285,35 @@ declare type TextStyleWhiteSpace = 'normal' | 'pre' | 'pre-line';
|
|
|
285
285
|
export declare class TextSystem extends Renderer {
|
|
286
286
|
static systemName: string;
|
|
287
287
|
name: string;
|
|
288
|
+
readonly presentationAddFlushEnabled = true;
|
|
288
289
|
texts: {
|
|
289
290
|
[propName: number]: {
|
|
290
291
|
text: Text_3 | HTMLText_2 | BitmapText_2;
|
|
291
292
|
component: Text_2 | HTMLText | BitmapText;
|
|
293
|
+
awaitingInitialFont?: boolean;
|
|
292
294
|
};
|
|
293
295
|
};
|
|
294
296
|
renderSystem: RendererSystem;
|
|
295
297
|
rendererManager: RendererManager;
|
|
296
298
|
containerManager: ContainerManager;
|
|
299
|
+
private retired;
|
|
300
|
+
private pendingHTMLTextComponents;
|
|
301
|
+
private fontIdentityIds;
|
|
302
|
+
private nextFontIdentityId;
|
|
297
303
|
init(): void;
|
|
304
|
+
protected shouldFlushPresentationAddition(changed: ComponentChanged): boolean;
|
|
298
305
|
componentChanged(changed: ComponentChanged): Promise<void>;
|
|
299
306
|
private addTextComponent;
|
|
300
307
|
private addHTMLTextComponent;
|
|
308
|
+
private addHTMLTextAfterFont;
|
|
309
|
+
private mountHTMLText;
|
|
310
|
+
private getHTMLRasterFontIdentity;
|
|
311
|
+
private objectIdentity;
|
|
301
312
|
private addBitmapTextComponent;
|
|
313
|
+
private hasRegisteredFont;
|
|
314
|
+
private needsFontLoad;
|
|
315
|
+
private getFontName;
|
|
316
|
+
private loadFontResource;
|
|
302
317
|
/**
|
|
303
318
|
* 等待字体资源加载完成并更新文本
|
|
304
319
|
*/
|
|
@@ -308,6 +323,9 @@ export declare class TextSystem extends Renderer {
|
|
|
308
323
|
*/
|
|
309
324
|
private processStyle;
|
|
310
325
|
change(changed: ComponentChanged): void;
|
|
326
|
+
private applyHTMLResolution;
|
|
327
|
+
onDestroy(): void;
|
|
328
|
+
private cloneStyleValue;
|
|
311
329
|
setSize(changed: ComponentChanged): void;
|
|
312
330
|
}
|
|
313
331
|
|