@pixi-ui-editor/runtime-pixi 0.3.0 → 0.5.0

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.
Files changed (72) hide show
  1. package/README.md +81 -2
  2. package/dist/SceneViewport.d.ts +17 -0
  3. package/dist/SceneViewport.d.ts.map +1 -0
  4. package/dist/SceneViewport.js +35 -0
  5. package/dist/SceneViewport.js.map +1 -0
  6. package/dist/assets/bitmapFonts.d.ts +22 -0
  7. package/dist/assets/bitmapFonts.d.ts.map +1 -0
  8. package/dist/assets/bitmapFonts.js +75 -0
  9. package/dist/assets/bitmapFonts.js.map +1 -0
  10. package/dist/assets/cache.d.ts +31 -0
  11. package/dist/assets/cache.d.ts.map +1 -0
  12. package/dist/assets/cache.js +20 -0
  13. package/dist/assets/cache.js.map +1 -0
  14. package/dist/assets/fonts.d.ts +1 -1
  15. package/dist/assets/fonts.d.ts.map +1 -1
  16. package/dist/assets/fonts.js +2 -2
  17. package/dist/assets/fonts.js.map +1 -1
  18. package/dist/assets/loadTexture.d.ts +9 -0
  19. package/dist/assets/loadTexture.d.ts.map +1 -0
  20. package/dist/assets/loadTexture.js +14 -0
  21. package/dist/assets/loadTexture.js.map +1 -0
  22. package/dist/assets/textures.d.ts +4 -5
  23. package/dist/assets/textures.d.ts.map +1 -1
  24. package/dist/assets/textures.js +31 -20
  25. package/dist/assets/textures.js.map +1 -1
  26. package/dist/controls.d.ts +9 -1
  27. package/dist/controls.d.ts.map +1 -1
  28. package/dist/controls.js +23 -0
  29. package/dist/controls.js.map +1 -1
  30. package/dist/index.d.ts +10 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +7 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/index.test.js +95 -3
  35. package/dist/index.test.js.map +1 -1
  36. package/dist/layout.d.ts +10 -4
  37. package/dist/layout.d.ts.map +1 -1
  38. package/dist/layout.js +13 -0
  39. package/dist/layout.js.map +1 -1
  40. package/dist/localization.d.ts +42 -0
  41. package/dist/localization.d.ts.map +1 -0
  42. package/dist/localization.js +73 -0
  43. package/dist/localization.js.map +1 -0
  44. package/dist/scene.d.ts +24 -13
  45. package/dist/scene.d.ts.map +1 -1
  46. package/dist/scene.js +66 -14
  47. package/dist/scene.js.map +1 -1
  48. package/dist/views/ButtonNodeView.d.ts +16 -3
  49. package/dist/views/ButtonNodeView.d.ts.map +1 -1
  50. package/dist/views/ButtonNodeView.js +94 -27
  51. package/dist/views/ButtonNodeView.js.map +1 -1
  52. package/dist/views/CheckboxNodeView.d.ts +47 -0
  53. package/dist/views/CheckboxNodeView.d.ts.map +1 -0
  54. package/dist/views/CheckboxNodeView.js +127 -0
  55. package/dist/views/CheckboxNodeView.js.map +1 -0
  56. package/dist/views/NodeView.d.ts +8 -0
  57. package/dist/views/NodeView.d.ts.map +1 -1
  58. package/dist/views/NodeView.js +8 -0
  59. package/dist/views/NodeView.js.map +1 -1
  60. package/dist/views/StagedButtonNodeView.d.ts +81 -0
  61. package/dist/views/StagedButtonNodeView.d.ts.map +1 -0
  62. package/dist/views/StagedButtonNodeView.js +275 -0
  63. package/dist/views/StagedButtonNodeView.js.map +1 -0
  64. package/dist/views/basic.d.ts +97 -2
  65. package/dist/views/basic.d.ts.map +1 -1
  66. package/dist/views/basic.js +273 -8
  67. package/dist/views/basic.js.map +1 -1
  68. package/dist/views/createNodeView.d.ts +1 -1
  69. package/dist/views/createNodeView.d.ts.map +1 -1
  70. package/dist/views/createNodeView.js +30 -4
  71. package/dist/views/createNodeView.js.map +1 -1
  72. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StagedButtonNodeView.js","sourceRoot":"","sources":["../../src/views/StagedButtonNodeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA+E,MAAM,wBAAwB,CAAC;AACxI,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAa,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAW,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAA6B,MAAM,eAAe,CAAC;AAKpE,MAAM,kBAAkB,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAW,CAAC;AAEpH;;;;;;;;;;GAUG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IACxC,MAAM,CAAe;IACrB,UAAU,CAAqC;IACtC,WAAW,CAAuB;IAClC,MAAM,CAAyC;IACxD,aAAa,CAA6B;IAC1C,SAAS,CAA4B;IACrC,UAAU,CAAsB;IAChC,cAAc,CAAS;IACvB,cAAc,CAAS;IACvB,SAAS,CAAU;IACnB,YAAY,CAAU;IAC9B,qGAAqG;IAC7F,WAAW,CAA6B;IAEvC,aAAa,GAAG,IAAI,MAAM,EAAqD,CAAC;IAEzF,YAAY,IAAsB,EAAE,QAAkD,EAAE,WAAiC,EAAE,MAAmC;QAC5J,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QAC/H,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;IAClG,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,OAA4B,EAAE,SAAoC;QAC/F,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,QAAQ,EAAE,CAAC;QACjD,OAAO,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACzJ,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,IAAwC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,EAAuC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,KAAqB,EAAE,OAA2B,EAAa,EAAE;YAChF,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC;YAChG,MAAM,IAAI,GAAG,oBAAoB,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3E,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;YAC7B,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;YAC1D,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;YACtD,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;YAC5D,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;SAChE,CAAC,CAAC;QACH,kGAAkG;QAClG,yDAAyD;QACzD,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW;YAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;aAC3D,CAAC;YACJ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;gBACtI,IAAI,MAAM,YAAY,OAAO;oBAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;gBACtI,IAAI,MAAM,YAAY,OAAO;oBAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAExB,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEjD,gGAAgG;QAChG,8FAA8F;QAC9F,sCAAsC;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACjG,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,KAAa,EAAE,MAAc;QAC9C,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,IAAI,YAAY,eAAe;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBAC5D,IAAI,IAAI,YAAY,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACxD,IAAI,IAAI,YAAY,QAAQ;gBAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjI,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,KAAa,EAAE,MAAc;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAElE,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC;YAChG,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,cAAc,GAAG,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;YAC7E,0FAA0F;YAC1F,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,YAAY,eAAe,CAAC,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC;YAC7I,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,YAAY,GAAG,IAAI,CAAC;gBAAC,MAAM;YAAC,CAAC;QAC/C,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC;YAChG,2FAA2F;YAC3F,6FAA6F;YAC7F,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;gBACpC,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;oBAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC9E,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;oBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC5C,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;gBAClC,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;oBAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YAChF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,uGAAuG;IAC/F,YAAY,CAAC,OAAgB;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;;YAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAES,WAAW,CAAC,IAAY,EAAE,SAA8B;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,2FAA2F;QAC3F,iEAAiE;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7F,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACnE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAE,CAAC,EAAE,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAE1D,mGAAmG;QACnG,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,2FAA2F;IAC3F,gBAAgB,CAAC,SAAwB;QACvC,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,IAAI,YAAY,eAAe,CAAC;gBAAE,SAAS;YACjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;QACvC,CAAC;IACH,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,CAAC,KAAc;QACxB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;QACrF,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,iGAAiG;IACjG,QAAQ,CAAC,KAAa;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,uGAAuG;IACvG,UAAU,CAAC,KAAa;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,mFAAmF;IACnF,QAAQ,CAAC,KAAa;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAC1E,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,8EAA8E;IAC9E,IAAI;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACjC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,6DAA6D;IAC7D,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,0GAA0G;IAC1G,QAAQ,CAAC,KAAqB;QAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -1,9 +1,15 @@
1
- import { type LayoutProfileId, type UINode } from "@pixi-ui-editor/schema";
1
+ import { type LayoutPadding, type LayoutProfileId, type UINode } from "@pixi-ui-editor/schema";
2
2
  import { Container, Texture } from "pixi.js";
3
3
  import { NodeView } from "./NodeView.js";
4
4
  export declare class ContainerNodeView extends NodeView {
5
5
  protected syncContent(): void;
6
6
  }
7
+ /** Clips every authored child to the node's resolved rectangular layout area. */
8
+ export declare class MaskNodeView extends NodeView {
9
+ private readonly maskShape;
10
+ constructor();
11
+ protected syncContent(node: UINode, transform: UINode["transform"]): void;
12
+ }
7
13
  /** Layout groups may optionally paint one image behind their managed children. No asset means no content/view at all. */
8
14
  export declare class LayoutGroupNodeView extends NodeView {
9
15
  private readonly layoutContent;
@@ -16,15 +22,104 @@ export declare class LayoutGroupNodeView extends NodeView {
16
22
  /**
17
23
  * Ноде-картинке источник не обязателен: без `assetId` она рисует белый прямоугольник своего размера,
18
24
  * а серо-синяя заглушка остаётся признаком того, что назначенный ассет не загрузился.
25
+ *
26
+ * `nineSlice` переключает контент на `NineSliceSprite`: углы источника остаются нерастянутыми, а
27
+ * растягиваются только края/середина — то же 9-slice, что уже использует Slider/ProgressBar через
28
+ * `@pixi/ui`'s `fillPaddings`, только здесь это применяется напрямую к содержимому Image-ноды.
19
29
  */
20
30
  export declare class ImageNodeView extends NodeView {
21
- constructor(assetId: string | undefined, textures: ReadonlyMap<string, Texture> | undefined);
31
+ constructor(assetId: string | undefined, textures: ReadonlyMap<string, Texture> | undefined, nineSlice?: LayoutPadding);
32
+ private static createSpriteContent;
22
33
  protected syncContent(node: UINode, transform: UINode["transform"]): void;
34
+ /**
35
+ * Editor-only live preview of border edits while dragging the canvas nine-slice gizmo; the
36
+ * document is only written once, on drag release. A no-op without a `NineSliceSprite` content —
37
+ * e.g. mid-drag right after the asset was cleared, before the next document sync catches up.
38
+ */
39
+ previewNineSlice(nineSlice: LayoutPadding): void;
23
40
  }
24
41
  export declare class TextNodeView extends NodeView {
25
42
  private readonly fonts?;
43
+ /**
44
+ * Строка, применённая локализацией поверх авторской. Она переживает `updateNodeView`: без неё
45
+ * любая синхронизация документа возвращала бы fallback `node.text` вместо текущего перевода.
46
+ */
47
+ private localizedText?;
48
+ /** Последний применённый прямоугольник и стиль — их же переиспользует инкрементальный `setText`. */
49
+ private lastTransform?;
50
+ private lastStyle?;
26
51
  constructor(text: string, fonts?: ReadonlyMap<string, string> | undefined);
27
52
  protected syncContent(node: UINode, transform: UINode["transform"], profile: LayoutProfileId): void;
53
+ /**
54
+ * Applies the resolved style at the largest font size (down to `minFontSize`) that keeps the
55
+ * rendered text inside `transform`, when `autoSize` is on — the same "shrink, never grow past the
56
+ * authored size" contract as `BitmapTextNodeView.applyFittedStyle` / Unity legacy Text's Best Fit.
57
+ * A binary search over candidate sizes rather than a closed-form scale, because word-wrapped text
58
+ * re-flows at every size: a smaller font fits more words per line, so height doesn't shrink linearly
59
+ * with font size the way unwrapped bounds would — the same reasoning `measureOverflow` follows.
60
+ */
61
+ private applyFittedStyle;
62
+ /**
63
+ * Инкрементальная смена строки: та же строка не делает работы вообще, новая — только переизмеряет
64
+ * и выравнивает текст в текущем authored rectangle. `TextStyle` не пересоздаётся, а сам view
65
+ * сохраняет identity, поэтому смена локали не трогает ни сцену, ни GPU-ресурсы стиля.
66
+ */
67
+ setText(text: string): void;
68
+ /** `undefined` возвращает ноду к авторской строке при следующей синхронизации документа. */
69
+ setLocalizedText(text: string | undefined): void;
70
+ /**
71
+ * Rasterizes the canvas-based `Text` at a higher pixel density than the renderer's own backing
72
+ * resolution, so authoring-camera zoom doesn't magnify an already-rasterized bitmap past its
73
+ * source resolution. `Application.resolution` (see `resolveCanvasResolution`) only matches the
74
+ * *display's* pixel density — it knows nothing about the editor's independent camera zoom, which
75
+ * can reach 8x (`MAX_ZOOM`). Without this, zooming in to inspect a text node (exactly what
76
+ * `autoSize`/shrink-to-fit users do, since it converges to a smaller font) reads as soft/blurred
77
+ * even on a display this app already renders crisply on. A no-op if unchanged: assigning
78
+ * `.resolution` always re-rasterizes, so skip it when the caller (the authoring canvas, on every
79
+ * camera-zoom tick) passes back the same value.
80
+ */
81
+ setContentResolution(resolution: number): void;
82
+ /**
83
+ * Вылезает ли фактически отрисованный текст за логический прямоугольник ноды.
84
+ *
85
+ * Меряется уже готовый `Text`, а не длина строки: перенос по словам, шрифт и обводка известны
86
+ * только рендеру. Без `wordWrap` переполнение возможно по ширине, с ним — по высоте, потому что
87
+ * перенос сам удерживает ширину в пределах `wordWrapWidth`. Диагностика transient: она ничего не
88
+ * пишет ни в документ, ни в view.
89
+ */
90
+ measureOverflow(): boolean;
91
+ private align;
92
+ }
93
+ /**
94
+ * A bitmap font's rendered glyphs come from its texture, not an arbitrary system/TTF face, so unlike
95
+ * `TextNodeView` there is no style-driven fallback: without a loaded font (asset deleted, still
96
+ * loading, or failed to parse) this draws the same missing-asset placeholder `ImageNodeView` does.
97
+ */
98
+ export declare class BitmapTextNodeView extends NodeView {
99
+ private readonly fonts?;
100
+ private lastTransform?;
101
+ private lastAlign;
102
+ private lastVerticalAlign;
103
+ constructor(fonts?: ReadonlyMap<string, string> | undefined);
104
+ protected syncContent(node: UINode, transform: UINode["transform"]): void;
105
+ /**
106
+ * Applies the node's style at the largest font size (down to `minFontSize`) that keeps the text
107
+ * inside `transform`, when `autoSize` is on — the same "shrink, never grow past the authored size"
108
+ * contract as Unity legacy Text's Best Fit. A binary search over candidate sizes rather than a
109
+ * closed-form scale, because word-wrapped text re-flows at every size: a smaller font can fit more
110
+ * words per line, so height doesn't shrink linearly with font size the way unwrapped bounds would.
111
+ */
112
+ private applyFittedStyle;
113
+ /**
114
+ * Positions via PixiJS's own `anchor`, not a manual `getLocalBounds()` computation like
115
+ * `TextNodeView.align()` uses: `BitmapText.updateBounds()` reports a coarse line-metrics box
116
+ * (built from the font's `lineHeight`/`baseLineOffset`), not the tight pixel bounds a canvas
117
+ * `Text` or `Sprite` reports. Its own glyphs are drawn with an additional baseline-derived offset
118
+ * that box doesn't account for, so computing `-bounds.y`-style positions from it lands text
119
+ * slightly (but consistently, for every vertical setting) off — `anchor` is the one code path
120
+ * PixiJS keeps in sync with how it actually renders the glyphs.
121
+ */
122
+ private align;
28
123
  }
29
124
  /**
30
125
  * Содержимое инстанса приходит обычными детьми из общего резолвера иерархии. Собственный контент
@@ -1 +1 @@
1
- {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/views/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAA0B,OAAO,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,SAAS,CAAC,WAAW,IAAI,IAAI;CAC9B;AAED,yHAAyH;AACzH,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAO9D,IAAI,YAAY,IAAI,SAAS,CAA+B;IAE5D,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAI3D,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAW1E;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAM3F,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAmB1E;AAED,qBAAa,YAAa,SAAQ,QAAQ;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAArC,IAAI,EAAE,MAAM,EAAmB,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,YAAA;IAK9E,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;CAYpG;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;gBACtC,QAAQ,EAAE,OAAO;IAK7B,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI;CAG3E"}
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/views/basic.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,25 @@
1
- import { Container, Graphics, Sprite, Text } from "pixi.js";
1
+ import { BitmapText, Container, Graphics, NineSliceSprite, Sprite, Text } from "pixi.js";
2
2
  import { NodeView } from "./NodeView.js";
3
3
  import { resolveTextStyle } from "../layout.js";
4
4
  export class ContainerNodeView extends NodeView {
5
5
  syncContent() { }
6
6
  }
7
+ /** Clips every authored child to the node's resolved rectangular layout area. */
8
+ export class MaskNodeView extends NodeView {
9
+ maskShape = new Graphics();
10
+ constructor() {
11
+ super();
12
+ this.addChild(this.maskShape);
13
+ // A Graphics mask keeps the shape GPU-native and avoids the offscreen texture pass of alpha masks.
14
+ // Pixi's regular mask contract also preserves correct clipping through rotation and transformed parents.
15
+ this.mask = this.maskShape;
16
+ }
17
+ syncContent(node, transform) {
18
+ if (node.type !== "mask")
19
+ return;
20
+ this.maskShape.clear().rect(0, 0, transform.width, transform.height).fill(0xffffff);
21
+ }
22
+ }
7
23
  /** Layout groups may optionally paint one image behind their managed children. No asset means no content/view at all. */
8
24
  export class LayoutGroupNodeView extends NodeView {
9
25
  layoutContent = new Container();
@@ -42,20 +58,46 @@ export class LayoutGroupNodeView extends NodeView {
42
58
  /**
43
59
  * Ноде-картинке источник не обязателен: без `assetId` она рисует белый прямоугольник своего размера,
44
60
  * а серо-синяя заглушка остаётся признаком того, что назначенный ассет не загрузился.
61
+ *
62
+ * `nineSlice` переключает контент на `NineSliceSprite`: углы источника остаются нерастянутыми, а
63
+ * растягиваются только края/середина — то же 9-slice, что уже использует Slider/ProgressBar через
64
+ * `@pixi/ui`'s `fillPaddings`, только здесь это применяется напрямую к содержимому Image-ноды.
45
65
  */
46
66
  export class ImageNodeView extends NodeView {
47
- constructor(assetId, textures) {
67
+ constructor(assetId, textures, nineSlice) {
48
68
  super(textures);
49
69
  const texture = assetId === undefined ? undefined : this.textureFor(assetId);
50
- this.setContent(texture !== undefined ? new Sprite(texture) : new Graphics());
70
+ this.setContent(ImageNodeView.createSpriteContent(texture, nineSlice));
71
+ }
72
+ static createSpriteContent(texture, nineSlice) {
73
+ if (texture === undefined)
74
+ return new Graphics();
75
+ return nineSlice === undefined
76
+ ? new Sprite(texture)
77
+ : new NineSliceSprite({ texture, leftWidth: nineSlice.left, topHeight: nineSlice.top, rightWidth: nineSlice.right, bottomHeight: nineSlice.bottom });
51
78
  }
52
79
  syncContent(node, transform) {
53
80
  if (node.type !== "image")
54
81
  return;
55
82
  const texture = node.assetId === undefined ? undefined : this.textureFor(node.assetId);
56
- // Sprite Graphics меняются местами прямо здесь: структурный ключ сцены не включает assetId,
57
- // поэтому смена ассета том числе на None) не пересобирает view.
58
- if (texture !== undefined) {
83
+ const nineSlice = node.nineSlice;
84
+ // Sprite NineSliceSprite Graphics меняются местами прямо здесь: структурный ключ сцены не
85
+ // включает assetId/nineSlice, поэтому переключение (в том числе на None) не пересобирает сцену.
86
+ if (texture !== undefined && nineSlice !== undefined) {
87
+ if (!(this.content instanceof NineSliceSprite))
88
+ this.setContent(ImageNodeView.createSpriteContent(texture, nineSlice));
89
+ const sprite = this.content;
90
+ // Keep the NineSliceSprite and its layout rectangle stable when its image asset/borders change.
91
+ if (sprite.texture !== texture)
92
+ sprite.texture = texture;
93
+ sprite.leftWidth = nineSlice.left;
94
+ sprite.topHeight = nineSlice.top;
95
+ sprite.rightWidth = nineSlice.right;
96
+ sprite.bottomHeight = nineSlice.bottom;
97
+ sprite.setSize(transform.width, transform.height);
98
+ }
99
+ else if (texture !== undefined) {
100
+ // `NineSliceSprite` is a Sprite sibling, not a subclass, so this rebuilds when switching back from it.
59
101
  if (!(this.content instanceof Sprite))
60
102
  this.setContent(new Sprite(texture));
61
103
  const sprite = this.content;
@@ -75,9 +117,30 @@ export class ImageNodeView extends NodeView {
75
117
  }
76
118
  this.content.alpha = node.opacity ?? 1;
77
119
  }
120
+ /**
121
+ * Editor-only live preview of border edits while dragging the canvas nine-slice gizmo; the
122
+ * document is only written once, on drag release. A no-op without a `NineSliceSprite` content —
123
+ * e.g. mid-drag right after the asset was cleared, before the next document sync catches up.
124
+ */
125
+ previewNineSlice(nineSlice) {
126
+ if (!(this.content instanceof NineSliceSprite))
127
+ return;
128
+ this.content.leftWidth = nineSlice.left;
129
+ this.content.topHeight = nineSlice.top;
130
+ this.content.rightWidth = nineSlice.right;
131
+ this.content.bottomHeight = nineSlice.bottom;
132
+ }
78
133
  }
79
134
  export class TextNodeView extends NodeView {
80
135
  fonts;
136
+ /**
137
+ * Строка, применённая локализацией поверх авторской. Она переживает `updateNodeView`: без неё
138
+ * любая синхронизация документа возвращала бы fallback `node.text` вместо текущего перевода.
139
+ */
140
+ localizedText;
141
+ /** Последний применённый прямоугольник и стиль — их же переиспользует инкрементальный `setText`. */
142
+ lastTransform;
143
+ lastStyle;
81
144
  constructor(text, fonts) {
82
145
  super();
83
146
  this.fonts = fonts;
@@ -86,11 +149,116 @@ export class TextNodeView extends NodeView {
86
149
  syncContent(node, transform, profile) {
87
150
  if (node.type !== "text" || !(this.content instanceof Text))
88
151
  return;
89
- this.content.text = node.text;
152
+ const text = this.localizedText ?? node.text;
153
+ if (this.content.text !== text)
154
+ this.content.text = text;
90
155
  const style = resolveTextStyle(node, profile);
156
+ this.lastTransform = transform;
157
+ this.lastStyle = style;
91
158
  if (style === undefined)
92
159
  return;
93
- this.content.style = { fontFamily: style.fontAssetId === undefined ? style.fontFamily : this.fonts?.get(style.fontAssetId) ?? style.fontFamily, fontSize: style.fontSize, fontWeight: style.fontWeight, fontStyle: style.fontStyle, fill: style.fill, align: style.align, wordWrap: style.wordWrap, breakWords: style.breakWords, wordWrapWidth: transform.width, lineHeight: style.lineHeight, letterSpacing: style.letterSpacing, stroke: style.stroke === undefined ? undefined : { color: style.stroke.color, width: style.stroke.width } };
160
+ this.applyFittedStyle(this.content, node, style, transform);
161
+ this.align();
162
+ }
163
+ /**
164
+ * Applies the resolved style at the largest font size (down to `minFontSize`) that keeps the
165
+ * rendered text inside `transform`, when `autoSize` is on — the same "shrink, never grow past the
166
+ * authored size" contract as `BitmapTextNodeView.applyFittedStyle` / Unity legacy Text's Best Fit.
167
+ * A binary search over candidate sizes rather than a closed-form scale, because word-wrapped text
168
+ * re-flows at every size: a smaller font fits more words per line, so height doesn't shrink linearly
169
+ * with font size the way unwrapped bounds would — the same reasoning `measureOverflow` follows.
170
+ */
171
+ applyFittedStyle(text, node, style, transform) {
172
+ const baseStyle = { fontFamily: style.fontAssetId === undefined ? style.fontFamily : this.fonts?.get(style.fontAssetId) ?? style.fontFamily, fontWeight: style.fontWeight, fontStyle: style.fontStyle, fill: style.fill, align: style.align, wordWrap: style.wordWrap, breakWords: style.breakWords, wordWrapWidth: transform.width, lineHeight: style.lineHeight, letterSpacing: style.letterSpacing, stroke: style.stroke === undefined ? undefined : { color: style.stroke.color, width: style.stroke.width } };
173
+ const fits = (fontSize) => {
174
+ text.style = { ...baseStyle, fontSize };
175
+ // Headless loaders and schema tests have no browser canvas to measure against; they keep the
176
+ // authored fontSize, same boundary `align()` already respects.
177
+ if (typeof globalThis.document === "undefined")
178
+ return true;
179
+ const bounds = text.getLocalBounds();
180
+ const tolerance = 0.5;
181
+ return style.wordWrap
182
+ ? bounds.height <= transform.height + tolerance
183
+ : bounds.width <= transform.width + tolerance && bounds.height <= transform.height + tolerance;
184
+ };
185
+ // Always runs at least once, applying `baseStyle` at the authored size as a side effect — not
186
+ // just the shrink-check's fast path. Written as `||` short-circuit, `fits(style.fontSize)` would
187
+ // never execute while `autoSize` is off, leaving `text.style` frozen at whatever the constructor
188
+ // set it to and silently dropping every later font/color/align/wrap edit (see the identical fix
189
+ // in `BitmapTextNodeView.applyFittedStyle`).
190
+ const fitsAtAuthoredSize = fits(style.fontSize);
191
+ if (node.autoSize !== true || fitsAtAuthoredSize)
192
+ return;
193
+ const minFontSize = Math.min(node.minFontSize ?? 1, style.fontSize);
194
+ if (!fits(minFontSize))
195
+ return; // Best effort: even the floor overflows, so it stays at the floor.
196
+ let lo = minFontSize, hi = style.fontSize;
197
+ for (let i = 0; i < 8; i++) {
198
+ const mid = (lo + hi) / 2;
199
+ if (fits(mid))
200
+ lo = mid;
201
+ else
202
+ hi = mid;
203
+ }
204
+ fits(lo); // Leaves `text.style` applied at the converged, fitting size.
205
+ }
206
+ /**
207
+ * Инкрементальная смена строки: та же строка не делает работы вообще, новая — только переизмеряет
208
+ * и выравнивает текст в текущем authored rectangle. `TextStyle` не пересоздаётся, а сам view
209
+ * сохраняет identity, поэтому смена локали не трогает ни сцену, ни GPU-ресурсы стиля.
210
+ */
211
+ setText(text) {
212
+ if (!(this.content instanceof Text) || this.content.text === text)
213
+ return;
214
+ this.content.text = text;
215
+ this.align();
216
+ }
217
+ /** `undefined` возвращает ноду к авторской строке при следующей синхронизации документа. */
218
+ setLocalizedText(text) {
219
+ this.localizedText = text;
220
+ if (text !== undefined)
221
+ this.setText(text);
222
+ }
223
+ /**
224
+ * Rasterizes the canvas-based `Text` at a higher pixel density than the renderer's own backing
225
+ * resolution, so authoring-camera zoom doesn't magnify an already-rasterized bitmap past its
226
+ * source resolution. `Application.resolution` (see `resolveCanvasResolution`) only matches the
227
+ * *display's* pixel density — it knows nothing about the editor's independent camera zoom, which
228
+ * can reach 8x (`MAX_ZOOM`). Without this, zooming in to inspect a text node (exactly what
229
+ * `autoSize`/shrink-to-fit users do, since it converges to a smaller font) reads as soft/blurred
230
+ * even on a display this app already renders crisply on. A no-op if unchanged: assigning
231
+ * `.resolution` always re-rasterizes, so skip it when the caller (the authoring canvas, on every
232
+ * camera-zoom tick) passes back the same value.
233
+ */
234
+ setContentResolution(resolution) {
235
+ if (!(this.content instanceof Text) || this.content.resolution === resolution)
236
+ return;
237
+ this.content.resolution = resolution;
238
+ }
239
+ /**
240
+ * Вылезает ли фактически отрисованный текст за логический прямоугольник ноды.
241
+ *
242
+ * Меряется уже готовый `Text`, а не длина строки: перенос по словам, шрифт и обводка известны
243
+ * только рендеру. Без `wordWrap` переполнение возможно по ширине, с ним — по высоте, потому что
244
+ * перенос сам удерживает ширину в пределах `wordWrapWidth`. Диагностика transient: она ничего не
245
+ * пишет ни в документ, ни в view.
246
+ */
247
+ measureOverflow() {
248
+ const transform = this.lastTransform;
249
+ if (!(this.content instanceof Text) || transform === undefined || typeof globalThis.document === "undefined")
250
+ return false;
251
+ const bounds = this.content.getLocalBounds();
252
+ const tolerance = 0.5;
253
+ return this.lastStyle?.wordWrap === true
254
+ ? bounds.height > transform.height + tolerance
255
+ : bounds.width > transform.width + tolerance || bounds.height > transform.height + tolerance;
256
+ }
257
+ align() {
258
+ const transform = this.lastTransform;
259
+ const style = this.lastStyle;
260
+ if (!(this.content instanceof Text) || transform === undefined || style === undefined)
261
+ return;
94
262
  // Headless loaders and schema tests intentionally have no browser canvas. In that boundary
95
263
  // text still owns its authored rectangle; browser rendering keeps the precise measurement.
96
264
  const bounds = typeof globalThis.document === "undefined" ? { x: 0, y: 0, width: 0, height: 0 } : this.content.getLocalBounds();
@@ -98,6 +266,103 @@ export class TextNodeView extends NodeView {
98
266
  this.content.y = style.verticalAlign === "middle" ? (transform.height - bounds.height) / 2 - bounds.y : style.verticalAlign === "bottom" ? transform.height - bounds.height - bounds.y : -bounds.y;
99
267
  }
100
268
  }
269
+ /**
270
+ * A bitmap font's rendered glyphs come from its texture, not an arbitrary system/TTF face, so unlike
271
+ * `TextNodeView` there is no style-driven fallback: without a loaded font (asset deleted, still
272
+ * loading, or failed to parse) this draws the same missing-asset placeholder `ImageNodeView` does.
273
+ */
274
+ export class BitmapTextNodeView extends NodeView {
275
+ fonts;
276
+ lastTransform;
277
+ lastAlign = "left";
278
+ lastVerticalAlign = "top";
279
+ constructor(fonts) {
280
+ super();
281
+ this.fonts = fonts;
282
+ this.setContent(new Graphics());
283
+ }
284
+ syncContent(node, transform) {
285
+ if (node.type !== "bitmap-text")
286
+ return;
287
+ this.lastTransform = transform;
288
+ this.lastAlign = node.align;
289
+ this.lastVerticalAlign = node.verticalAlign;
290
+ const family = this.fonts?.get(node.assetId);
291
+ if (family === undefined) {
292
+ if (!(this.content instanceof Graphics))
293
+ this.setContent(new Graphics());
294
+ this.content.clear().rect(0, 0, transform.width, transform.height).fill(0x4a5568).stroke({ width: 1, color: 0x94a3b8 });
295
+ return;
296
+ }
297
+ if (!(this.content instanceof BitmapText))
298
+ this.setContent(new BitmapText({ text: node.text, style: { fontFamily: family, fontSize: node.fontSize, fill: node.fill } }));
299
+ const bitmapText = this.content;
300
+ if (bitmapText.text !== node.text)
301
+ bitmapText.text = node.text;
302
+ this.applyFittedStyle(bitmapText, node, family, transform);
303
+ this.align();
304
+ }
305
+ /**
306
+ * Applies the node's style at the largest font size (down to `minFontSize`) that keeps the text
307
+ * inside `transform`, when `autoSize` is on — the same "shrink, never grow past the authored size"
308
+ * contract as Unity legacy Text's Best Fit. A binary search over candidate sizes rather than a
309
+ * closed-form scale, because word-wrapped text re-flows at every size: a smaller font can fit more
310
+ * words per line, so height doesn't shrink linearly with font size the way unwrapped bounds would.
311
+ */
312
+ applyFittedStyle(bitmapText, node, family, transform) {
313
+ const baseStyle = { fontFamily: family, fill: node.fill, align: node.align, letterSpacing: node.letterSpacing, wordWrap: node.wordWrap, wordWrapWidth: transform.width };
314
+ const fits = (fontSize) => {
315
+ bitmapText.style = { ...baseStyle, fontSize };
316
+ // Headless loaders and schema tests have no browser canvas to measure against; they keep the
317
+ // authored fontSize, same boundary `align()` already respects.
318
+ if (typeof globalThis.document === "undefined")
319
+ return true;
320
+ const bounds = bitmapText.getLocalBounds();
321
+ const tolerance = 0.5;
322
+ return node.wordWrap
323
+ ? bounds.height <= transform.height + tolerance
324
+ : bounds.width <= transform.width + tolerance && bounds.height <= transform.height + tolerance;
325
+ };
326
+ // Always runs at least once, applying `baseStyle` at the authored size as a side effect — not
327
+ // just the shrink-check's fast path. Written as `||` short-circuit, `fits(node.fontSize)` would
328
+ // never execute while `autoSize` is off, leaving `bitmapText.style` frozen at whatever the
329
+ // constructor set it to and silently dropping every later fill/align/letterSpacing/wordWrap edit.
330
+ const fitsAtAuthoredSize = fits(node.fontSize);
331
+ if (node.autoSize !== true || fitsAtAuthoredSize)
332
+ return;
333
+ const minFontSize = Math.min(node.minFontSize ?? 1, node.fontSize);
334
+ if (!fits(minFontSize))
335
+ return; // Best effort: even the floor overflows, so it stays at the floor.
336
+ let lo = minFontSize, hi = node.fontSize;
337
+ for (let i = 0; i < 8; i++) {
338
+ const mid = (lo + hi) / 2;
339
+ if (fits(mid))
340
+ lo = mid;
341
+ else
342
+ hi = mid;
343
+ }
344
+ fits(lo); // Leaves `bitmapText.style` applied at the converged, fitting size.
345
+ }
346
+ /**
347
+ * Positions via PixiJS's own `anchor`, not a manual `getLocalBounds()` computation like
348
+ * `TextNodeView.align()` uses: `BitmapText.updateBounds()` reports a coarse line-metrics box
349
+ * (built from the font's `lineHeight`/`baseLineOffset`), not the tight pixel bounds a canvas
350
+ * `Text` or `Sprite` reports. Its own glyphs are drawn with an additional baseline-derived offset
351
+ * that box doesn't account for, so computing `-bounds.y`-style positions from it lands text
352
+ * slightly (but consistently, for every vertical setting) off — `anchor` is the one code path
353
+ * PixiJS keeps in sync with how it actually renders the glyphs.
354
+ */
355
+ align() {
356
+ const transform = this.lastTransform;
357
+ if (!(this.content instanceof BitmapText) || transform === undefined)
358
+ return;
359
+ const anchorX = this.lastAlign === "center" ? 0.5 : this.lastAlign === "right" ? 1 : 0;
360
+ const anchorY = this.lastVerticalAlign === "middle" ? 0.5 : this.lastVerticalAlign === "bottom" ? 1 : 0;
361
+ this.content.anchor.set(anchorX, anchorY);
362
+ this.content.x = anchorX * transform.width;
363
+ this.content.y = anchorY * transform.height;
364
+ }
365
+ }
101
366
  /**
102
367
  * Содержимое инстанса приходит обычными детьми из общего резолвера иерархии. Собственный контент
103
368
  * нужен только как заметная заглушка, когда определение пресета отсутствует в документе.
@@ -1 +1 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/views/basic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/views/basic.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { NodeView, type SceneInteractionMode } from "./NodeView.js";
7
7
  * `hasPrefab` только сообщает, существует ли определение пресета: содержимое инстанса приходит его
8
8
  * обычными детьми из общего резолвера иерархии, а не отдельной веткой сборки.
9
9
  */
10
- export declare function createNodeView(node: UINode, interaction: SceneInteractionMode, textures?: ReadonlyMap<string, Texture>, spines?: ReadonlyMap<string, SkeletonData>, hasPrefab?: (prefabId: string) => boolean, fonts?: ReadonlyMap<string, string>, sounds?: ReadonlyMap<string, Sound>, effect?: ParticleEffectDefinition, spineReferenceFrame?: SpineReferenceFrame, ticker?: Ticker): NodeView;
10
+ export declare function createNodeView(node: UINode, interaction: SceneInteractionMode, textures?: ReadonlyMap<string, Texture>, spines?: ReadonlyMap<string, SkeletonData>, hasPrefab?: (prefabId: string) => boolean, fonts?: ReadonlyMap<string, string>, sounds?: ReadonlyMap<string, Sound>, effect?: ParticleEffectDefinition, spineReferenceFrame?: SpineReferenceFrame, ticker?: Ticker, bitmapFonts?: ReadonlyMap<string, string>): NodeView;
11
11
  /**
12
12
  * Every asset a node references: the image, the Spine data, or each of a button's state images.
13
13
  * Single source of truth for "which assets does this node use" — texture loading and the editor's
@@ -1 +1 @@
1
- {"version":3,"file":"createNodeView.d.ts","sourceRoot":"","sources":["../../src/views/createNodeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACjI,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAa,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAI1D,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAMpE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,wBAAwB,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CA6BjY;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA8C1D"}
1
+ {"version":3,"file":"createNodeView.d.ts","sourceRoot":"","sources":["../../src/views/createNodeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtJ,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAa,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAK1D,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAOpE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,wBAAwB,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,CAqC5a;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA8D1D"}
@@ -1,19 +1,23 @@
1
- import { BUTTON_STATE_KEYS } from "@pixi-ui-editor/schema";
1
+ import { BUTTON_STATE_KEYS, CHECKBOX_STATE_KEYS } from "@pixi-ui-editor/schema";
2
2
  import { ButtonNodeView } from "./ButtonNodeView.js";
3
- import { ContainerNodeView, ImageNodeView, LayoutGroupNodeView, PrefabInstanceNodeView, TextNodeView } from "./basic.js";
3
+ import { CheckboxNodeView } from "./CheckboxNodeView.js";
4
+ import { BitmapTextNodeView, ContainerNodeView, ImageNodeView, LayoutGroupNodeView, MaskNodeView, PrefabInstanceNodeView, TextNodeView } from "./basic.js";
4
5
  import { InputNodeView } from "./InputNodeView.js";
5
6
  import { ScrollViewNodeView } from "./ScrollViewNodeView.js";
6
7
  import { SpineNodeView } from "./SpineNodeView.js";
8
+ import { StagedButtonNodeView } from "./StagedButtonNodeView.js";
7
9
  import { ProgressBarNodeView, SliderNodeView } from "./ValueControlNodeViews.js";
8
10
  import { ParticleEmitterNodeView } from "./ParticleEmitterNodeView.js";
9
11
  /**
10
12
  * `hasPrefab` только сообщает, существует ли определение пресета: содержимое инстанса приходит его
11
13
  * обычными детьми из общего резолвера иерархии, а не отдельной веткой сборки.
12
14
  */
13
- export function createNodeView(node, interaction, textures, spines, hasPrefab, fonts, sounds, effect, spineReferenceFrame, ticker) {
15
+ export function createNodeView(node, interaction, textures, spines, hasPrefab, fonts, sounds, effect, spineReferenceFrame, ticker, bitmapFonts) {
14
16
  switch (node.type) {
15
17
  case "container":
16
18
  return new ContainerNodeView();
19
+ case "mask":
20
+ return new MaskNodeView();
17
21
  case "horizontal-layout":
18
22
  case "vertical-layout":
19
23
  case "grid-layout":
@@ -21,13 +25,19 @@ export function createNodeView(node, interaction, textures, spines, hasPrefab, f
21
25
  case "scroll-view":
22
26
  return new ScrollViewNodeView(node, textures, interaction);
23
27
  case "image":
24
- return new ImageNodeView(node.assetId, textures);
28
+ return new ImageNodeView(node.assetId, textures, node.nineSlice);
25
29
  case "text":
26
30
  return new TextNodeView(node.text, fonts);
31
+ case "bitmap-text":
32
+ return new BitmapTextNodeView(bitmapFonts);
27
33
  case "spine":
28
34
  return new SpineNodeView(spines?.get(node.assetId), node.animation, node.autoplay ?? true, node.loop ?? true, node.animationSpeed ?? 1, interaction === "authoring", spineReferenceFrame, ticker);
29
35
  case "button":
30
36
  return new ButtonNodeView(node, textures, interaction, sounds);
37
+ case "staged-button":
38
+ return new StagedButtonNodeView(node, textures, interaction, sounds);
39
+ case "checkbox":
40
+ return new CheckboxNodeView(node, textures, interaction, sounds);
31
41
  case "input":
32
42
  return new InputNodeView(node, textures, interaction, fonts);
33
43
  case "slider":
@@ -58,7 +68,21 @@ export function collectNodeAssetIds(node) {
58
68
  .filter((assetId) => assetId !== undefined),
59
69
  ...[node.sounds?.pressAssetId, node.sounds?.hoverAssetId].filter((assetId) => assetId !== undefined),
60
70
  ];
71
+ case "staged-button":
72
+ return [...new Set([
73
+ ...node.stages.flatMap((stage) => BUTTON_STATE_KEYS.map((state) => stage.states[`${state}AssetId`])),
74
+ node.sounds?.pressAssetId,
75
+ node.sounds?.hoverAssetId,
76
+ ].filter((assetId) => assetId !== undefined))];
77
+ case "checkbox":
78
+ return [
79
+ ...CHECKBOX_STATE_KEYS
80
+ .map((state) => node.states[`${state}AssetId`])
81
+ .filter((assetId) => assetId !== undefined),
82
+ ...[node.sounds?.checkAssetId, node.sounds?.uncheckAssetId].filter((assetId) => assetId !== undefined),
83
+ ];
61
84
  case "container":
85
+ case "mask":
62
86
  case "prefab-instance":
63
87
  return [];
64
88
  case "horizontal-layout":
@@ -75,6 +99,8 @@ export function collectNodeAssetIds(node) {
75
99
  node.textStyleOverrides?.desktop?.fontAssetId,
76
100
  node.textStyleOverrides?.mobile?.fontAssetId,
77
101
  ].filter((assetId) => assetId !== undefined))];
102
+ case "bitmap-text":
103
+ return [node.assetId];
78
104
  case "input": {
79
105
  const ids = [];
80
106
  if (node.backgroundAssetId !== undefined)