@combos-fun/plugin-renderer-text 0.0.34 → 0.0.36

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/agent-skill.md CHANGED
@@ -21,7 +21,15 @@ import { Text, TextSystem, type TextParams } from '@combos-fun/plugin-renderer-t
21
21
  | `text` | `string` | — (required) |
22
22
  | `style` | `Partial<TextStyle>` | `{ fontSize: 20 }` |
23
23
 
24
- `style` accepts the full Pixi `TextStyle` surface (`fill`, `fontFamily`, `fontSize`, `fontWeight`, `wordWrap`, `wordWrapWidth`, `align`, `stroke`, `dropShadow`, `lineHeight`, ...).
24
+ `style` is Pixi **v8** `TextStyle` / `TextStyleOptions`. Common safe fields:
25
+
26
+ - `fill`, `fontFamily`, `fontSize`, `fontWeight`, `fontStyle`
27
+ - `align`, `wordWrap`, `wordWrapWidth`, `breakWords`, `lineHeight`, `letterSpacing`, `leading`, `padding`
28
+ - `stroke`, `dropShadow`
29
+
30
+ **Not supported:** `backgroundColor` (and other CSS/DOM or Pixi v7-only shortcuts). For a text plate/bubble background, put `Graphics` or `Img` on a **separate** GameObject behind the text (one visible render Component per GameObject).
31
+
32
+ Do not treat “full Pixi TextStyle” as “any CSS text property”.
25
33
 
26
34
  `Transform.size` is updated automatically after rendering so layout components downstream can position around the actual bounds.
27
35
 
@@ -33,6 +41,7 @@ import { Text, TextSystem, type TextParams } from '@combos-fun/plugin-renderer-t
33
41
 
34
42
  | Symptom | Fix |
35
43
  |---------|-----|
44
+ | `tsc`: `backgroundColor` does not exist on `Partial<TextStyle>` | Remove it; use a sibling/child `Graphics`/`Img` plate |
36
45
  | Text invisible on dark background | Set `style.fill: 0xffffff` (default fill is dark) |
37
46
  | Wrap not working | Set `style.wordWrap: true` AND `style.wordWrapWidth: <px>` |
38
47
  | Custom font not loading | Load the webfont before adding the component (e.g. `document.fonts.load(...)`) |
@@ -10,7 +10,7 @@ let Text$1 = class Text extends engine.Component {
10
10
  constructor() {
11
11
  super(...arguments);
12
12
  this.text = '';
13
- // @decorators.IDEProp complex editing to be added later
13
+ // Complex style object Scene Edit exposes leaf fields later if needed.
14
14
  this.style = {};
15
15
  }
16
16
  static { this.componentName = 'Text'; }
@@ -23,7 +23,13 @@ let Text$1 = class Text extends engine.Component {
23
23
  }
24
24
  };
25
25
  tslib.__decorate([
26
- inspectorDecorator.type('string')
26
+ inspectorDecorator.Field({
27
+ type: 'string',
28
+ group: 'Text',
29
+ label: 'text',
30
+ description: 'Visible text content.',
31
+ editor: 'text',
32
+ })
27
33
  ], Text$1.prototype, "text", void 0);
28
34
 
29
35
  let Text = class Text extends pluginRenderer.Renderer {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-renderer-text.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import type { TextStyle } from 'pixi.js';\nimport { Component } from '@combos-fun/engine';\nimport { type } from '@combos-fun/inspector-decorator';\n\nexport interface TextParams {\n text: string;\n style?: Partial<TextStyle>;\n}\n\nexport default class Text extends Component<TextParams> {\n static componentName: string = 'Text';\n @type('string') text: string = '';\n // @decorators.IDEProp complex editing to be added later\n style: TextParams['style'] = {};\n init(obj?: TextParams) {\n this.style = { fontSize: 20 };\n if (obj) {\n this.text = obj.text;\n Object.assign(this.style, obj.style);\n }\n }\n}\n","import { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\n\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport { Text as TextEngine } from '@combos-fun/renderer-adapter';\n\nimport TextComponent from './component';\n@decorators.componentObserver({\n Text: ['text', { prop: ['style'], deep: true }],\n})\nexport default class Text extends Renderer {\n static systemName = 'Text';\n name: string = 'Text';\n texts: {\n [propName: number]: { text: TextEngine; component: TextComponent };\n } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName !== 'Text') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const component = changed.component as TextComponent;\n const text = new TextEngine(component.text, component.style);\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(text, 0);\n this.texts[changed.gameObject.id] = {\n text,\n component: changed.component as TextComponent,\n };\n this.setSize(changed);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.containerManager.getContainer(changed.gameObject.id).removeChild(this.texts[changed.gameObject.id].text);\n this.texts[changed.gameObject.id].text.destroy({ children: true });\n delete this.texts[changed.gameObject.id];\n } else {\n this.change(changed);\n this.setSize(changed);\n }\n }\n change(changed: ComponentChanged) {\n const { text, component } = this.texts[changed.gameObject.id];\n if (changed.prop.prop[0] === 'text') {\n text.text = component.text;\n } else if (changed.prop.prop[0] === 'style') {\n Object.assign(text.style, (changed.component as TextComponent).style);\n }\n }\n setSize(changed: ComponentChanged) {\n const { transform } = changed.gameObject;\n if (!transform) return;\n transform.size.width = this.texts[changed.gameObject.id].text.width;\n transform.size.height = this.texts[changed.gameObject.id].text.height;\n }\n}\n"],"names":["Component","__decorate","type","Text","Renderer","RendererSystem","OBSERVER_TYPE","TextEngine","decorators"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-renderer-text.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import type { TextStyle } from 'pixi.js';\nimport { Component } from '@combos-fun/engine';\nimport { Field } from '@combos-fun/inspector-decorator';\n\nexport interface TextParams {\n text: string;\n style?: Partial<TextStyle>;\n}\n\nexport default class Text extends Component<TextParams> {\n static componentName: string = 'Text';\n\n @Field({\n type: 'string',\n group: 'Text',\n label: 'text',\n description: 'Visible text content.',\n editor: 'text',\n })\n text: string = '';\n\n // Complex style object Scene Edit exposes leaf fields later if needed.\n style: TextParams['style'] = {};\n\n init(obj?: TextParams) {\n this.style = { fontSize: 20 };\n if (obj) {\n this.text = obj.text;\n Object.assign(this.style, obj.style);\n }\n }\n}\n","import { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\n\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport { Text as TextEngine } from '@combos-fun/renderer-adapter';\n\nimport TextComponent from './component';\n@decorators.componentObserver({\n Text: ['text', { prop: ['style'], deep: true }],\n})\nexport default class Text extends Renderer {\n static systemName = 'Text';\n name: string = 'Text';\n texts: {\n [propName: number]: { text: TextEngine; component: TextComponent };\n } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName !== 'Text') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const component = changed.component as TextComponent;\n const text = new TextEngine(component.text, component.style);\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(text, 0);\n this.texts[changed.gameObject.id] = {\n text,\n component: changed.component as TextComponent,\n };\n this.setSize(changed);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.containerManager.getContainer(changed.gameObject.id).removeChild(this.texts[changed.gameObject.id].text);\n this.texts[changed.gameObject.id].text.destroy({ children: true });\n delete this.texts[changed.gameObject.id];\n } else {\n this.change(changed);\n this.setSize(changed);\n }\n }\n change(changed: ComponentChanged) {\n const { text, component } = this.texts[changed.gameObject.id];\n if (changed.prop.prop[0] === 'text') {\n text.text = component.text;\n } else if (changed.prop.prop[0] === 'style') {\n Object.assign(text.style, (changed.component as TextComponent).style);\n }\n }\n setSize(changed: ComponentChanged) {\n const { transform } = changed.gameObject;\n if (!transform) return;\n transform.size.width = this.texts[changed.gameObject.id].text.width;\n transform.size.height = this.texts[changed.gameObject.id].text.height;\n }\n}\n"],"names":["Component","__decorate","Field","Text","Renderer","RendererSystem","OBSERVER_TYPE","TextEngine","decorators"],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),s=require("@combos-fun/inspector-decorator"),i=require("@combos-fun/plugin-renderer"),r=require("@combos-fun/renderer-adapter");let n=class extends t.Component{constructor(){super(...arguments),this.text="",this.style={}}static{this.componentName="Text"}init(e){this.style={fontSize:20},e&&(this.text=e.text,Object.assign(this.style,e.style))}};e.__decorate([s.type("string")],n.prototype,"text",void 0);let o=class extends i.Renderer{constructor(){super(...arguments),this.name="Text",this.texts={}}static{this.systemName="Text"}init(){this.renderSystem=this.game.getSystem(i.RendererSystem),this.renderSystem.rendererManager.register(this)}async componentChanged(e){if("Text"===e.componentName)if(e.type===t.OBSERVER_TYPE.ADD){const t=e.component,s=new r.Text(t.text,t.style);this.containerManager.getContainer(e.gameObject.id).addChildAt(s,0),this.texts[e.gameObject.id]={text:s,component:e.component},this.setSize(e)}else e.type===t.OBSERVER_TYPE.REMOVE?(this.containerManager.getContainer(e.gameObject.id).removeChild(this.texts[e.gameObject.id].text),this.texts[e.gameObject.id].text.destroy({children:!0}),delete this.texts[e.gameObject.id]):(this.change(e),this.setSize(e))}change(e){const{text:t,component:s}=this.texts[e.gameObject.id];"text"===e.prop.prop[0]?t.text=s.text:"style"===e.prop.prop[0]&&Object.assign(t.style,e.component.style)}setSize(e){const{transform:t}=e.gameObject;t&&(t.size.width=this.texts[e.gameObject.id].text.width,t.size.height=this.texts[e.gameObject.id].text.height)}};o=e.__decorate([t.decorators.componentObserver({Text:["text",{prop:["style"],deep:!0}]})],o);var c=o;exports.Text=n,exports.TextSystem=c;
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),s=require("@combos-fun/inspector-decorator"),i=require("@combos-fun/plugin-renderer"),r=require("@combos-fun/renderer-adapter");let n=class extends t.Component{constructor(){super(...arguments),this.text="",this.style={}}static{this.componentName="Text"}init(e){this.style={fontSize:20},e&&(this.text=e.text,Object.assign(this.style,e.style))}};e.__decorate([s.Field({type:"string",group:"Text",label:"text",description:"Visible text content.",editor:"text"})],n.prototype,"text",void 0);let o=class extends i.Renderer{constructor(){super(...arguments),this.name="Text",this.texts={}}static{this.systemName="Text"}init(){this.renderSystem=this.game.getSystem(i.RendererSystem),this.renderSystem.rendererManager.register(this)}async componentChanged(e){if("Text"===e.componentName)if(e.type===t.OBSERVER_TYPE.ADD){const t=e.component,s=new r.Text(t.text,t.style);this.containerManager.getContainer(e.gameObject.id).addChildAt(s,0),this.texts[e.gameObject.id]={text:s,component:e.component},this.setSize(e)}else e.type===t.OBSERVER_TYPE.REMOVE?(this.containerManager.getContainer(e.gameObject.id).removeChild(this.texts[e.gameObject.id].text),this.texts[e.gameObject.id].text.destroy({children:!0}),delete this.texts[e.gameObject.id]):(this.change(e),this.setSize(e))}change(e){const{text:t,component:s}=this.texts[e.gameObject.id];"text"===e.prop.prop[0]?t.text=s.text:"style"===e.prop.prop[0]&&Object.assign(t.style,e.component.style)}setSize(e){const{transform:t}=e.gameObject;t&&(t.size.width=this.texts[e.gameObject.id].text.width,t.size.height=this.texts[e.gameObject.id].text.height)}};o=e.__decorate([t.decorators.componentObserver({Text:["text",{prop:["style"],deep:!0}]})],o);var c=o;exports.Text=n,exports.TextSystem=c;
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { Component, OBSERVER_TYPE, decorators } from '@combos-fun/engine';
3
- import { type } from '@combos-fun/inspector-decorator';
3
+ import { Field } from '@combos-fun/inspector-decorator';
4
4
  import { Renderer, RendererSystem } from '@combos-fun/plugin-renderer';
5
5
  import { Text as Text$2 } from '@combos-fun/renderer-adapter';
6
6
 
@@ -8,7 +8,7 @@ let Text$1 = class Text extends Component {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.text = '';
11
- // @decorators.IDEProp complex editing to be added later
11
+ // Complex style object Scene Edit exposes leaf fields later if needed.
12
12
  this.style = {};
13
13
  }
14
14
  static { this.componentName = 'Text'; }
@@ -21,7 +21,13 @@ let Text$1 = class Text extends Component {
21
21
  }
22
22
  };
23
23
  __decorate([
24
- type('string')
24
+ Field({
25
+ type: 'string',
26
+ group: 'Text',
27
+ label: 'text',
28
+ description: 'Visible text content.',
29
+ editor: 'text',
30
+ })
25
31
  ], Text$1.prototype, "text", void 0);
26
32
 
27
33
  let Text = class Text extends Renderer {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-renderer-text.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import type { TextStyle } from 'pixi.js';\nimport { Component } from '@combos-fun/engine';\nimport { type } from '@combos-fun/inspector-decorator';\n\nexport interface TextParams {\n text: string;\n style?: Partial<TextStyle>;\n}\n\nexport default class Text extends Component<TextParams> {\n static componentName: string = 'Text';\n @type('string') text: string = '';\n // @decorators.IDEProp complex editing to be added later\n style: TextParams['style'] = {};\n init(obj?: TextParams) {\n this.style = { fontSize: 20 };\n if (obj) {\n this.text = obj.text;\n Object.assign(this.style, obj.style);\n }\n }\n}\n","import { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\n\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport { Text as TextEngine } from '@combos-fun/renderer-adapter';\n\nimport TextComponent from './component';\n@decorators.componentObserver({\n Text: ['text', { prop: ['style'], deep: true }],\n})\nexport default class Text extends Renderer {\n static systemName = 'Text';\n name: string = 'Text';\n texts: {\n [propName: number]: { text: TextEngine; component: TextComponent };\n } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName !== 'Text') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const component = changed.component as TextComponent;\n const text = new TextEngine(component.text, component.style);\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(text, 0);\n this.texts[changed.gameObject.id] = {\n text,\n component: changed.component as TextComponent,\n };\n this.setSize(changed);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.containerManager.getContainer(changed.gameObject.id).removeChild(this.texts[changed.gameObject.id].text);\n this.texts[changed.gameObject.id].text.destroy({ children: true });\n delete this.texts[changed.gameObject.id];\n } else {\n this.change(changed);\n this.setSize(changed);\n }\n }\n change(changed: ComponentChanged) {\n const { text, component } = this.texts[changed.gameObject.id];\n if (changed.prop.prop[0] === 'text') {\n text.text = component.text;\n } else if (changed.prop.prop[0] === 'style') {\n Object.assign(text.style, (changed.component as TextComponent).style);\n }\n }\n setSize(changed: ComponentChanged) {\n const { transform } = changed.gameObject;\n if (!transform) return;\n transform.size.width = this.texts[changed.gameObject.id].text.width;\n transform.size.height = this.texts[changed.gameObject.id].text.height;\n }\n}\n"],"names":["Text","TextEngine"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-renderer-text.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import type { TextStyle } from 'pixi.js';\nimport { Component } from '@combos-fun/engine';\nimport { Field } from '@combos-fun/inspector-decorator';\n\nexport interface TextParams {\n text: string;\n style?: Partial<TextStyle>;\n}\n\nexport default class Text extends Component<TextParams> {\n static componentName: string = 'Text';\n\n @Field({\n type: 'string',\n group: 'Text',\n label: 'text',\n description: 'Visible text content.',\n editor: 'text',\n })\n text: string = '';\n\n // Complex style object Scene Edit exposes leaf fields later if needed.\n style: TextParams['style'] = {};\n\n init(obj?: TextParams) {\n this.style = { fontSize: 20 };\n if (obj) {\n this.text = obj.text;\n Object.assign(this.style, obj.style);\n }\n }\n}\n","import { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\n\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport { Text as TextEngine } from '@combos-fun/renderer-adapter';\n\nimport TextComponent from './component';\n@decorators.componentObserver({\n Text: ['text', { prop: ['style'], deep: true }],\n})\nexport default class Text extends Renderer {\n static systemName = 'Text';\n name: string = 'Text';\n texts: {\n [propName: number]: { text: TextEngine; component: TextComponent };\n } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName !== 'Text') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n const component = changed.component as TextComponent;\n const text = new TextEngine(component.text, component.style);\n this.containerManager.getContainer(changed.gameObject.id).addChildAt(text, 0);\n this.texts[changed.gameObject.id] = {\n text,\n component: changed.component as TextComponent,\n };\n this.setSize(changed);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.containerManager.getContainer(changed.gameObject.id).removeChild(this.texts[changed.gameObject.id].text);\n this.texts[changed.gameObject.id].text.destroy({ children: true });\n delete this.texts[changed.gameObject.id];\n } else {\n this.change(changed);\n this.setSize(changed);\n }\n }\n change(changed: ComponentChanged) {\n const { text, component } = this.texts[changed.gameObject.id];\n if (changed.prop.prop[0] === 'text') {\n text.text = component.text;\n } else if (changed.prop.prop[0] === 'style') {\n Object.assign(text.style, (changed.component as TextComponent).style);\n }\n }\n setSize(changed: ComponentChanged) {\n const { transform } = changed.gameObject;\n if (!transform) return;\n transform.size.width = this.texts[changed.gameObject.id].text.width;\n transform.size.height = this.texts[changed.gameObject.id].text.height;\n }\n}\n"],"names":["Text","TextEngine"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combos-fun/plugin-renderer-text",
3
- "version": "0.0.34",
3
+ "version": "0.0.36",
4
4
  "description": "Text rendering",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer-text.esm.js",
@@ -35,11 +35,11 @@
35
35
  ],
36
36
  "author": "sun668 <q947692259@gmail.com>",
37
37
  "dependencies": {
38
+ "@combos-fun/plugin-renderer": "0.0.36",
39
+ "@combos-fun/renderer-adapter": "0.0.36",
40
+ "@combos-fun/engine": "0.0.36",
38
41
  "pixi.js": "^8.18.1",
39
- "@combos-fun/plugin-renderer": "0.0.34",
40
- "@combos-fun/renderer-adapter": "0.0.34",
41
- "@combos-fun/engine": "0.0.34",
42
- "@combos-fun/inspector-decorator": "0.0.34"
42
+ "@combos-fun/inspector-decorator": "0.0.36"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "node ../../scripts/build-package.mjs"