@visactor/vrender-core 0.17.0-alpha.8 → 0.17.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 (706) hide show
  1. package/cjs/allocator/bounds-allocate.d.ts +13 -0
  2. package/cjs/allocator/bounds-allocate.js +38 -0
  3. package/cjs/allocator/bounds-allocate.js.map +1 -0
  4. package/cjs/allocator/canvas-allocate.d.ts +4 -0
  5. package/cjs/allocator/canvas-allocate.js +19 -6
  6. package/cjs/allocator/canvas-allocate.js.map +1 -1
  7. package/cjs/allocator/graphic-allocate.d.ts +56 -1
  8. package/cjs/allocator/graphic-allocate.js +163 -1
  9. package/cjs/allocator/graphic-allocate.js.map +1 -1
  10. package/cjs/animate/Ticker/default-ticker.js +3 -3
  11. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  12. package/cjs/animate/animate.js +2 -2
  13. package/cjs/animate/animate.js.map +1 -1
  14. package/cjs/animate/config.js +1 -2
  15. package/cjs/animate/custom-animate.d.ts +14 -3
  16. package/cjs/animate/custom-animate.js +100 -5
  17. package/cjs/animate/custom-animate.js.map +1 -1
  18. package/cjs/animate/default-ticker.js +2 -1
  19. package/cjs/canvas/contributions/base-canvas.js +4 -2
  20. package/cjs/canvas/contributions/base-canvas.js.map +1 -1
  21. package/cjs/common/Reflect-metadata.js +349 -359
  22. package/cjs/common/Reflect-metadata.js.map +1 -1
  23. package/cjs/common/bounds-context.js +2 -1
  24. package/cjs/common/inversify/annotation/inject.d.ts +1 -0
  25. package/cjs/common/inversify/annotation/inject.js +10 -0
  26. package/cjs/common/inversify/annotation/inject.js.map +1 -0
  27. package/cjs/common/inversify/annotation/inject_base.d.ts +14 -0
  28. package/cjs/common/inversify/annotation/inject_base.js +39 -0
  29. package/cjs/common/inversify/annotation/inject_base.js.map +1 -0
  30. package/cjs/common/inversify/annotation/injectable.d.ts +1 -0
  31. package/cjs/common/{inversify-lite/annotation/post_construct.js → inversify/annotation/injectable.js} +15 -5
  32. package/cjs/common/inversify/annotation/injectable.js.map +1 -0
  33. package/cjs/common/inversify/annotation/multi_inject.d.ts +1 -0
  34. package/cjs/common/inversify/annotation/multi_inject.js +10 -0
  35. package/cjs/common/inversify/annotation/multi_inject.js.map +1 -0
  36. package/cjs/common/inversify/annotation/named.d.ts +1 -0
  37. package/cjs/common/inversify/annotation/named.js +14 -0
  38. package/cjs/common/inversify/annotation/named.js.map +1 -0
  39. package/cjs/common/inversify/binding.d.ts +18 -0
  40. package/cjs/common/inversify/binding.js +26 -0
  41. package/cjs/common/inversify/binding.js.map +1 -0
  42. package/cjs/common/inversify/container.d.ts +28 -0
  43. package/cjs/common/inversify/container.js +155 -0
  44. package/cjs/common/inversify/container.js.map +1 -0
  45. package/cjs/common/inversify/cotainer-module.d.ts +6 -0
  46. package/cjs/common/inversify/cotainer-module.js +16 -0
  47. package/cjs/common/inversify/cotainer-module.js.map +1 -0
  48. package/cjs/common/inversify/index.d.ts +7 -0
  49. package/cjs/common/inversify/index.js +75 -0
  50. package/cjs/common/inversify/index.js.map +1 -0
  51. package/cjs/common/inversify/interfaces.d.ts +218 -0
  52. package/cjs/common/inversify/interfaces.js +6 -0
  53. package/cjs/common/inversify/interfaces.js.map +1 -0
  54. package/cjs/common/inversify/literal_types.d.ts +5 -0
  55. package/cjs/common/inversify/literal_types.js +34 -0
  56. package/cjs/common/inversify/literal_types.js.map +1 -0
  57. package/cjs/common/inversify/meta-data.d.ts +6 -0
  58. package/cjs/common/inversify/meta-data.js +19 -0
  59. package/cjs/common/inversify/meta-data.js.map +1 -0
  60. package/cjs/common/inversify/metadata_keys.d.ts +12 -0
  61. package/cjs/common/inversify/metadata_keys.js +15 -0
  62. package/cjs/common/inversify/metadata_keys.js.map +1 -0
  63. package/cjs/common/inversify/metadata_reader.d.ts +6 -0
  64. package/cjs/common/inversify/metadata_reader.js +28 -0
  65. package/cjs/common/inversify/metadata_reader.js.map +1 -0
  66. package/cjs/common/inversify/syntax/binding_in_syntax.d.ts +10 -0
  67. package/cjs/common/inversify/syntax/binding_in_syntax.js +29 -0
  68. package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -0
  69. package/cjs/common/inversify/syntax/binding_to_syntax.d.ts +12 -0
  70. package/cjs/common/inversify/syntax/binding_to_syntax.js +40 -0
  71. package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -0
  72. package/cjs/common/inversify/syntax/constraint_helpers.d.ts +2 -0
  73. package/cjs/common/inversify/syntax/constraint_helpers.js +20 -0
  74. package/cjs/common/inversify/syntax/constraint_helpers.js.map +1 -0
  75. package/cjs/common/inversify-lite/container/container.js +1 -3
  76. package/cjs/common/inversify-lite/container/container.js.map +1 -1
  77. package/cjs/common/inversify-lite/index.d.ts +1 -8
  78. package/cjs/common/inversify-lite/index.js +1 -64
  79. package/cjs/common/inversify-lite/index.js.map +1 -1
  80. package/cjs/common/inversify-lite/interfaces/interfaces.d.ts +0 -2
  81. package/cjs/common/inversify-lite/interfaces/interfaces.js.map +1 -1
  82. package/cjs/common/inversify-lite/planning/queryable_string.d.ts +0 -2
  83. package/cjs/common/inversify-lite/planning/queryable_string.js +0 -10
  84. package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
  85. package/cjs/common/inversify-lite/resolution/resolver.js.map +1 -1
  86. package/cjs/common/segment/monotone.js +2 -2
  87. package/cjs/common/segment/monotone.js.map +1 -1
  88. package/cjs/common/shape/rect.js +2 -1
  89. package/cjs/common/shape/rect.js.map +1 -1
  90. package/cjs/common/sort.js +1 -2
  91. package/cjs/common/store.js +2 -1
  92. package/cjs/common/utils.d.ts +1 -0
  93. package/cjs/common/utils.js +10 -1
  94. package/cjs/common/utils.js.map +1 -1
  95. package/cjs/common/xml/OrderedObjParser.js +2 -2
  96. package/cjs/common/xml/OrderedObjParser.js.map +1 -1
  97. package/cjs/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
  98. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +4 -9
  99. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  100. package/cjs/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
  101. package/cjs/core/contributions/layerHandler/empty-contribution.js +4 -9
  102. package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  103. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
  104. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +4 -9
  105. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  106. package/cjs/core/contributions/textMeasure/AtextMeasure.d.ts +14 -2
  107. package/cjs/core/contributions/textMeasure/AtextMeasure.js +99 -13
  108. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  109. package/cjs/core/contributions/textMeasure/layout.d.ts +2 -2
  110. package/cjs/core/contributions/textMeasure/layout.js +4 -4
  111. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  112. package/cjs/core/contributions/textMeasure/modules.js +1 -2
  113. package/cjs/core/contributions/textMeasure/modules.js.map +1 -1
  114. package/cjs/core/core-modules.js +5 -6
  115. package/cjs/core/core-modules.js.map +1 -1
  116. package/cjs/core/global-module.js +2 -0
  117. package/cjs/core/global.d.ts +9 -0
  118. package/cjs/core/global.js +23 -5
  119. package/cjs/core/global.js.map +1 -1
  120. package/cjs/core/graphic-utils.d.ts +7 -4
  121. package/cjs/core/graphic-utils.js +18 -14
  122. package/cjs/core/graphic-utils.js.map +1 -1
  123. package/cjs/core/layer-service.d.ts +5 -2
  124. package/cjs/core/layer-service.js +17 -15
  125. package/cjs/core/layer-service.js.map +1 -1
  126. package/cjs/core/stage.d.ts +8 -4
  127. package/cjs/core/stage.js +42 -27
  128. package/cjs/core/stage.js.map +1 -1
  129. package/cjs/core/window.d.ts +2 -2
  130. package/cjs/core/window.js +7 -12
  131. package/cjs/core/window.js.map +1 -1
  132. package/cjs/env-check.d.ts +3 -0
  133. package/cjs/env-check.js +19 -0
  134. package/cjs/env-check.js.map +1 -0
  135. package/cjs/event/event-manager.d.ts +5 -1
  136. package/cjs/event/event-manager.js +31 -25
  137. package/cjs/event/event-manager.js.map +1 -1
  138. package/cjs/event/event-system.js +12 -11
  139. package/cjs/event/event-system.js.map +1 -1
  140. package/cjs/event/federated-event/base-event.d.ts +5 -6
  141. package/cjs/event/federated-event/base-event.js +15 -5
  142. package/cjs/event/federated-event/base-event.js.map +1 -1
  143. package/cjs/event/federated-event/mouse-event.d.ts +6 -6
  144. package/cjs/event/federated-event/mouse-event.js +17 -3
  145. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  146. package/cjs/graphic/area.js +1 -0
  147. package/cjs/graphic/area.js.map +1 -1
  148. package/cjs/graphic/builtin-symbol/index.d.ts +1 -0
  149. package/cjs/graphic/builtin-symbol/index.js +7 -2
  150. package/cjs/graphic/builtin-symbol/index.js.map +1 -1
  151. package/cjs/graphic/builtin-symbol/rect.d.ts +2 -1
  152. package/cjs/graphic/builtin-symbol/rect.js +11 -6
  153. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  154. package/cjs/graphic/config.js +11 -3
  155. package/cjs/graphic/config.js.map +1 -1
  156. package/cjs/graphic/graphic-service/arc-contribution.d.ts +1 -5
  157. package/cjs/graphic/graphic-service/arc-contribution.js +0 -18
  158. package/cjs/graphic/graphic-service/arc-contribution.js.map +1 -1
  159. package/cjs/graphic/graphic-service/area-contribution.d.ts +1 -1
  160. package/cjs/graphic/graphic-service/area-contribution.js +1 -4
  161. package/cjs/graphic/graphic-service/area-contribution.js.map +1 -1
  162. package/cjs/graphic/graphic-service/circle-contribution.d.ts +1 -5
  163. package/cjs/graphic/graphic-service/circle-contribution.js +0 -18
  164. package/cjs/graphic/graphic-service/circle-contribution.js.map +1 -1
  165. package/cjs/graphic/graphic-service/common-contribution.js +2 -11
  166. package/cjs/graphic/graphic-service/common-contribution.js.map +1 -1
  167. package/cjs/graphic/graphic-service/graphic-module.js +2 -17
  168. package/cjs/graphic/graphic-service/graphic-module.js.map +1 -1
  169. package/cjs/graphic/graphic-service/graphic-service.d.ts +5 -9
  170. package/cjs/graphic/graphic-service/graphic-service.js +43 -32
  171. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  172. package/cjs/graphic/graphic-service/path-contribution.d.ts +1 -5
  173. package/cjs/graphic/graphic-service/path-contribution.js +0 -18
  174. package/cjs/graphic/graphic-service/path-contribution.js.map +1 -1
  175. package/cjs/graphic/graphic-service/rect-contribution.d.ts +1 -5
  176. package/cjs/graphic/graphic-service/rect-contribution.js +0 -18
  177. package/cjs/graphic/graphic-service/rect-contribution.js.map +1 -1
  178. package/cjs/graphic/graphic-service/symbol-contribution.d.ts +0 -1
  179. package/cjs/graphic/graphic-service/symbol-contribution.js +4 -13
  180. package/cjs/graphic/graphic-service/symbol-contribution.js.map +1 -1
  181. package/cjs/graphic/graphic.js +9 -7
  182. package/cjs/graphic/graphic.js.map +1 -1
  183. package/cjs/graphic/group.d.ts +1 -0
  184. package/cjs/graphic/group.js +7 -3
  185. package/cjs/graphic/group.js.map +1 -1
  186. package/cjs/graphic/line.js +1 -0
  187. package/cjs/graphic/line.js.map +1 -1
  188. package/cjs/graphic/node-tree.js +1 -1
  189. package/cjs/graphic/node-tree.js.map +1 -1
  190. package/cjs/graphic/rect.d.ts +2 -3
  191. package/cjs/graphic/rect.js +3 -5
  192. package/cjs/graphic/rect.js.map +1 -1
  193. package/cjs/graphic/richtext/line.d.ts +1 -0
  194. package/cjs/graphic/richtext/line.js +6 -3
  195. package/cjs/graphic/richtext/line.js.map +1 -1
  196. package/cjs/graphic/richtext/paragraph.js +12 -11
  197. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  198. package/cjs/graphic/richtext/utils.js +2 -1
  199. package/cjs/graphic/richtext/utils.js.map +1 -1
  200. package/cjs/graphic/richtext.d.ts +3 -3
  201. package/cjs/graphic/richtext.js +12 -3
  202. package/cjs/graphic/richtext.js.map +1 -1
  203. package/cjs/graphic/symbol.js +11 -9
  204. package/cjs/graphic/symbol.js.map +1 -1
  205. package/cjs/graphic/text.d.ts +1 -0
  206. package/cjs/graphic/text.js +97 -11
  207. package/cjs/graphic/text.js.map +1 -1
  208. package/cjs/graphic/theme.d.ts +4 -4
  209. package/cjs/graphic/theme.js +26 -27
  210. package/cjs/graphic/theme.js.map +1 -1
  211. package/cjs/graphic/tools.js +1 -1
  212. package/cjs/graphic/tools.js.map +1 -1
  213. package/cjs/graphic/wrap-text.js +6 -5
  214. package/cjs/graphic/wrap-text.js.map +1 -1
  215. package/cjs/index.d.ts +3 -0
  216. package/cjs/index.js +3 -1
  217. package/cjs/index.js.map +1 -1
  218. package/cjs/interface/allocator.d.ts +1 -0
  219. package/cjs/interface/allocator.js.map +1 -1
  220. package/cjs/interface/event.d.ts +15 -44
  221. package/cjs/interface/event.js.map +1 -1
  222. package/cjs/interface/global.d.ts +1 -0
  223. package/cjs/interface/global.js.map +1 -1
  224. package/cjs/interface/graphic/rect.d.ts +2 -0
  225. package/cjs/interface/graphic/rect.js.map +1 -1
  226. package/cjs/interface/graphic/richText.d.ts +1 -1
  227. package/cjs/interface/graphic/richText.js.map +1 -1
  228. package/cjs/interface/graphic/text.d.ts +5 -1
  229. package/cjs/interface/graphic/text.js.map +1 -1
  230. package/cjs/interface/graphic.d.ts +3 -2
  231. package/cjs/interface/graphic.js.map +1 -1
  232. package/cjs/interface/render.d.ts +2 -2
  233. package/cjs/interface/render.js.map +1 -1
  234. package/cjs/interface/stage.d.ts +8 -1
  235. package/cjs/interface/stage.js.map +1 -1
  236. package/cjs/interface/text.d.ts +2 -2
  237. package/cjs/interface/text.js.map +1 -1
  238. package/cjs/modules.d.ts +1 -2
  239. package/cjs/modules.js +8 -8
  240. package/cjs/modules.js.map +1 -1
  241. package/cjs/picker/global-picker-service.d.ts +2 -2
  242. package/cjs/picker/global-picker-service.js +4 -9
  243. package/cjs/picker/global-picker-service.js.map +1 -1
  244. package/cjs/picker/pick-interceptor.js +2 -1
  245. package/cjs/picker/pick-interceptor.js.map +1 -1
  246. package/cjs/picker/pick-modules.js +2 -4
  247. package/cjs/picker/pick-modules.js.map +1 -1
  248. package/cjs/picker/picker-service.d.ts +2 -2
  249. package/cjs/picker/picker-service.js +11 -7
  250. package/cjs/picker/picker-service.js.map +1 -1
  251. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +9 -5
  252. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  253. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
  254. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  255. package/cjs/plugins/plugin-modules.js +1 -2
  256. package/cjs/plugins/plugin-modules.js.map +1 -1
  257. package/cjs/render/contributions/render/arc-render.js +2 -1
  258. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  259. package/cjs/render/contributions/render/area-render.d.ts +1 -0
  260. package/cjs/render/contributions/render/area-render.js +44 -6
  261. package/cjs/render/contributions/render/area-render.js.map +1 -1
  262. package/cjs/render/contributions/render/base-render.d.ts +1 -1
  263. package/cjs/render/contributions/render/base-render.js +15 -18
  264. package/cjs/render/contributions/render/base-render.js.map +1 -1
  265. package/cjs/render/contributions/render/circle-render.js +2 -1
  266. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  267. package/cjs/render/contributions/render/contributions/arc-contribution-render.d.ts +3 -7
  268. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +7 -30
  269. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  270. package/cjs/render/contributions/render/contributions/area-contribution-render.d.ts +3 -4
  271. package/cjs/render/contributions/render/contributions/area-contribution-render.js +7 -21
  272. package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  273. package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +4 -0
  274. package/cjs/render/contributions/render/contributions/base-contribution-render.js +24 -15
  275. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  276. package/cjs/render/contributions/render/contributions/circle-contribution-render.d.ts +3 -7
  277. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +7 -30
  278. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  279. package/cjs/render/contributions/render/contributions/constants.d.ts +1 -0
  280. package/cjs/render/contributions/render/contributions/constants.js +2 -2
  281. package/cjs/render/contributions/render/contributions/constants.js.map +1 -1
  282. package/cjs/render/contributions/render/contributions/group-contribution-render.d.ts +1 -0
  283. package/cjs/render/contributions/render/contributions/group-contribution-render.js +8 -14
  284. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  285. package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +1 -0
  286. package/cjs/render/contributions/render/contributions/image-contribution-render.js +8 -15
  287. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  288. package/cjs/render/contributions/render/contributions/path-contribution-render.d.ts +2 -9
  289. package/cjs/render/contributions/render/contributions/path-contribution-render.js +4 -25
  290. package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  291. package/cjs/render/contributions/render/contributions/polygon-contribution-render.d.ts +2 -9
  292. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js +4 -25
  293. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  294. package/cjs/render/contributions/render/contributions/rect-contribution-render.d.ts +5 -7
  295. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +17 -37
  296. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  297. package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +3 -7
  298. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +6 -27
  299. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  300. package/cjs/render/contributions/render/contributions/text-contribution-render.d.ts +8 -1
  301. package/cjs/render/contributions/render/contributions/text-contribution-render.js +25 -1
  302. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  303. package/cjs/render/contributions/render/draw-contribution.d.ts +7 -6
  304. package/cjs/render/contributions/render/draw-contribution.js +44 -26
  305. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  306. package/cjs/render/contributions/render/draw-interceptor.d.ts +9 -1
  307. package/cjs/render/contributions/render/draw-interceptor.js +43 -28
  308. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  309. package/cjs/render/contributions/render/glyph-render.d.ts +1 -2
  310. package/cjs/render/contributions/render/glyph-render.js +13 -8
  311. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  312. package/cjs/render/contributions/render/group-render.js +3 -2
  313. package/cjs/render/contributions/render/group-render.js.map +1 -1
  314. package/cjs/render/contributions/render/image-render.js +4 -2
  315. package/cjs/render/contributions/render/image-render.js.map +1 -1
  316. package/cjs/render/contributions/render/incremental-draw-contribution.d.ts +2 -6
  317. package/cjs/render/contributions/render/incremental-draw-contribution.js +8 -11
  318. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  319. package/cjs/render/contributions/render/line-render.d.ts +1 -0
  320. package/cjs/render/contributions/render/line-render.js +21 -6
  321. package/cjs/render/contributions/render/line-render.js.map +1 -1
  322. package/cjs/render/contributions/render/module.js +32 -87
  323. package/cjs/render/contributions/render/module.js.map +1 -1
  324. package/cjs/render/contributions/render/path-render.d.ts +2 -1
  325. package/cjs/render/contributions/render/path-render.js +8 -5
  326. package/cjs/render/contributions/render/path-render.js.map +1 -1
  327. package/cjs/render/contributions/render/polygon-render.js +2 -1
  328. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  329. package/cjs/render/contributions/render/rect-render.d.ts +2 -1
  330. package/cjs/render/contributions/render/rect-render.js +11 -5
  331. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  332. package/cjs/render/contributions/render/render-slector.d.ts +1 -4
  333. package/cjs/render/contributions/render/render-slector.js +0 -20
  334. package/cjs/render/contributions/render/render-slector.js.map +1 -1
  335. package/cjs/render/contributions/render/richtext-render.d.ts +1 -0
  336. package/cjs/render/contributions/render/richtext-render.js +12 -7
  337. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  338. package/cjs/render/contributions/render/symbol-render.js +22 -5
  339. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  340. package/cjs/render/contributions/render/text-render.js +13 -10
  341. package/cjs/render/contributions/render/text-render.js.map +1 -1
  342. package/cjs/render/contributions/render/utils.js +2 -2
  343. package/cjs/render/contributions/render/utils.js.map +1 -1
  344. package/cjs/render/render-modules.js +1 -1
  345. package/cjs/render/render-modules.js.map +1 -1
  346. package/cjs/render/render-service.js +1 -1
  347. package/cjs/render/render-service.js.map +1 -1
  348. package/cjs/resource-loader/loader.js +1 -3
  349. package/cjs/resource-loader/loader.js.map +1 -1
  350. package/dist/index.js +6339 -6568
  351. package/dist/index.min.js +1 -1
  352. package/es/allocator/bounds-allocate.d.ts +13 -0
  353. package/es/allocator/bounds-allocate.js +32 -0
  354. package/es/allocator/bounds-allocate.js.map +1 -0
  355. package/es/allocator/canvas-allocate.d.ts +4 -0
  356. package/es/allocator/canvas-allocate.js +19 -6
  357. package/es/allocator/canvas-allocate.js.map +1 -1
  358. package/es/allocator/graphic-allocate.d.ts +56 -1
  359. package/es/allocator/graphic-allocate.js +155 -1
  360. package/es/allocator/graphic-allocate.js.map +1 -1
  361. package/es/animate/Ticker/default-ticker.js +4 -2
  362. package/es/animate/Ticker/default-ticker.js.map +1 -1
  363. package/es/animate/animate.js +3 -3
  364. package/es/animate/animate.js.map +1 -1
  365. package/es/animate/config.js +1 -2
  366. package/es/animate/custom-animate.d.ts +14 -3
  367. package/es/animate/custom-animate.js +103 -5
  368. package/es/animate/custom-animate.js.map +1 -1
  369. package/es/animate/default-ticker.js +2 -1
  370. package/es/canvas/contributions/base-canvas.js +4 -2
  371. package/es/canvas/contributions/base-canvas.js.map +1 -1
  372. package/es/common/Reflect-metadata.js +349 -359
  373. package/es/common/Reflect-metadata.js.map +1 -1
  374. package/es/common/bounds-context.js +2 -1
  375. package/es/common/inversify/annotation/inject.d.ts +1 -0
  376. package/es/common/inversify/annotation/inject.js +6 -0
  377. package/es/common/inversify/annotation/inject.js.map +1 -0
  378. package/es/common/inversify/annotation/inject_base.d.ts +14 -0
  379. package/es/common/inversify/annotation/inject_base.js +29 -0
  380. package/es/common/inversify/annotation/inject_base.js.map +1 -0
  381. package/es/common/inversify/annotation/injectable.d.ts +1 -0
  382. package/es/common/inversify/annotation/injectable.js +10 -0
  383. package/es/common/inversify/annotation/injectable.js.map +1 -0
  384. package/es/common/inversify/annotation/multi_inject.d.ts +1 -0
  385. package/es/common/inversify/annotation/multi_inject.js +6 -0
  386. package/es/common/inversify/annotation/multi_inject.js.map +1 -0
  387. package/es/common/inversify/annotation/named.d.ts +1 -0
  388. package/es/common/inversify/annotation/named.js +10 -0
  389. package/es/common/inversify/annotation/named.js.map +1 -0
  390. package/es/common/inversify/binding.d.ts +18 -0
  391. package/es/common/inversify/binding.js +22 -0
  392. package/es/common/inversify/binding.js.map +1 -0
  393. package/es/common/inversify/container.d.ts +28 -0
  394. package/es/common/inversify/container.js +155 -0
  395. package/es/common/inversify/container.js.map +1 -0
  396. package/es/common/inversify/cotainer-module.d.ts +6 -0
  397. package/es/common/inversify/cotainer-module.js +8 -0
  398. package/es/common/inversify/cotainer-module.js.map +1 -0
  399. package/es/common/inversify/index.d.ts +7 -0
  400. package/es/common/inversify/index.js +14 -0
  401. package/es/common/inversify/index.js.map +1 -0
  402. package/es/common/inversify/interfaces.d.ts +218 -0
  403. package/es/common/inversify/interfaces.js +2 -0
  404. package/es/common/inversify/interfaces.js.map +1 -0
  405. package/es/common/inversify/literal_types.d.ts +5 -0
  406. package/es/common/inversify/literal_types.js +20 -0
  407. package/es/common/inversify/literal_types.js.map +1 -0
  408. package/es/common/inversify/meta-data.d.ts +6 -0
  409. package/es/common/inversify/meta-data.js +11 -0
  410. package/es/common/inversify/meta-data.js.map +1 -0
  411. package/es/common/inversify/metadata_keys.d.ts +12 -0
  412. package/es/common/inversify/metadata_keys.js +28 -0
  413. package/es/common/inversify/metadata_keys.js.map +1 -0
  414. package/es/common/inversify/metadata_reader.d.ts +6 -0
  415. package/es/common/inversify/metadata_reader.js +18 -0
  416. package/es/common/inversify/metadata_reader.js.map +1 -0
  417. package/es/common/inversify/syntax/binding_in_syntax.d.ts +10 -0
  418. package/es/common/inversify/syntax/binding_in_syntax.js +24 -0
  419. package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -0
  420. package/es/common/inversify/syntax/binding_to_syntax.d.ts +12 -0
  421. package/es/common/inversify/syntax/binding_to_syntax.js +36 -0
  422. package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -0
  423. package/es/common/inversify/syntax/constraint_helpers.d.ts +2 -0
  424. package/es/common/inversify/syntax/constraint_helpers.js +18 -0
  425. package/es/common/inversify/syntax/constraint_helpers.js.map +1 -0
  426. package/es/common/inversify-lite/container/container.js +2 -4
  427. package/es/common/inversify-lite/container/container.js.map +1 -1
  428. package/es/common/inversify-lite/index.d.ts +1 -8
  429. package/es/common/inversify-lite/index.js +1 -15
  430. package/es/common/inversify-lite/index.js.map +1 -1
  431. package/es/common/inversify-lite/interfaces/interfaces.d.ts +0 -2
  432. package/es/common/inversify-lite/interfaces/interfaces.js.map +1 -1
  433. package/es/common/inversify-lite/planning/queryable_string.d.ts +0 -2
  434. package/es/common/inversify-lite/planning/queryable_string.js +0 -10
  435. package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
  436. package/es/common/inversify-lite/resolution/resolver.js.map +1 -1
  437. package/es/common/segment/monotone.js +2 -2
  438. package/es/common/segment/monotone.js.map +1 -1
  439. package/es/common/shape/rect.js +2 -1
  440. package/es/common/shape/rect.js.map +1 -1
  441. package/es/common/sort.js +1 -2
  442. package/es/common/store.js +2 -1
  443. package/es/common/utils.d.ts +1 -0
  444. package/es/common/utils.js +8 -1
  445. package/es/common/utils.js.map +1 -1
  446. package/es/common/xml/OrderedObjParser.js +2 -2
  447. package/es/common/xml/OrderedObjParser.js.map +1 -1
  448. package/es/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
  449. package/es/core/contributions/layerHandler/canvas2d-contribution.js +5 -9
  450. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  451. package/es/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
  452. package/es/core/contributions/layerHandler/empty-contribution.js +5 -9
  453. package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  454. package/es/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
  455. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -9
  456. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  457. package/es/core/contributions/textMeasure/AtextMeasure.d.ts +14 -2
  458. package/es/core/contributions/textMeasure/AtextMeasure.js +99 -13
  459. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  460. package/es/core/contributions/textMeasure/layout.d.ts +2 -2
  461. package/es/core/contributions/textMeasure/layout.js +4 -4
  462. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  463. package/es/core/contributions/textMeasure/modules.js +1 -1
  464. package/es/core/contributions/textMeasure/modules.js.map +1 -1
  465. package/es/core/core-modules.js +4 -6
  466. package/es/core/core-modules.js.map +1 -1
  467. package/es/core/global-module.js +2 -0
  468. package/es/core/global.d.ts +9 -0
  469. package/es/core/global.js +23 -4
  470. package/es/core/global.js.map +1 -1
  471. package/es/core/graphic-utils.d.ts +7 -4
  472. package/es/core/graphic-utils.js +20 -15
  473. package/es/core/graphic-utils.js.map +1 -1
  474. package/es/core/layer-service.d.ts +5 -2
  475. package/es/core/layer-service.js +18 -15
  476. package/es/core/layer-service.js.map +1 -1
  477. package/es/core/stage.d.ts +8 -4
  478. package/es/core/stage.js +47 -30
  479. package/es/core/stage.js.map +1 -1
  480. package/es/core/window.d.ts +2 -2
  481. package/es/core/window.js +8 -12
  482. package/es/core/window.js.map +1 -1
  483. package/es/env-check.d.ts +3 -0
  484. package/es/env-check.js +12 -0
  485. package/es/env-check.js.map +1 -0
  486. package/es/event/event-manager.d.ts +5 -1
  487. package/es/event/event-manager.js +32 -26
  488. package/es/event/event-manager.js.map +1 -1
  489. package/es/event/event-system.js +8 -6
  490. package/es/event/event-system.js.map +1 -1
  491. package/es/event/federated-event/base-event.d.ts +5 -6
  492. package/es/event/federated-event/base-event.js +15 -5
  493. package/es/event/federated-event/base-event.js.map +1 -1
  494. package/es/event/federated-event/mouse-event.d.ts +6 -6
  495. package/es/event/federated-event/mouse-event.js +16 -4
  496. package/es/event/federated-event/mouse-event.js.map +1 -1
  497. package/es/graphic/area.js +1 -0
  498. package/es/graphic/area.js.map +1 -1
  499. package/es/graphic/builtin-symbol/index.d.ts +1 -0
  500. package/es/graphic/builtin-symbol/index.js +7 -0
  501. package/es/graphic/builtin-symbol/index.js.map +1 -1
  502. package/es/graphic/builtin-symbol/rect.d.ts +2 -1
  503. package/es/graphic/builtin-symbol/rect.js +9 -4
  504. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  505. package/es/graphic/config.js +12 -4
  506. package/es/graphic/config.js.map +1 -1
  507. package/es/graphic/graphic-service/arc-contribution.d.ts +1 -5
  508. package/es/graphic/graphic-service/arc-contribution.js +0 -15
  509. package/es/graphic/graphic-service/arc-contribution.js.map +1 -1
  510. package/es/graphic/graphic-service/area-contribution.d.ts +1 -1
  511. package/es/graphic/graphic-service/area-contribution.js +2 -1
  512. package/es/graphic/graphic-service/area-contribution.js.map +1 -1
  513. package/es/graphic/graphic-service/circle-contribution.d.ts +1 -5
  514. package/es/graphic/graphic-service/circle-contribution.js +0 -15
  515. package/es/graphic/graphic-service/circle-contribution.js.map +1 -1
  516. package/es/graphic/graphic-service/common-contribution.js +2 -14
  517. package/es/graphic/graphic-service/common-contribution.js.map +1 -1
  518. package/es/graphic/graphic-service/graphic-module.js +1 -23
  519. package/es/graphic/graphic-service/graphic-module.js.map +1 -1
  520. package/es/graphic/graphic-service/graphic-service.d.ts +5 -9
  521. package/es/graphic/graphic-service/graphic-service.js +44 -34
  522. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  523. package/es/graphic/graphic-service/path-contribution.d.ts +1 -5
  524. package/es/graphic/graphic-service/path-contribution.js +0 -15
  525. package/es/graphic/graphic-service/path-contribution.js.map +1 -1
  526. package/es/graphic/graphic-service/rect-contribution.d.ts +1 -5
  527. package/es/graphic/graphic-service/rect-contribution.js +0 -15
  528. package/es/graphic/graphic-service/rect-contribution.js.map +1 -1
  529. package/es/graphic/graphic-service/symbol-contribution.d.ts +0 -1
  530. package/es/graphic/graphic-service/symbol-contribution.js +2 -16
  531. package/es/graphic/graphic-service/symbol-contribution.js.map +1 -1
  532. package/es/graphic/graphic.js +8 -6
  533. package/es/graphic/graphic.js.map +1 -1
  534. package/es/graphic/group.d.ts +1 -0
  535. package/es/graphic/group.js +8 -1
  536. package/es/graphic/group.js.map +1 -1
  537. package/es/graphic/line.js +1 -0
  538. package/es/graphic/line.js.map +1 -1
  539. package/es/graphic/node-tree.js +2 -2
  540. package/es/graphic/node-tree.js.map +1 -1
  541. package/es/graphic/rect.d.ts +2 -3
  542. package/es/graphic/rect.js +3 -7
  543. package/es/graphic/rect.js.map +1 -1
  544. package/es/graphic/richtext/line.d.ts +1 -0
  545. package/es/graphic/richtext/line.js +6 -4
  546. package/es/graphic/richtext/line.js.map +1 -1
  547. package/es/graphic/richtext/paragraph.js +5 -2
  548. package/es/graphic/richtext/paragraph.js.map +1 -1
  549. package/es/graphic/richtext/utils.js +2 -1
  550. package/es/graphic/richtext/utils.js.map +1 -1
  551. package/es/graphic/richtext.d.ts +3 -3
  552. package/es/graphic/richtext.js +12 -3
  553. package/es/graphic/richtext.js.map +1 -1
  554. package/es/graphic/symbol.js +11 -10
  555. package/es/graphic/symbol.js.map +1 -1
  556. package/es/graphic/text.d.ts +1 -0
  557. package/es/graphic/text.js +94 -13
  558. package/es/graphic/text.js.map +1 -1
  559. package/es/graphic/theme.d.ts +4 -4
  560. package/es/graphic/theme.js +27 -28
  561. package/es/graphic/theme.js.map +1 -1
  562. package/es/graphic/tools.js +1 -1
  563. package/es/graphic/tools.js.map +1 -1
  564. package/es/graphic/wrap-text.js +6 -4
  565. package/es/graphic/wrap-text.js.map +1 -1
  566. package/es/index.d.ts +3 -0
  567. package/es/index.js +6 -0
  568. package/es/index.js.map +1 -1
  569. package/es/interface/allocator.d.ts +1 -0
  570. package/es/interface/allocator.js.map +1 -1
  571. package/es/interface/event.d.ts +15 -44
  572. package/es/interface/event.js.map +1 -1
  573. package/es/interface/global.d.ts +1 -0
  574. package/es/interface/global.js.map +1 -1
  575. package/es/interface/graphic/rect.d.ts +2 -0
  576. package/es/interface/graphic/rect.js.map +1 -1
  577. package/es/interface/graphic/richText.d.ts +1 -1
  578. package/es/interface/graphic/richText.js.map +1 -1
  579. package/es/interface/graphic/text.d.ts +5 -1
  580. package/es/interface/graphic/text.js.map +1 -1
  581. package/es/interface/graphic.d.ts +3 -2
  582. package/es/interface/graphic.js.map +1 -1
  583. package/es/interface/render.d.ts +2 -2
  584. package/es/interface/render.js.map +1 -1
  585. package/es/interface/stage.d.ts +8 -1
  586. package/es/interface/stage.js.map +1 -1
  587. package/es/interface/text.d.ts +2 -2
  588. package/es/interface/text.js.map +1 -1
  589. package/es/modules.d.ts +1 -2
  590. package/es/modules.js +0 -4
  591. package/es/modules.js.map +1 -1
  592. package/es/picker/global-picker-service.d.ts +2 -2
  593. package/es/picker/global-picker-service.js +5 -9
  594. package/es/picker/global-picker-service.js.map +1 -1
  595. package/es/picker/pick-interceptor.js +2 -1
  596. package/es/picker/pick-interceptor.js.map +1 -1
  597. package/es/picker/pick-modules.js +1 -4
  598. package/es/picker/pick-modules.js.map +1 -1
  599. package/es/picker/picker-service.d.ts +2 -2
  600. package/es/picker/picker-service.js +10 -6
  601. package/es/picker/picker-service.js.map +1 -1
  602. package/es/plugins/builtin-plugin/flex-layout-plugin.js +12 -6
  603. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  604. package/es/plugins/builtin-plugin/html-attribute-plugin.js +1 -1
  605. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  606. package/es/plugins/plugin-modules.js +1 -2
  607. package/es/plugins/plugin-modules.js.map +1 -1
  608. package/es/render/contributions/render/arc-render.js +3 -0
  609. package/es/render/contributions/render/arc-render.js.map +1 -1
  610. package/es/render/contributions/render/area-render.d.ts +1 -0
  611. package/es/render/contributions/render/area-render.js +45 -5
  612. package/es/render/contributions/render/area-render.js.map +1 -1
  613. package/es/render/contributions/render/base-render.d.ts +1 -1
  614. package/es/render/contributions/render/base-render.js +15 -22
  615. package/es/render/contributions/render/base-render.js.map +1 -1
  616. package/es/render/contributions/render/circle-render.js +3 -0
  617. package/es/render/contributions/render/circle-render.js.map +1 -1
  618. package/es/render/contributions/render/contributions/arc-contribution-render.d.ts +3 -7
  619. package/es/render/contributions/render/contributions/arc-contribution-render.js +6 -32
  620. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  621. package/es/render/contributions/render/contributions/area-contribution-render.d.ts +3 -4
  622. package/es/render/contributions/render/contributions/area-contribution-render.js +5 -23
  623. package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  624. package/es/render/contributions/render/contributions/base-contribution-render.d.ts +4 -0
  625. package/es/render/contributions/render/contributions/base-contribution-render.js +21 -16
  626. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  627. package/es/render/contributions/render/contributions/circle-contribution-render.d.ts +3 -7
  628. package/es/render/contributions/render/contributions/circle-contribution-render.js +6 -32
  629. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  630. package/es/render/contributions/render/contributions/constants.d.ts +1 -0
  631. package/es/render/contributions/render/contributions/constants.js +2 -0
  632. package/es/render/contributions/render/contributions/constants.js.map +1 -1
  633. package/es/render/contributions/render/contributions/group-contribution-render.d.ts +1 -0
  634. package/es/render/contributions/render/contributions/group-contribution-render.js +5 -15
  635. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  636. package/es/render/contributions/render/contributions/image-contribution-render.d.ts +1 -0
  637. package/es/render/contributions/render/contributions/image-contribution-render.js +6 -17
  638. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  639. package/es/render/contributions/render/contributions/path-contribution-render.d.ts +2 -9
  640. package/es/render/contributions/render/contributions/path-contribution-render.js +3 -29
  641. package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  642. package/es/render/contributions/render/contributions/polygon-contribution-render.d.ts +2 -9
  643. package/es/render/contributions/render/contributions/polygon-contribution-render.js +3 -29
  644. package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  645. package/es/render/contributions/render/contributions/rect-contribution-render.d.ts +5 -7
  646. package/es/render/contributions/render/contributions/rect-contribution-render.js +19 -46
  647. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  648. package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +3 -7
  649. package/es/render/contributions/render/contributions/symbol-contribution-render.js +6 -24
  650. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  651. package/es/render/contributions/render/contributions/text-contribution-render.d.ts +8 -1
  652. package/es/render/contributions/render/contributions/text-contribution-render.js +24 -1
  653. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  654. package/es/render/contributions/render/draw-contribution.d.ts +7 -6
  655. package/es/render/contributions/render/draw-contribution.js +49 -29
  656. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  657. package/es/render/contributions/render/draw-interceptor.d.ts +9 -1
  658. package/es/render/contributions/render/draw-interceptor.js +40 -36
  659. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  660. package/es/render/contributions/render/glyph-render.d.ts +1 -2
  661. package/es/render/contributions/render/glyph-render.js +12 -9
  662. package/es/render/contributions/render/glyph-render.js.map +1 -1
  663. package/es/render/contributions/render/group-render.js +4 -1
  664. package/es/render/contributions/render/group-render.js.map +1 -1
  665. package/es/render/contributions/render/image-render.js +5 -2
  666. package/es/render/contributions/render/image-render.js.map +1 -1
  667. package/es/render/contributions/render/incremental-draw-contribution.d.ts +2 -6
  668. package/es/render/contributions/render/incremental-draw-contribution.js +5 -11
  669. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  670. package/es/render/contributions/render/line-render.d.ts +1 -0
  671. package/es/render/contributions/render/line-render.js +21 -6
  672. package/es/render/contributions/render/line-render.js.map +1 -1
  673. package/es/render/contributions/render/module.js +29 -83
  674. package/es/render/contributions/render/module.js.map +1 -1
  675. package/es/render/contributions/render/path-render.d.ts +2 -1
  676. package/es/render/contributions/render/path-render.js +8 -4
  677. package/es/render/contributions/render/path-render.js.map +1 -1
  678. package/es/render/contributions/render/polygon-render.js +3 -0
  679. package/es/render/contributions/render/polygon-render.js.map +1 -1
  680. package/es/render/contributions/render/rect-render.d.ts +2 -1
  681. package/es/render/contributions/render/rect-render.js +11 -3
  682. package/es/render/contributions/render/rect-render.js.map +1 -1
  683. package/es/render/contributions/render/render-slector.d.ts +1 -4
  684. package/es/render/contributions/render/render-slector.js +0 -15
  685. package/es/render/contributions/render/render-slector.js.map +1 -1
  686. package/es/render/contributions/render/richtext-render.d.ts +1 -0
  687. package/es/render/contributions/render/richtext-render.js +12 -6
  688. package/es/render/contributions/render/richtext-render.js.map +1 -1
  689. package/es/render/contributions/render/symbol-render.js +23 -4
  690. package/es/render/contributions/render/symbol-render.js.map +1 -1
  691. package/es/render/contributions/render/text-render.js +16 -10
  692. package/es/render/contributions/render/text-render.js.map +1 -1
  693. package/es/render/contributions/render/utils.js +2 -2
  694. package/es/render/contributions/render/utils.js.map +1 -1
  695. package/es/render/render-modules.js +1 -1
  696. package/es/render/render-modules.js.map +1 -1
  697. package/es/render/render-service.js +1 -1
  698. package/es/render/render-service.js.map +1 -1
  699. package/es/resource-loader/loader.js +1 -3
  700. package/es/resource-loader/loader.js.map +1 -1
  701. package/package.json +6 -4
  702. package/cjs/common/inversify-lite/annotation/post_construct.d.ts +0 -4
  703. package/cjs/common/inversify-lite/annotation/post_construct.js.map +0 -1
  704. package/es/common/inversify-lite/annotation/post_construct.d.ts +0 -4
  705. package/es/common/inversify-lite/annotation/post_construct.js +0 -10
  706. package/es/common/inversify-lite/annotation/post_construct.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/inversify-lite/interfaces/interfaces.ts"],"names":[],"mappings":"","file":"interfaces.js","sourcesContent":["// @ts-nocheck\n/* eslint-disable */\nimport { FactoryType } from '../utils/factory_type';\n\nexport namespace interfaces {\n export type DynamicValue<T> = (context: interfaces.Context) => T | Promise<T>;\n export type ContainerResolution<T> = T | Promise<T> | (T | Promise<T>)[];\n\n type AsyncCallback<TCallback> = TCallback extends (...args: infer TArgs) => infer TResult\n ? (...args: TArgs) => Promise<TResult>\n : never;\n\n export type BindingScope = 'Singleton' | 'Transient' | 'Request';\n\n export type BindingType =\n | 'ConstantValue'\n | 'Constructor'\n | 'DynamicValue'\n | 'Factory'\n | 'Function'\n | 'Instance'\n | 'Invalid'\n | 'Provider';\n\n export type TargetType = 'ConstructorArgument' | 'ClassProperty' | 'Variable';\n\n export interface BindingScopeEnum {\n Request: interfaces.BindingScope;\n Singleton: interfaces.BindingScope;\n Transient: interfaces.BindingScope;\n }\n\n export interface BindingTypeEnum {\n ConstantValue: interfaces.BindingType;\n Constructor: interfaces.BindingType;\n DynamicValue: interfaces.BindingType;\n Factory: interfaces.BindingType;\n Function: interfaces.BindingType;\n Instance: interfaces.BindingType;\n Invalid: interfaces.BindingType;\n Provider: interfaces.BindingType;\n }\n\n export interface TargetTypeEnum {\n ConstructorArgument: interfaces.TargetType;\n ClassProperty: interfaces.TargetType;\n Variable: interfaces.TargetType;\n }\n\n export type Newable<T> = new (...args: any[]) => T;\n\n export type Instance<T> = T & Record<string, () => void>;\n\n export interface Abstract<T> {\n prototype: T;\n }\n\n export type ServiceIdentifier<T = unknown> = string | symbol | Newable<T> | Abstract<T>;\n\n export interface Clonable<T> {\n clone(): T;\n }\n\n export type BindingActivation<T = unknown> = (context: interfaces.Context, injectable: T) => T | Promise<T>;\n\n export type BindingDeactivation<T = unknown> = (injectable: T) => void | Promise<void>;\n\n export interface Binding<TActivated = unknown> extends Clonable<Binding<TActivated>> {\n id: number;\n moduleId: ContainerModuleBase['id'];\n activated: boolean;\n serviceIdentifier: ServiceIdentifier<TActivated>;\n constraint: ConstraintFunction;\n dynamicValue: DynamicValue<TActivated> | null;\n scope: BindingScope;\n type: BindingType;\n implementationType: Newable<TActivated> | TActivated | null;\n factory: FactoryCreator<unknown> | null;\n provider: ProviderCreator<unknown> | null;\n onActivation: BindingActivation<TActivated> | null;\n onDeactivation: BindingDeactivation<TActivated> | null;\n cache: null | TActivated | Promise<TActivated>;\n }\n\n export type SimpleFactory<T, U extends unknown[] = unknown[]> = (...args: U) => T;\n\n export type MultiFactory<T, U extends unknown[] = unknown[], V extends unknown[] = unknown[]> = (\n ...args: U\n ) => SimpleFactory<T, V>;\n\n export type Factory<T, U extends unknown[] = unknown[], V extends unknown[] = unknown[]> =\n | SimpleFactory<T, U>\n | MultiFactory<T, U, V>;\n\n export type FactoryCreator<T, U extends unknown[] = unknown[], V extends unknown[] = unknown[]> = (\n context: Context\n ) => Factory<T, U, V>;\n\n export type AutoNamedFactory<T> = SimpleFactory<T, [string]>;\n\n export type AutoFactory<T> = SimpleFactory<T, []>;\n\n export type FactoryTypeFunction<T = unknown> = (context: interfaces.Context) => T | Promise<T>;\n\n export interface FactoryDetails {\n factoryType: FactoryType;\n factory: FactoryTypeFunction | null;\n }\n\n export type Provider<T> = (...args: any[]) => ((...args: any[]) => Promise<T>) | Promise<T>;\n\n export type ProviderCreator<T> = (context: Context) => Provider<T>;\n\n export interface NextArgs<T = unknown> {\n avoidConstraints: boolean;\n contextInterceptor: (contexts: Context) => Context;\n isMultiInject: boolean;\n targetType: TargetType;\n serviceIdentifier: interfaces.ServiceIdentifier<T>;\n key?: string | number | symbol | undefined;\n value?: unknown;\n }\n\n export type Next = (args: NextArgs) => unknown | unknown[];\n\n export type Middleware = (next: Next) => Next;\n\n export type ContextInterceptor = (context: interfaces.Context) => interfaces.Context;\n\n export interface Context {\n id: number;\n container: Container;\n plan: Plan;\n currentRequest: Request;\n addPlan(plan: Plan): void;\n setCurrentRequest(request: Request): void;\n }\n\n export type MetadataOrMetadataArray = Metadata | Metadata[];\n\n export interface Metadata<TValue = unknown> {\n key: string | number | symbol;\n value: TValue;\n }\n\n export interface Plan {\n parentContext: Context;\n rootRequest: Request;\n }\n\n export interface QueryableString {\n startsWith(searchString: string): boolean;\n endsWith(searchString: string): boolean;\n contains(searchString: string): boolean;\n equals(compareString: string): boolean;\n value(): string;\n }\n\n export type ResolveRequestHandler = (request: interfaces.Request) => unknown;\n\n export type RequestScope = Map<unknown, unknown>;\n\n export interface Request {\n id: number;\n serviceIdentifier: ServiceIdentifier;\n parentContext: Context;\n parentRequest: Request | null;\n childRequests: Request[];\n target: Target;\n bindings: Binding<unknown>[];\n requestScope: RequestScope | null;\n addChildRequest(\n serviceIdentifier: ServiceIdentifier,\n bindings: Binding<unknown> | Binding<unknown>[],\n target: Target\n ): Request;\n }\n\n export interface Target {\n id: number;\n serviceIdentifier: ServiceIdentifier;\n type: TargetType;\n name: QueryableString;\n identifier: string | symbol;\n metadata: Metadata[];\n getNamedTag(): interfaces.Metadata<string> | null;\n getCustomTags(): interfaces.Metadata[] | null;\n hasTag(key: string | number | symbol): boolean;\n isArray(): boolean;\n matchesArray(name: interfaces.ServiceIdentifier): boolean;\n isNamed(): boolean;\n isTagged(): boolean;\n isOptional(): boolean;\n matchesNamedTag(name: string): boolean;\n matchesTag(key: string | number | symbol): (value: unknown) => boolean;\n }\n\n export interface ContainerOptions {\n autoBindInjectable?: boolean;\n defaultScope?: BindingScope | undefined;\n skipBaseClassChecks?: boolean;\n }\n\n export interface Container {\n id: number;\n parent: Container | null;\n options: ContainerOptions;\n bind<T>(serviceIdentifier: ServiceIdentifier<T>): BindingToSyntax<T>;\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T>;\n // rebindAsync<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): Promise<interfaces.BindingToSyntax<T>>;\n unbind(serviceIdentifier: ServiceIdentifier): void;\n // unbindAsync(serviceIdentifier: interfaces.ServiceIdentifier): Promise<void>;\n unbindAll(): void;\n // unbindAllAsync(): Promise<void>;\n isBound(serviceIdentifier: ServiceIdentifier): boolean;\n isCurrentBound<T>(serviceIdentifier: ServiceIdentifier<T>): boolean;\n isBoundNamed(serviceIdentifier: ServiceIdentifier, named: string | number | symbol): boolean;\n isBoundTagged(serviceIdentifier: ServiceIdentifier, key: string | number | symbol, value: unknown): boolean;\n get<T>(serviceIdentifier: ServiceIdentifier<T>): T;\n getNamed<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): T;\n getTagged<T>(serviceIdentifier: ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T;\n getAll<T>(serviceIdentifier: ServiceIdentifier<T>): T[];\n getAllTagged<T>(serviceIdentifier: ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T[];\n getAllNamed<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): T[];\n getAsync<T>(serviceIdentifier: ServiceIdentifier<T>): Promise<T>;\n // getNamedAsync<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): Promise<T>;\n // getTaggedAsync<T>(\n // serviceIdentifier: ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T>;\n // getAllAsync<T>(serviceIdentifier: ServiceIdentifier<T>): Promise<T[]>;\n // getAllTaggedAsync<T>(\n // serviceIdentifier: ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T[]>;\n // getAllNamedAsync<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): Promise<T[]>;\n // onActivation<T>(serviceIdentifier: ServiceIdentifier<T>, onActivation: BindingActivation<T>): void;\n // onDeactivation<T>(serviceIdentifier: ServiceIdentifier<T>, onDeactivation: BindingDeactivation<T>): void;\n resolve<T>(constructorFunction: interfaces.Newable<T>): T;\n load(...modules: ContainerModule[]): void;\n // loadAsync(...modules: AsyncContainerModule[]): Promise<void>;\n unload(...modules: ContainerModuleBase[]): void;\n // unloadAsync(...modules: ContainerModuleBase[]): Promise<void>;\n applyCustomMetadataReader(metadataReader: MetadataReader): void;\n // applyMiddleware(...middleware: Middleware[]): void;\n // snapshot(): void;\n // restore(): void;\n // createChild(): Container;\n }\n\n export type Bind = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => BindingToSyntax<T>;\n\n export type Rebind = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => BindingToSyntax<T>;\n\n export type Unbind = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => void;\n\n export type UnbindAsync = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => Promise<void>;\n\n export type IsBound = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => boolean;\n\n export interface ContainerModuleBase {\n id: number;\n }\n\n export interface ContainerModule extends ContainerModuleBase {\n registry: ContainerModuleCallBack;\n }\n\n export interface AsyncContainerModule extends ContainerModuleBase {\n registry: AsyncContainerModuleCallBack;\n }\n\n export interface ModuleActivationHandlers {\n onActivations: Lookup<BindingActivation<unknown>>;\n onDeactivations: Lookup<BindingDeactivation<unknown>>;\n }\n\n // export interface ModuleActivationStore extends Clonable<ModuleActivationStore> {\n // addDeactivation(\n // moduleId: ContainerModuleBase['id'],\n // serviceIdentifier: ServiceIdentifier<unknown>,\n // onDeactivation: interfaces.BindingDeactivation<unknown>\n // ): void;\n // addActivation(\n // moduleId: ContainerModuleBase['id'],\n // serviceIdentifier: ServiceIdentifier<unknown>,\n // onActivation: interfaces.BindingActivation<unknown>\n // ): void;\n // remove(moduleId: ContainerModuleBase['id']): ModuleActivationHandlers;\n // }\n\n export type ContainerModuleCallBack = (\n bind: interfaces.Bind,\n unbind: interfaces.Unbind,\n isBound: interfaces.IsBound,\n rebind: interfaces.Rebind\n // unbindAsync: interfaces.UnbindAsync,\n // onActivation: interfaces.Container['onActivation'],\n // onDeactivation: interfaces.Container['onDeactivation']\n ) => void;\n\n export type AsyncContainerModuleCallBack = AsyncCallback<ContainerModuleCallBack>;\n\n // export interface ContainerSnapshot {\n // bindings: Lookup<Binding<unknown>>;\n // activations: Lookup<BindingActivation<unknown>>;\n // deactivations: Lookup<BindingDeactivation<unknown>>;\n // middleware: Next | null;\n // moduleActivationStore: interfaces.ModuleActivationStore;\n // }\n\n export interface Lookup<T> extends Clonable<Lookup<T>> {\n add(serviceIdentifier: ServiceIdentifier, value: T): void;\n getMap(): Map<interfaces.ServiceIdentifier, T[]>;\n get(serviceIdentifier: ServiceIdentifier): T[];\n remove(serviceIdentifier: interfaces.ServiceIdentifier): void;\n removeByCondition(condition: (item: T) => boolean): T[];\n removeIntersection(lookup: interfaces.Lookup<T>): void;\n hasKey(serviceIdentifier: ServiceIdentifier): boolean;\n clone(): Lookup<T>;\n traverse(func: (key: interfaces.ServiceIdentifier, value: T[]) => void): void;\n }\n\n export interface BindingOnSyntax<T> {\n // onActivation(fn: (context: Context, injectable: T) => T | Promise<T>): BindingWhenSyntax<T>;\n // onDeactivation(fn: (injectable: T) => void | Promise<void>): BindingWhenSyntax<T>;\n }\n\n export interface BindingWhenSyntax<T> {\n // when(constraint: (request: Request) => boolean): BindingOnSyntax<T>;\n whenTargetNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenTargetIsDefault(): BindingOnSyntax<T>;\n // whenTargetTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenInjectedInto(parent: NewableFunction | string): BindingOnSyntax<T>;\n // whenParentNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenParentTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenAnyAncestorIs(ancestor: NewableFunction | string): BindingOnSyntax<T>;\n // whenNoAncestorIs(ancestor: NewableFunction | string): BindingOnSyntax<T>;\n // whenAnyAncestorNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenAnyAncestorTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenNoAncestorNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenNoAncestorTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenAnyAncestorMatches(constraint: (request: Request) => boolean): BindingOnSyntax<T>;\n // whenNoAncestorMatches(constraint: (request: Request) => boolean): BindingOnSyntax<T>;\n }\n\n export interface BindingWhenOnSyntax<T> extends BindingWhenSyntax<T>, BindingOnSyntax<T> {}\n\n export interface BindingInSyntax<T> {\n inSingletonScope(): BindingWhenOnSyntax<T>;\n inTransientScope(): BindingWhenOnSyntax<T>;\n inRequestScope(): BindingWhenOnSyntax<T>;\n }\n\n export interface BindingInWhenOnSyntax<T> extends BindingInSyntax<T>, BindingWhenOnSyntax<T> {}\n\n export interface BindingToSyntax<T> {\n to(constructor: Newable<T>): BindingInWhenOnSyntax<T>;\n toSelf(): BindingInWhenOnSyntax<T>;\n toConstantValue(value: T): BindingWhenOnSyntax<T>;\n toDynamicValue(func: DynamicValue<T>): BindingInWhenOnSyntax<T>;\n toConstructor<T2>(constructor: Newable<T2>): BindingWhenOnSyntax<T>;\n toFactory<T2, T3 extends unknown[] = unknown[], T4 extends unknown[] = unknown[]>(\n factory: FactoryCreator<T2, T3, T4>\n ): BindingWhenOnSyntax<T>;\n toFunction(func: T): BindingWhenOnSyntax<T>;\n toAutoFactory<T2>(serviceIdentifier: ServiceIdentifier<T2>): BindingWhenOnSyntax<T>;\n toAutoNamedFactory<T2>(serviceIdentifier: ServiceIdentifier<T2>): BindingWhenOnSyntax<T>;\n toProvider<T2>(provider: ProviderCreator<T2>): BindingWhenOnSyntax<T>;\n toService(service: ServiceIdentifier<T>): void;\n }\n\n export interface ConstraintFunction {\n metaData?: Metadata;\n (request: Request | null): boolean;\n }\n\n export interface MetadataReader {\n getConstructorMetadata(constructorFunc: NewableFunction): ConstructorMetadata;\n getPropertiesMetadata(constructorFunc: NewableFunction): MetadataMap;\n }\n\n export interface MetadataMap {\n [propertyNameOrArgumentIndex: string | symbol]: Metadata[];\n }\n\n export interface ConstructorMetadata {\n compilerGeneratedMetadata: NewableFunction[] | undefined;\n userGeneratedMetadata: MetadataMap;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/inversify-lite/interfaces/interfaces.ts"],"names":[],"mappings":"","file":"interfaces.js","sourcesContent":["// @ts-nocheck\n/* eslint-disable */\nimport { FactoryType } from '../utils/factory_type';\n\nexport namespace interfaces {\n export type DynamicValue<T> = (context: interfaces.Context) => T | Promise<T>;\n export type ContainerResolution<T> = T | Promise<T> | (T | Promise<T>)[];\n\n type AsyncCallback<TCallback> = TCallback extends (...args: infer TArgs) => infer TResult\n ? (...args: TArgs) => Promise<TResult>\n : never;\n\n export type BindingScope = 'Singleton' | 'Transient' | 'Request';\n\n export type BindingType =\n | 'ConstantValue'\n | 'Constructor'\n | 'DynamicValue'\n | 'Factory'\n | 'Function'\n | 'Instance'\n | 'Invalid'\n | 'Provider';\n\n export type TargetType = 'ConstructorArgument' | 'ClassProperty' | 'Variable';\n\n export interface BindingScopeEnum {\n Request: interfaces.BindingScope;\n Singleton: interfaces.BindingScope;\n Transient: interfaces.BindingScope;\n }\n\n export interface BindingTypeEnum {\n ConstantValue: interfaces.BindingType;\n Constructor: interfaces.BindingType;\n DynamicValue: interfaces.BindingType;\n Factory: interfaces.BindingType;\n Function: interfaces.BindingType;\n Instance: interfaces.BindingType;\n Invalid: interfaces.BindingType;\n Provider: interfaces.BindingType;\n }\n\n export interface TargetTypeEnum {\n ConstructorArgument: interfaces.TargetType;\n ClassProperty: interfaces.TargetType;\n Variable: interfaces.TargetType;\n }\n\n export type Newable<T> = new (...args: any[]) => T;\n\n export type Instance<T> = T & Record<string, () => void>;\n\n export interface Abstract<T> {\n prototype: T;\n }\n\n export type ServiceIdentifier<T = unknown> = string | symbol | Newable<T> | Abstract<T>;\n\n export interface Clonable<T> {\n clone(): T;\n }\n\n export type BindingActivation<T = unknown> = (context: interfaces.Context, injectable: T) => T | Promise<T>;\n\n export type BindingDeactivation<T = unknown> = (injectable: T) => void | Promise<void>;\n\n export interface Binding<TActivated = unknown> extends Clonable<Binding<TActivated>> {\n id: number;\n moduleId: ContainerModuleBase['id'];\n activated: boolean;\n serviceIdentifier: ServiceIdentifier<TActivated>;\n constraint: ConstraintFunction;\n dynamicValue: DynamicValue<TActivated> | null;\n scope: BindingScope;\n type: BindingType;\n implementationType: Newable<TActivated> | TActivated | null;\n factory: FactoryCreator<unknown> | null;\n provider: ProviderCreator<unknown> | null;\n onActivation: BindingActivation<TActivated> | null;\n onDeactivation: BindingDeactivation<TActivated> | null;\n cache: null | TActivated | Promise<TActivated>;\n }\n\n export type SimpleFactory<T, U extends unknown[] = unknown[]> = (...args: U) => T;\n\n export type MultiFactory<T, U extends unknown[] = unknown[], V extends unknown[] = unknown[]> = (\n ...args: U\n ) => SimpleFactory<T, V>;\n\n export type Factory<T, U extends unknown[] = unknown[], V extends unknown[] = unknown[]> =\n | SimpleFactory<T, U>\n | MultiFactory<T, U, V>;\n\n export type FactoryCreator<T, U extends unknown[] = unknown[], V extends unknown[] = unknown[]> = (\n context: Context\n ) => Factory<T, U, V>;\n\n export type AutoNamedFactory<T> = SimpleFactory<T, [string]>;\n\n export type AutoFactory<T> = SimpleFactory<T, []>;\n\n export type FactoryTypeFunction<T = unknown> = (context: interfaces.Context) => T | Promise<T>;\n\n export interface FactoryDetails {\n factoryType: FactoryType;\n factory: FactoryTypeFunction | null;\n }\n\n export type Provider<T> = (...args: any[]) => ((...args: any[]) => Promise<T>) | Promise<T>;\n\n export type ProviderCreator<T> = (context: Context) => Provider<T>;\n\n export interface NextArgs<T = unknown> {\n avoidConstraints: boolean;\n contextInterceptor: (contexts: Context) => Context;\n isMultiInject: boolean;\n targetType: TargetType;\n serviceIdentifier: interfaces.ServiceIdentifier<T>;\n key?: string | number | symbol | undefined;\n value?: unknown;\n }\n\n export type Next = (args: NextArgs) => unknown | unknown[];\n\n export type Middleware = (next: Next) => Next;\n\n export type ContextInterceptor = (context: interfaces.Context) => interfaces.Context;\n\n export interface Context {\n id: number;\n container: Container;\n plan: Plan;\n currentRequest: Request;\n addPlan(plan: Plan): void;\n setCurrentRequest(request: Request): void;\n }\n\n export type MetadataOrMetadataArray = Metadata | Metadata[];\n\n export interface Metadata<TValue = unknown> {\n key: string | number | symbol;\n value: TValue;\n }\n\n export interface Plan {\n parentContext: Context;\n rootRequest: Request;\n }\n\n export interface QueryableString {\n // startsWith(searchString: string): boolean;\n // endsWith(searchString: string): boolean;\n contains(searchString: string): boolean;\n equals(compareString: string): boolean;\n value(): string;\n }\n\n export type ResolveRequestHandler = (request: interfaces.Request) => unknown;\n\n export type RequestScope = Map<unknown, unknown>;\n\n export interface Request {\n id: number;\n serviceIdentifier: ServiceIdentifier;\n parentContext: Context;\n parentRequest: Request | null;\n childRequests: Request[];\n target: Target;\n bindings: Binding<unknown>[];\n requestScope: RequestScope | null;\n addChildRequest(\n serviceIdentifier: ServiceIdentifier,\n bindings: Binding<unknown> | Binding<unknown>[],\n target: Target\n ): Request;\n }\n\n export interface Target {\n id: number;\n serviceIdentifier: ServiceIdentifier;\n type: TargetType;\n name: QueryableString;\n identifier: string | symbol;\n metadata: Metadata[];\n getNamedTag(): interfaces.Metadata<string> | null;\n getCustomTags(): interfaces.Metadata[] | null;\n hasTag(key: string | number | symbol): boolean;\n isArray(): boolean;\n matchesArray(name: interfaces.ServiceIdentifier): boolean;\n isNamed(): boolean;\n isTagged(): boolean;\n isOptional(): boolean;\n matchesNamedTag(name: string): boolean;\n matchesTag(key: string | number | symbol): (value: unknown) => boolean;\n }\n\n export interface ContainerOptions {\n autoBindInjectable?: boolean;\n defaultScope?: BindingScope | undefined;\n skipBaseClassChecks?: boolean;\n }\n\n export interface Container {\n id: number;\n parent: Container | null;\n options: ContainerOptions;\n bind<T>(serviceIdentifier: ServiceIdentifier<T>): BindingToSyntax<T>;\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T>;\n // rebindAsync<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): Promise<interfaces.BindingToSyntax<T>>;\n unbind(serviceIdentifier: ServiceIdentifier): void;\n // unbindAsync(serviceIdentifier: interfaces.ServiceIdentifier): Promise<void>;\n unbindAll(): void;\n // unbindAllAsync(): Promise<void>;\n isBound(serviceIdentifier: ServiceIdentifier): boolean;\n isCurrentBound<T>(serviceIdentifier: ServiceIdentifier<T>): boolean;\n isBoundNamed(serviceIdentifier: ServiceIdentifier, named: string | number | symbol): boolean;\n isBoundTagged(serviceIdentifier: ServiceIdentifier, key: string | number | symbol, value: unknown): boolean;\n get<T>(serviceIdentifier: ServiceIdentifier<T>): T;\n getNamed<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): T;\n getTagged<T>(serviceIdentifier: ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T;\n getAll<T>(serviceIdentifier: ServiceIdentifier<T>): T[];\n getAllTagged<T>(serviceIdentifier: ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T[];\n getAllNamed<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): T[];\n getAsync<T>(serviceIdentifier: ServiceIdentifier<T>): Promise<T>;\n // getNamedAsync<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): Promise<T>;\n // getTaggedAsync<T>(\n // serviceIdentifier: ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T>;\n // getAllAsync<T>(serviceIdentifier: ServiceIdentifier<T>): Promise<T[]>;\n // getAllTaggedAsync<T>(\n // serviceIdentifier: ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T[]>;\n // getAllNamedAsync<T>(serviceIdentifier: ServiceIdentifier<T>, named: string | number | symbol): Promise<T[]>;\n // onActivation<T>(serviceIdentifier: ServiceIdentifier<T>, onActivation: BindingActivation<T>): void;\n // onDeactivation<T>(serviceIdentifier: ServiceIdentifier<T>, onDeactivation: BindingDeactivation<T>): void;\n resolve<T>(constructorFunction: interfaces.Newable<T>): T;\n load(...modules: ContainerModule[]): void;\n // loadAsync(...modules: AsyncContainerModule[]): Promise<void>;\n unload(...modules: ContainerModuleBase[]): void;\n // unloadAsync(...modules: ContainerModuleBase[]): Promise<void>;\n applyCustomMetadataReader(metadataReader: MetadataReader): void;\n // applyMiddleware(...middleware: Middleware[]): void;\n // snapshot(): void;\n // restore(): void;\n // createChild(): Container;\n }\n\n export type Bind = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => BindingToSyntax<T>;\n\n export type Rebind = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => BindingToSyntax<T>;\n\n export type Unbind = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => void;\n\n export type UnbindAsync = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => Promise<void>;\n\n export type IsBound = <T = unknown>(serviceIdentifier: ServiceIdentifier<T>) => boolean;\n\n export interface ContainerModuleBase {\n id: number;\n }\n\n export interface ContainerModule extends ContainerModuleBase {\n registry: ContainerModuleCallBack;\n }\n\n export interface AsyncContainerModule extends ContainerModuleBase {\n registry: AsyncContainerModuleCallBack;\n }\n\n export interface ModuleActivationHandlers {\n onActivations: Lookup<BindingActivation<unknown>>;\n onDeactivations: Lookup<BindingDeactivation<unknown>>;\n }\n\n // export interface ModuleActivationStore extends Clonable<ModuleActivationStore> {\n // addDeactivation(\n // moduleId: ContainerModuleBase['id'],\n // serviceIdentifier: ServiceIdentifier<unknown>,\n // onDeactivation: interfaces.BindingDeactivation<unknown>\n // ): void;\n // addActivation(\n // moduleId: ContainerModuleBase['id'],\n // serviceIdentifier: ServiceIdentifier<unknown>,\n // onActivation: interfaces.BindingActivation<unknown>\n // ): void;\n // remove(moduleId: ContainerModuleBase['id']): ModuleActivationHandlers;\n // }\n\n export type ContainerModuleCallBack = (\n bind: interfaces.Bind,\n unbind: interfaces.Unbind,\n isBound: interfaces.IsBound,\n rebind: interfaces.Rebind\n // unbindAsync: interfaces.UnbindAsync,\n // onActivation: interfaces.Container['onActivation'],\n // onDeactivation: interfaces.Container['onDeactivation']\n ) => void;\n\n export type AsyncContainerModuleCallBack = AsyncCallback<ContainerModuleCallBack>;\n\n // export interface ContainerSnapshot {\n // bindings: Lookup<Binding<unknown>>;\n // activations: Lookup<BindingActivation<unknown>>;\n // deactivations: Lookup<BindingDeactivation<unknown>>;\n // middleware: Next | null;\n // moduleActivationStore: interfaces.ModuleActivationStore;\n // }\n\n export interface Lookup<T> extends Clonable<Lookup<T>> {\n add(serviceIdentifier: ServiceIdentifier, value: T): void;\n getMap(): Map<interfaces.ServiceIdentifier, T[]>;\n get(serviceIdentifier: ServiceIdentifier): T[];\n remove(serviceIdentifier: interfaces.ServiceIdentifier): void;\n removeByCondition(condition: (item: T) => boolean): T[];\n removeIntersection(lookup: interfaces.Lookup<T>): void;\n hasKey(serviceIdentifier: ServiceIdentifier): boolean;\n clone(): Lookup<T>;\n traverse(func: (key: interfaces.ServiceIdentifier, value: T[]) => void): void;\n }\n\n export interface BindingOnSyntax<T> {\n // onActivation(fn: (context: Context, injectable: T) => T | Promise<T>): BindingWhenSyntax<T>;\n // onDeactivation(fn: (injectable: T) => void | Promise<void>): BindingWhenSyntax<T>;\n }\n\n export interface BindingWhenSyntax<T> {\n // when(constraint: (request: Request) => boolean): BindingOnSyntax<T>;\n whenTargetNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenTargetIsDefault(): BindingOnSyntax<T>;\n // whenTargetTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenInjectedInto(parent: NewableFunction | string): BindingOnSyntax<T>;\n // whenParentNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenParentTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenAnyAncestorIs(ancestor: NewableFunction | string): BindingOnSyntax<T>;\n // whenNoAncestorIs(ancestor: NewableFunction | string): BindingOnSyntax<T>;\n // whenAnyAncestorNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenAnyAncestorTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenNoAncestorNamed(name: string | number | symbol): BindingOnSyntax<T>;\n // whenNoAncestorTagged(tag: string | number | symbol, value: unknown): BindingOnSyntax<T>;\n // whenAnyAncestorMatches(constraint: (request: Request) => boolean): BindingOnSyntax<T>;\n // whenNoAncestorMatches(constraint: (request: Request) => boolean): BindingOnSyntax<T>;\n }\n\n export interface BindingWhenOnSyntax<T> extends BindingWhenSyntax<T>, BindingOnSyntax<T> {}\n\n export interface BindingInSyntax<T> {\n inSingletonScope(): BindingWhenOnSyntax<T>;\n inTransientScope(): BindingWhenOnSyntax<T>;\n inRequestScope(): BindingWhenOnSyntax<T>;\n }\n\n export interface BindingInWhenOnSyntax<T> extends BindingInSyntax<T>, BindingWhenOnSyntax<T> {}\n\n export interface BindingToSyntax<T> {\n to(constructor: Newable<T>): BindingInWhenOnSyntax<T>;\n toSelf(): BindingInWhenOnSyntax<T>;\n toConstantValue(value: T): BindingWhenOnSyntax<T>;\n toDynamicValue(func: DynamicValue<T>): BindingInWhenOnSyntax<T>;\n toConstructor<T2>(constructor: Newable<T2>): BindingWhenOnSyntax<T>;\n toFactory<T2, T3 extends unknown[] = unknown[], T4 extends unknown[] = unknown[]>(\n factory: FactoryCreator<T2, T3, T4>\n ): BindingWhenOnSyntax<T>;\n toFunction(func: T): BindingWhenOnSyntax<T>;\n toAutoFactory<T2>(serviceIdentifier: ServiceIdentifier<T2>): BindingWhenOnSyntax<T>;\n toAutoNamedFactory<T2>(serviceIdentifier: ServiceIdentifier<T2>): BindingWhenOnSyntax<T>;\n toProvider<T2>(provider: ProviderCreator<T2>): BindingWhenOnSyntax<T>;\n toService(service: ServiceIdentifier<T>): void;\n }\n\n export interface ConstraintFunction {\n metaData?: Metadata;\n (request: Request | null): boolean;\n }\n\n export interface MetadataReader {\n getConstructorMetadata(constructorFunc: NewableFunction): ConstructorMetadata;\n getPropertiesMetadata(constructorFunc: NewableFunction): MetadataMap;\n }\n\n export interface MetadataMap {\n [propertyNameOrArgumentIndex: string | symbol]: Metadata[];\n }\n\n export interface ConstructorMetadata {\n compilerGeneratedMetadata: NewableFunction[] | undefined;\n userGeneratedMetadata: MetadataMap;\n }\n}\n"]}
@@ -2,8 +2,6 @@ import type { interfaces } from '../interfaces/interfaces';
2
2
  declare class QueryableString implements interfaces.QueryableString {
3
3
  private str;
4
4
  constructor(str: string);
5
- startsWith(searchString: string): boolean;
6
- endsWith(searchString: string): boolean;
7
5
  contains(searchString: string): boolean;
8
6
  equals(compareString: string): boolean;
9
7
  value(): string;
@@ -8,16 +8,6 @@ class QueryableString {
8
8
  constructor(str) {
9
9
  this.str = str;
10
10
  }
11
- startsWith(searchString) {
12
- return 0 === this.str.indexOf(searchString);
13
- }
14
- endsWith(searchString) {
15
- let reverseString = "";
16
- const reverseSearchString = searchString.split("").reverse().join("");
17
- return reverseString = this.str.split("").reverse().join(""), this.startsWith.call({
18
- str: reverseString
19
- }, reverseSearchString);
20
- }
21
11
  contains(searchString) {
22
12
  return -1 !== this.str.indexOf(searchString);
23
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/inversify-lite/planning/queryable_string.ts"],"names":[],"mappings":";;;AAEA,MAAM,eAAe;IAGnB,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,UAAU,CAAC,YAAoB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CAAC,YAAoB;QAC3B,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ,CAAC,YAAoB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,aAAqB;QAC1B,OAAO,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC;IACpC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAEQ,0CAAe","file":"queryable_string.js","sourcesContent":["import type { interfaces } from '../interfaces/interfaces';\n\nclass QueryableString implements interfaces.QueryableString {\n private str: string;\n\n constructor(str: string) {\n this.str = str;\n }\n\n startsWith(searchString: string): boolean {\n return this.str.indexOf(searchString) === 0;\n }\n\n endsWith(searchString: string): boolean {\n let reverseString = '';\n const reverseSearchString = searchString.split('').reverse().join('');\n reverseString = this.str.split('').reverse().join('');\n return this.startsWith.call({ str: reverseString }, reverseSearchString);\n }\n\n contains(searchString: string): boolean {\n return this.str.indexOf(searchString) !== -1;\n }\n\n equals(compareString: string): boolean {\n return this.str === compareString;\n }\n\n value(): string {\n return this.str;\n }\n}\n\nexport { QueryableString };\n"]}
1
+ {"version":3,"sources":["../src/common/inversify-lite/planning/queryable_string.ts"],"names":[],"mappings":";;;AAEA,MAAM,eAAe;IAGnB,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAaD,QAAQ,CAAC,YAAoB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,aAAqB;QAC1B,OAAO,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC;IACpC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAEQ,0CAAe","file":"queryable_string.js","sourcesContent":["import type { interfaces } from '../interfaces/interfaces';\n\nclass QueryableString implements interfaces.QueryableString {\n private str: string;\n\n constructor(str: string) {\n this.str = str;\n }\n\n // startsWith(searchString: string): boolean {\n // return this.str.indexOf(searchString) === 0;\n // }\n\n // endsWith(searchString: string): boolean {\n // let reverseString = '';\n // const reverseSearchString = searchString.split('').reverse().join('');\n // reverseString = this.str.split('').reverse().join('');\n // return this.startsWith.call({ str: reverseString }, reverseSearchString);\n // }\n\n contains(searchString: string): boolean {\n return this.str.indexOf(searchString) !== -1;\n }\n\n equals(compareString: string): boolean {\n return this.str === compareString;\n }\n\n value(): string {\n return this.str;\n }\n}\n\nexport { QueryableString };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/inversify-lite/resolution/resolver.ts"],"names":[],"mappings":"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","file":"resolver.js","sourcesContent":["import * as ERROR_MSGS from '../constants/error_msgs';\nimport { BindingTypeEnum } from '../constants/literal_types';\nimport type { interfaces } from '../interfaces/interfaces';\n// import { getBindingDictionary } from '../planning/planner';\nimport { saveToScope, tryGetFromScope } from '../scope/scope';\n// import { isPromise } from '../utils/async';\nimport { getFactoryDetails, ensureFullyBound } from '../utils/binding_utils';\nimport { tryAndThrowErrorIfStackOverflow } from '../utils/exceptions';\nimport { resolveInstance } from './instantiation';\n\nconst _resolveRequest =\n <T>(requestScope: interfaces.RequestScope) =>\n (request: interfaces.Request): undefined | T | Promise<T> | (T | Promise<T>)[] => {\n request.parentContext.setCurrentRequest(request);\n\n const bindings = request.bindings;\n const childRequests = request.childRequests;\n\n const targetIsAnArray = request.target && request.target.isArray();\n\n const targetParentIsNotAnArray =\n !request.parentRequest ||\n !request.parentRequest.target ||\n !request.target ||\n !request.parentRequest.target.matchesArray(request.target.serviceIdentifier);\n\n if (targetIsAnArray && targetParentIsNotAnArray) {\n // Create an array instead of creating an instance\n return childRequests.map((childRequest: interfaces.Request) => {\n const _f = _resolveRequest(requestScope);\n return _f(childRequest) as T | Promise<T>;\n });\n }\n if (request.target.isOptional() && bindings.length === 0) {\n return undefined;\n }\n\n const binding = bindings[0];\n\n return _resolveBinding<T>(requestScope, request, binding as unknown as interfaces.Binding<T>);\n };\n\nconst _resolveFactoryFromBinding = <T>(binding: interfaces.Binding<T>, context: interfaces.Context): T | Promise<T> => {\n const factoryDetails = getFactoryDetails(binding);\n return tryAndThrowErrorIfStackOverflow(\n () => (factoryDetails.factory as interfaces.FactoryTypeFunction<T>).bind(binding)(context),\n () =>\n new Error(\n ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(\n factoryDetails.factoryType,\n context.currentRequest.serviceIdentifier.toString()\n )\n )\n );\n};\n\nconst _getResolvedFromBinding = <T = unknown>(\n requestScope: interfaces.RequestScope,\n request: interfaces.Request,\n binding: interfaces.Binding<T>\n): T | Promise<T> => {\n let result: T | Promise<T> | undefined;\n const childRequests = request.childRequests;\n\n ensureFullyBound(binding);\n\n switch (binding.type) {\n case BindingTypeEnum.ConstantValue:\n case BindingTypeEnum.Function:\n result = binding.cache as T | Promise<T>;\n break;\n case BindingTypeEnum.Constructor:\n result = binding.implementationType as T;\n break;\n case BindingTypeEnum.Instance:\n result = resolveInstance<T>(\n binding,\n binding.implementationType as interfaces.Newable<T>,\n childRequests,\n _resolveRequest<T>(requestScope)\n );\n break;\n default:\n result = _resolveFactoryFromBinding(binding, request.parentContext);\n }\n\n return result as T | Promise<T>;\n};\n\nconst _resolveInScope = <T>(\n requestScope: interfaces.RequestScope,\n binding: interfaces.Binding<T>,\n resolveFromBinding: () => T | Promise<T>\n): T | Promise<T> => {\n let result = tryGetFromScope<T>(requestScope, binding);\n if (result !== null) {\n return result;\n }\n result = resolveFromBinding();\n saveToScope(requestScope, binding, result);\n return result;\n};\n\nconst _resolveBinding = <T>(\n requestScope: interfaces.RequestScope,\n request: interfaces.Request,\n binding: interfaces.Binding<T>\n): T | Promise<T> => {\n return _resolveInScope<T>(requestScope, binding, () => {\n const result = _getResolvedFromBinding(requestScope, request, binding);\n // if (isPromise(result)) {\n // result = result.then(resolved => _onActivation(request, binding, resolved));\n // } else {\n // result = _onActivation<T>(request, binding, result);\n // }\n return result;\n });\n};\n\n// function _onActivation<T>(request: interfaces.Request, binding: interfaces.Binding<T>, resolved: T): T | Promise<T> {\n// let result = _bindingActivation(request.parentContext, binding, resolved);\n\n// const containersIterator = _getContainersIterator(request.parentContext.container);\n\n// let container: interfaces.Container;\n// let containersIteratorResult = containersIterator.next();\n\n// do {\n// container = containersIteratorResult.value;\n// // const context = request.parentContext;\n// // const serviceIdentifier = request.serviceIdentifier;\n// // const activationsIterator = _getContainerActivationsForService(container, serviceIdentifier);\n\n// // if (isPromise(result)) {\n// // result = _activateContainerAsync<T>(\n// // activationsIterator as Iterator<interfaces.BindingActivation<T>>,\n// // context,\n// // result\n// // );\n// // } else {\n// // result = _activateContainer<T>(activationsIterator as Iterator<interfaces.BindingActivation<T>>, context, result);\n// // }\n\n// containersIteratorResult = containersIterator.next();\n\n// // make sure if we are currently on the container that owns the binding, not to keep looping down to child containers\n// } while (\n// containersIteratorResult.done !== true &&\n// !getBindingDictionary(container).hasKey(request.serviceIdentifier)\n// );\n\n// return result;\n// }\n\n// const _bindingActivation = <T>(\n// context: interfaces.Context,\n// binding: interfaces.Binding<T>,\n// previousResult: T\n// ): T | Promise<T> => {\n// let result: T | Promise<T>;\n\n// // use activation handler if available\n// if (typeof binding.onActivation === 'function') {\n// result = binding.onActivation(context, previousResult);\n// } else {\n// result = previousResult;\n// }\n\n// return result;\n// };\n\n// const _activateContainer = <T>(\n// activationsIterator: Iterator<interfaces.BindingActivation<T>>,\n// context: interfaces.Context,\n// result: T\n// ): T | Promise<T> => {\n// let activation = activationsIterator.next();\n\n// while (!activation.done) {\n// result = activation.value(context, result) as T;\n\n// if (isPromise<T>(result)) {\n// return _activateContainerAsync(activationsIterator, context, result);\n// }\n\n// activation = activationsIterator.next();\n// }\n\n// return result;\n// };\n\n// const _activateContainerAsync = async <T>(\n// activationsIterator: Iterator<interfaces.BindingActivation<T>>,\n// context: interfaces.Context,\n// resultPromise: Promise<T>\n// ): Promise<T> => {\n// let result = await resultPromise;\n// let activation = activationsIterator.next();\n\n// while (!activation.done) {\n// result = await activation.value(context, result);\n\n// activation = activationsIterator.next();\n// }\n\n// return result;\n// };\n\n// const _getContainerActivationsForService = <T>(\n// container: interfaces.Container,\n// serviceIdentifier: interfaces.ServiceIdentifier<T>\n// ) => {\n// // smell accessing _activations, but similar pattern is done in planner.getBindingDictionary()\n// const activations = (\n// container as unknown as { _activations: interfaces.Lookup<interfaces.BindingActivation<unknown>> }\n// )._activations;\n\n// return activations.hasKey(serviceIdentifier) ? activations.get(serviceIdentifier).values() : [].values();\n// };\n\n// const _getContainersIterator = (container: interfaces.Container): Iterator<interfaces.Container> => {\n// const containersStack: interfaces.Container[] = [container];\n\n// let parent = container.parent;\n\n// while (parent !== null) {\n// containersStack.push(parent);\n\n// parent = parent.parent;\n// }\n\n// const getNextContainer: () => IteratorResult<interfaces.Container> = () => {\n// const nextContainer = containersStack.pop();\n\n// if (nextContainer !== undefined) {\n// return { done: false, value: nextContainer };\n// } else {\n// return { done: true, value: undefined };\n// }\n// };\n\n// const containersIterator: Iterator<interfaces.Container> = {\n// next: getNextContainer\n// };\n\n// return containersIterator;\n// };\n\nfunction resolve<T>(context: interfaces.Context): T | Promise<T> | (T | Promise<T>)[] {\n const _f = _resolveRequest<T>(context.plan.rootRequest.requestScope as interfaces.RequestScope);\n return _f(context.plan.rootRequest) as T | Promise<T> | (T | Promise<T>)[];\n}\n\nexport { resolve };\n"]}
1
+ {"version":3,"sources":["../src/common/inversify-lite/resolution/resolver.ts"],"names":[],"mappings":"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","file":"resolver.js","sourcesContent":["import * as ERROR_MSGS from '../constants/error_msgs';\nimport { BindingTypeEnum } from '../constants/literal_types';\nimport type { interfaces } from '../interfaces/interfaces';\n// import { getBindingDictionary } from '../planning/planner';\nimport { saveToScope, tryGetFromScope } from '../scope/scope';\n// import { isPromise } from '../utils/async';\nimport { getFactoryDetails, ensureFullyBound } from '../utils/binding_utils';\nimport { tryAndThrowErrorIfStackOverflow } from '../utils/exceptions';\nimport { resolveInstance } from './instantiation';\n\nconst _resolveRequest =\n <T>(requestScope: interfaces.RequestScope) =>\n (request: interfaces.Request): undefined | T | Promise<T> | (T | Promise<T>)[] => {\n request.parentContext.setCurrentRequest(request);\n\n const bindings = request.bindings;\n const childRequests = request.childRequests;\n\n const targetIsAnArray = request.target && request.target.isArray();\n\n const targetParentIsNotAnArray =\n !request.parentRequest ||\n !request.parentRequest.target ||\n !request.target ||\n !request.parentRequest.target.matchesArray(request.target.serviceIdentifier);\n\n if (targetIsAnArray && targetParentIsNotAnArray) {\n // Create an array instead of creating an instance\n return childRequests.map((childRequest: interfaces.Request) => {\n const _f = _resolveRequest(requestScope);\n return _f(childRequest) as T | Promise<T>;\n });\n }\n if (request.target.isOptional() && bindings.length === 0) {\n return undefined;\n }\n\n const binding = bindings[0];\n\n return _resolveBinding<T>(requestScope, request, binding as unknown as interfaces.Binding<T>);\n };\n\nconst _resolveFactoryFromBinding = <T>(binding: interfaces.Binding<T>, context: interfaces.Context): T | Promise<T> => {\n // console.count('_resolveFactoryFromBinding');\n const factoryDetails = getFactoryDetails(binding);\n return tryAndThrowErrorIfStackOverflow(\n () => (factoryDetails.factory as interfaces.FactoryTypeFunction<T>).bind(binding)(context),\n () =>\n new Error(\n ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(\n factoryDetails.factoryType,\n context.currentRequest.serviceIdentifier.toString()\n )\n )\n );\n};\n\nconst _getResolvedFromBinding = <T = unknown>(\n requestScope: interfaces.RequestScope,\n request: interfaces.Request,\n binding: interfaces.Binding<T>\n): T | Promise<T> => {\n // console.count('_getResolvedFromBinding');\n // console.log('_getResolvedFromBinding', binding);\n // if (!(window as any).map) {\n // (window as any).map = new Map();\n // }\n // const d = (window as any).map.get(binding.serviceIdentifier) || [];\n // (window as any).map.set(binding.serviceIdentifier, [...d, binding]);\n let result: T | Promise<T> | undefined;\n const childRequests = request.childRequests;\n\n ensureFullyBound(binding);\n\n switch (binding.type) {\n case BindingTypeEnum.ConstantValue:\n case BindingTypeEnum.Function:\n result = binding.cache as T | Promise<T>;\n break;\n case BindingTypeEnum.Constructor:\n result = binding.implementationType as T;\n break;\n case BindingTypeEnum.Instance:\n result = resolveInstance<T>(\n binding,\n binding.implementationType as interfaces.Newable<T>,\n childRequests,\n _resolveRequest<T>(requestScope)\n );\n break;\n default:\n result = _resolveFactoryFromBinding(binding, request.parentContext);\n }\n\n return result as T | Promise<T>;\n};\n\nconst _resolveInScope = <T>(\n requestScope: interfaces.RequestScope,\n binding: interfaces.Binding<T>,\n resolveFromBinding: () => T | Promise<T>\n): T | Promise<T> => {\n let result = tryGetFromScope<T>(requestScope, binding);\n if (result !== null) {\n return result;\n }\n result = resolveFromBinding();\n saveToScope(requestScope, binding, result);\n return result;\n};\n\nconst _resolveBinding = <T>(\n requestScope: interfaces.RequestScope,\n request: interfaces.Request,\n binding: interfaces.Binding<T>\n): T | Promise<T> => {\n return _resolveInScope<T>(requestScope, binding, () => {\n const result = _getResolvedFromBinding(requestScope, request, binding);\n // if (isPromise(result)) {\n // result = result.then(resolved => _onActivation(request, binding, resolved));\n // } else {\n // result = _onActivation<T>(request, binding, result);\n // }\n return result;\n });\n};\n\n// function _onActivation<T>(request: interfaces.Request, binding: interfaces.Binding<T>, resolved: T): T | Promise<T> {\n// let result = _bindingActivation(request.parentContext, binding, resolved);\n\n// const containersIterator = _getContainersIterator(request.parentContext.container);\n\n// let container: interfaces.Container;\n// let containersIteratorResult = containersIterator.next();\n\n// do {\n// container = containersIteratorResult.value;\n// // const context = request.parentContext;\n// // const serviceIdentifier = request.serviceIdentifier;\n// // const activationsIterator = _getContainerActivationsForService(container, serviceIdentifier);\n\n// // if (isPromise(result)) {\n// // result = _activateContainerAsync<T>(\n// // activationsIterator as Iterator<interfaces.BindingActivation<T>>,\n// // context,\n// // result\n// // );\n// // } else {\n// // result = _activateContainer<T>(activationsIterator as Iterator<interfaces.BindingActivation<T>>, context, result);\n// // }\n\n// containersIteratorResult = containersIterator.next();\n\n// // make sure if we are currently on the container that owns the binding, not to keep looping down to child containers\n// } while (\n// containersIteratorResult.done !== true &&\n// !getBindingDictionary(container).hasKey(request.serviceIdentifier)\n// );\n\n// return result;\n// }\n\n// const _bindingActivation = <T>(\n// context: interfaces.Context,\n// binding: interfaces.Binding<T>,\n// previousResult: T\n// ): T | Promise<T> => {\n// let result: T | Promise<T>;\n\n// // use activation handler if available\n// if (typeof binding.onActivation === 'function') {\n// result = binding.onActivation(context, previousResult);\n// } else {\n// result = previousResult;\n// }\n\n// return result;\n// };\n\n// const _activateContainer = <T>(\n// activationsIterator: Iterator<interfaces.BindingActivation<T>>,\n// context: interfaces.Context,\n// result: T\n// ): T | Promise<T> => {\n// let activation = activationsIterator.next();\n\n// while (!activation.done) {\n// result = activation.value(context, result) as T;\n\n// if (isPromise<T>(result)) {\n// return _activateContainerAsync(activationsIterator, context, result);\n// }\n\n// activation = activationsIterator.next();\n// }\n\n// return result;\n// };\n\n// const _activateContainerAsync = async <T>(\n// activationsIterator: Iterator<interfaces.BindingActivation<T>>,\n// context: interfaces.Context,\n// resultPromise: Promise<T>\n// ): Promise<T> => {\n// let result = await resultPromise;\n// let activation = activationsIterator.next();\n\n// while (!activation.done) {\n// result = await activation.value(context, result);\n\n// activation = activationsIterator.next();\n// }\n\n// return result;\n// };\n\n// const _getContainerActivationsForService = <T>(\n// container: interfaces.Container,\n// serviceIdentifier: interfaces.ServiceIdentifier<T>\n// ) => {\n// // smell accessing _activations, but similar pattern is done in planner.getBindingDictionary()\n// const activations = (\n// container as unknown as { _activations: interfaces.Lookup<interfaces.BindingActivation<unknown>> }\n// )._activations;\n\n// return activations.hasKey(serviceIdentifier) ? activations.get(serviceIdentifier).values() : [].values();\n// };\n\n// const _getContainersIterator = (container: interfaces.Container): Iterator<interfaces.Container> => {\n// const containersStack: interfaces.Container[] = [container];\n\n// let parent = container.parent;\n\n// while (parent !== null) {\n// containersStack.push(parent);\n\n// parent = parent.parent;\n// }\n\n// const getNextContainer: () => IteratorResult<interfaces.Container> = () => {\n// const nextContainer = containersStack.pop();\n\n// if (nextContainer !== undefined) {\n// return { done: false, value: nextContainer };\n// } else {\n// return { done: true, value: undefined };\n// }\n// };\n\n// const containersIterator: Iterator<interfaces.Container> = {\n// next: getNextContainer\n// };\n\n// return containersIterator;\n// };\n\nfunction resolve<T>(context: interfaces.Context): T | Promise<T> | (T | Promise<T>)[] {\n const _f = _resolveRequest<T>(context.plan.rootRequest.requestScope as interfaces.RequestScope);\n return _f(context.plan.rootRequest) as T | Promise<T> | (T | Promise<T>)[];\n}\n\nexport { resolve };\n"]}
@@ -41,11 +41,11 @@ class MonotoneX {
41
41
  lineEnd() {
42
42
  switch (this._point) {
43
43
  case 2:
44
- this.context.lineTo(this._x1, this._y1, !1 !== this._lastDefined2, this.lastPoint1);
44
+ this.context.lineTo(this._x1, this._y1, !1 !== this._lastDefined1 && !1 !== this._lastDefined2, this.lastPoint1);
45
45
  break;
46
46
 
47
47
  case 3:
48
- point(this, this._t0, slope2(this, this._t0), !1 !== this._lastDefined2, this.lastPoint1);
48
+ point(this, this._t0, slope2(this, this._t0), !1 !== this._lastDefined1 && !1 !== this._lastDefined2, this.lastPoint1);
49
49
  }
50
50
  (this._line || 0 !== this._line && 1 === this._point) && this.context.closePath(),
51
51
  this._line = 1 - this._line;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/monotone.ts"],"names":[],"mappings":"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","file":"monotone.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments } from './common';\nimport { ReflectSegContext, SegContext } from '../seg-context';\nimport { Direction } from '../enums';\nimport type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/monotone.js\nfunction sign(x: number): number {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(curveClass: MonotoneX | MonotoneY, x2: number, y2: number) {\n const h0 = curveClass._x1 - curveClass._x0;\n const h1 = x2 - curveClass._x1;\n const s0 = (curveClass._y1 - curveClass._y0) / (h0 || Number(h1 < 0 && -0));\n const s1 = (y2 - curveClass._y1) / (h1 || Number(h0 < 0 && -0));\n const p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(curveClass: MonotoneX | MonotoneY, t: number) {\n const h = curveClass._x1 - curveClass._x0;\n return h ? ((3 * (curveClass._y1 - curveClass._y0)) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(curveClass: MonotoneX | MonotoneY, t0: number, t1: number, defined: boolean, p: IPointLike) {\n const x0 = curveClass._x0;\n const y0 = curveClass._y0;\n const x1 = curveClass._x1;\n const y1 = curveClass._y1;\n const dx = (x1 - x0) / 3;\n curveClass.context.bezierCurveTo(\n x0 + dx,\n y0 + dx * t0,\n x1 - dx,\n y1 - dx * t1,\n x1,\n y1,\n defined,\n curveClass.lastPoint1\n );\n}\n\nexport class MonotoneX implements ICurvedSegment {\n protected _lastDefined1?: boolean;\n protected _lastDefined2?: boolean;\n declare context: ISegPath2D;\n declare _t0: number;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n switch (this._point) {\n case 2:\n this.context.lineTo(this._x1, this._y1, this._lastDefined2 !== false, this.lastPoint1);\n break;\n case 3:\n point(this, this._t0, slope2(this, this._t0), this._lastDefined2 !== false, this.lastPoint1);\n break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n let t1 = NaN;\n const x = p.x;\n const y = p.y;\n if (x === this._x1 && y === this._y1) {\n return;\n } // Ignore coincident points.\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n point(\n this,\n slope2(this, (t1 = slope3(this, x, y))),\n t1,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n default:\n point(\n this,\n this._t0,\n (t1 = slope3(this, x, y)),\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n }\n\n (this._x0 = this._x1), (this._x1 = x);\n (this._y0 = this._y1), (this._y1 = y);\n this._t0 = t1;\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined !== false;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport class MonotoneY extends MonotoneX {\n declare context: ISegPath2D;\n\n protected declare startPoint?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n super(context, startPoint);\n }\n\n point(p: IPointLike): void {\n return super.point({ y: p.x, x: p.y, defined: p.defined } as any);\n }\n}\n\nexport function genMonotpneXTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneXSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = new SegContext(\n 'monotoneX',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const monotoneX = new MonotoneX(segContext, startPoint);\n\n genMonotpneXTypeSegments(monotoneX, points);\n\n return segContext;\n}\n\nexport function genMonotpneYTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneYSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = new ReflectSegContext(\n 'monotoneY',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const monotoneY = new MonotoneY(segContext, startPoint);\n\n genMonotpneYTypeSegments(monotoneY, points);\n\n return segContext;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/monotone.ts"],"names":[],"mappings":"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","file":"monotone.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments } from './common';\nimport { ReflectSegContext, SegContext } from '../seg-context';\nimport { Direction } from '../enums';\nimport type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/monotone.js\nfunction sign(x: number): number {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(curveClass: MonotoneX | MonotoneY, x2: number, y2: number) {\n const h0 = curveClass._x1 - curveClass._x0;\n const h1 = x2 - curveClass._x1;\n const s0 = (curveClass._y1 - curveClass._y0) / (h0 || Number(h1 < 0 && -0));\n const s1 = (y2 - curveClass._y1) / (h1 || Number(h0 < 0 && -0));\n const p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(curveClass: MonotoneX | MonotoneY, t: number) {\n const h = curveClass._x1 - curveClass._x0;\n return h ? ((3 * (curveClass._y1 - curveClass._y0)) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(curveClass: MonotoneX | MonotoneY, t0: number, t1: number, defined: boolean, p: IPointLike) {\n const x0 = curveClass._x0;\n const y0 = curveClass._y0;\n const x1 = curveClass._x1;\n const y1 = curveClass._y1;\n const dx = (x1 - x0) / 3;\n curveClass.context.bezierCurveTo(\n x0 + dx,\n y0 + dx * t0,\n x1 - dx,\n y1 - dx * t1,\n x1,\n y1,\n defined,\n curveClass.lastPoint1\n );\n}\n\nexport class MonotoneX implements ICurvedSegment {\n protected _lastDefined1?: boolean;\n protected _lastDefined2?: boolean;\n declare context: ISegPath2D;\n declare _t0: number;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n switch (this._point) {\n case 2:\n this.context.lineTo(\n this._x1,\n this._y1,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n case 3:\n point(\n this,\n this._t0,\n slope2(this, this._t0),\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n let t1 = NaN;\n const x = p.x;\n const y = p.y;\n if (x === this._x1 && y === this._y1) {\n return;\n } // Ignore coincident points.\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n point(\n this,\n slope2(this, (t1 = slope3(this, x, y))),\n t1,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n default:\n point(\n this,\n this._t0,\n (t1 = slope3(this, x, y)),\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n }\n\n (this._x0 = this._x1), (this._x1 = x);\n (this._y0 = this._y1), (this._y1 = y);\n this._t0 = t1;\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined !== false;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport class MonotoneY extends MonotoneX {\n declare context: ISegPath2D;\n\n protected declare startPoint?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n super(context, startPoint);\n }\n\n point(p: IPointLike): void {\n return super.point({ y: p.x, x: p.y, defined: p.defined } as any);\n }\n}\n\nexport function genMonotpneXTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneXSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = new SegContext(\n 'monotoneX',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const monotoneX = new MonotoneX(segContext, startPoint);\n\n genMonotpneXTypeSegments(monotoneX, points);\n\n return segContext;\n}\n\nexport function genMonotpneYTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneYSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = new ReflectSegContext(\n 'monotoneY',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const monotoneY = new MonotoneY(segContext, startPoint);\n\n genMonotpneYTypeSegments(monotoneY, points);\n\n return segContext;\n}\n"]}
@@ -8,7 +8,8 @@ const vutils_1 = require("@visactor/vutils"), halfPi = vutils_1.pi / 2;
8
8
 
9
9
  function createRectPath(path, x, y, width, height, rectCornerRadius) {
10
10
  let cornerRadius;
11
- if ((0, vutils_1.isNumber)(rectCornerRadius, !0)) cornerRadius = [ rectCornerRadius, rectCornerRadius, rectCornerRadius, rectCornerRadius ]; else if (Array.isArray(rectCornerRadius)) {
11
+ if (width < 0 && (x += width, width = -width), height < 0 && (y += height, height = -height),
12
+ (0, vutils_1.isNumber)(rectCornerRadius, !0)) cornerRadius = [ rectCornerRadius, rectCornerRadius, rectCornerRadius, rectCornerRadius ]; else if (Array.isArray(rectCornerRadius)) {
12
13
  const cornerRadiusArr = rectCornerRadius;
13
14
  switch (cornerRadiusArr.length) {
14
15
  case 0:
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/shape/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import type { vec2, vec4 } from '@visactor/vutils';\nimport { isNumber, arrayEqual, pi } from '@visactor/vutils';\nimport type { IContext2d, ICustomPath2D } from '../../interface';\n\nconst halfPi = pi / 2;\n\nexport function createRectPath(\n path: ICustomPath2D | IContext2d,\n x: number,\n y: number,\n width: number,\n height: number,\n rectCornerRadius: number | number[]\n) {\n // 匹配cornerRadius\n let cornerRadius: vec4;\n if (isNumber(rectCornerRadius, true)) {\n cornerRadius = [\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius\n ];\n } else if (Array.isArray(rectCornerRadius)) {\n const cornerRadiusArr: number[] = rectCornerRadius as number[];\n switch (cornerRadiusArr.length) {\n case 0:\n cornerRadius = [0, 0, 0, 0];\n break;\n case 1:\n cornerRadius = [cornerRadiusArr[0], cornerRadiusArr[0], cornerRadiusArr[0], cornerRadiusArr[0]];\n break;\n case 2:\n case 3:\n cornerRadius = [cornerRadiusArr[0], cornerRadiusArr[1], cornerRadiusArr[0], cornerRadiusArr[1]];\n break;\n default:\n cornerRadius = cornerRadiusArr.slice(0, 5) as [number, number, number, number];\n break;\n }\n } else {\n cornerRadius = [0, 0, 0, 0];\n }\n\n // 当宽度小于0 或者 cornerRadius 极小时,不绘制 cornerRadius\n if (\n width < 0 ||\n Math.abs(cornerRadius[0]) + Math.abs(cornerRadius[1]) + Math.abs(cornerRadius[2]) + Math.abs(cornerRadius[3]) <\n 1e-12\n ) {\n return path.rect(x, y, width, height);\n }\n\n const [leftTop, rightTop, rightBottom, leftBottom]: [vec2, vec2, vec2, vec2] = [\n [x, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height]\n ];\n //\n // *(leftTopPoint1)******************(rightTopPoint1)\n // (leftTopPoint2) (rightTopPoint2)\n // * *\n // * *\n // (leftBottomPoint2) (rightBottomPoint2)\n // *(leftBottomPoint1)***************(rightBottomPoint1)\n //\n const maxCornerRadius = Math.min(width / 2, height / 2);\n const _cornerRadius: vec4 = [\n Math.min(maxCornerRadius, cornerRadius[0]),\n Math.min(maxCornerRadius, cornerRadius[1]),\n Math.min(maxCornerRadius, cornerRadius[2]),\n Math.min(maxCornerRadius, cornerRadius[3])\n ];\n const leftTopPoint1: vec2 = [leftTop[0] + _cornerRadius[0], leftTop[1]];\n const leftTopPoint2: vec2 = [leftTop[0], leftTop[1] + _cornerRadius[0]];\n const rightTopPoint1: vec2 = [rightTop[0] - _cornerRadius[1], rightTop[1]];\n const rightTopPoint2: vec2 = [rightTop[0], rightTop[1] + _cornerRadius[1]];\n const rightBottomPoint1: vec2 = [rightBottom[0] - _cornerRadius[2], rightBottom[1]];\n const rightBottomPoint2: vec2 = [rightBottom[0], rightBottom[1] - _cornerRadius[2]];\n const leftBottomPoint1: vec2 = [leftBottom[0] + _cornerRadius[3], leftBottom[1]];\n const leftBottomPoint2: vec2 = [leftBottom[0], leftBottom[1] - _cornerRadius[3]];\n\n path.moveTo(leftTopPoint1[0], leftTopPoint1[1]);\n path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n if (!arrayEqual(rightTopPoint1, rightTopPoint2)) {\n const centerX = rightTopPoint1[0];\n const centerY = rightTopPoint1[1] + _cornerRadius[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[1],\n -halfPi,\n 0,\n // Math.atan2(rightTopPoint1[1] - centerY, rightTopPoint1[0] - centerX),\n // Math.atan2(rightTopPoint2[1] - centerY, rightTopPoint2[0] - centerX),\n false\n );\n // path.arcTo(rightTop[0], rightTop[1], rightTopPoint2[0], rightTopPoint2[1], _cornerRadius[1]);\n }\n\n path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n if (!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {\n const centerX = rightBottomPoint2[0] - _cornerRadius[2];\n const centerY = rightBottomPoint2[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[2],\n 0,\n halfPi,\n // Math.atan2(rightBottomPoint2[1] - centerY, rightBottomPoint2[0] - centerX),\n // Math.atan2(rightBottomPoint1[1] - centerY, rightBottomPoint1[0] - centerX),\n false\n );\n // path.arcTo(rightBottom[0], rightBottom[1], rightBottomPoint1[0], rightBottomPoint1[1], _cornerRadius[2]);\n }\n\n path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n if (!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {\n const centerX = leftBottomPoint1[0];\n const centerY = leftBottomPoint1[1] - _cornerRadius[3];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[3],\n halfPi,\n pi,\n // Math.atan2(leftBottomPoint1[1] - centerY, leftBottomPoint1[0] - centerX),\n // Math.atan2(leftBottomPoint2[1] - centerY, leftBottomPoint2[0] - centerX),\n false\n );\n // path.arcTo(leftBottom[0], leftBottom[1], leftBottomPoint2[0], leftBottomPoint2[1], _cornerRadius[3]);\n }\n\n path.lineTo(leftTopPoint2[0], leftTopPoint2[1]);\n if (!arrayEqual(leftTopPoint1, leftTopPoint2)) {\n const centerX = leftTopPoint1[0];\n const centerY = leftTopPoint1[1] + _cornerRadius[0];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[0],\n pi,\n pi + halfPi,\n // Math.atan2(leftTopPoint2[1] - centerY, leftTopPoint2[0] - centerX),\n // Math.atan2(leftTopPoint1[1] - centerY, leftTopPoint1[0] - centerX) + Math.PI * 2,\n false\n );\n // path.arcTo(leftTop[0], leftTop[1], leftTopPoint1[0], leftTopPoint1[1], _cornerRadius[0]);\n }\n path.closePath();\n return path;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/shape/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import type { vec2, vec4 } from '@visactor/vutils';\nimport { isNumber, arrayEqual, pi } from '@visactor/vutils';\nimport type { IContext2d, ICustomPath2D } from '../../interface';\n\nconst halfPi = pi / 2;\n\nexport function createRectPath(\n path: ICustomPath2D | IContext2d,\n x: number,\n y: number,\n width: number,\n height: number,\n rectCornerRadius: number | number[]\n) {\n if (width < 0) {\n x += width;\n width = -width;\n }\n if (height < 0) {\n y += height;\n height = -height;\n }\n // 匹配cornerRadius\n let cornerRadius: vec4;\n if (isNumber(rectCornerRadius, true)) {\n cornerRadius = [\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius\n ];\n } else if (Array.isArray(rectCornerRadius)) {\n const cornerRadiusArr: number[] = rectCornerRadius as number[];\n switch (cornerRadiusArr.length) {\n case 0:\n cornerRadius = [0, 0, 0, 0];\n break;\n case 1:\n cornerRadius = [cornerRadiusArr[0], cornerRadiusArr[0], cornerRadiusArr[0], cornerRadiusArr[0]];\n break;\n case 2:\n case 3:\n cornerRadius = [cornerRadiusArr[0], cornerRadiusArr[1], cornerRadiusArr[0], cornerRadiusArr[1]];\n break;\n default:\n cornerRadius = cornerRadiusArr.slice(0, 5) as [number, number, number, number];\n break;\n }\n } else {\n cornerRadius = [0, 0, 0, 0];\n }\n\n // 当宽度小于0 或者 cornerRadius 极小时,不绘制 cornerRadius\n if (\n width < 0 ||\n Math.abs(cornerRadius[0]) + Math.abs(cornerRadius[1]) + Math.abs(cornerRadius[2]) + Math.abs(cornerRadius[3]) <\n 1e-12\n ) {\n return path.rect(x, y, width, height);\n }\n\n const [leftTop, rightTop, rightBottom, leftBottom]: [vec2, vec2, vec2, vec2] = [\n [x, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height]\n ];\n //\n // *(leftTopPoint1)******************(rightTopPoint1)\n // (leftTopPoint2) (rightTopPoint2)\n // * *\n // * *\n // (leftBottomPoint2) (rightBottomPoint2)\n // *(leftBottomPoint1)***************(rightBottomPoint1)\n //\n const maxCornerRadius = Math.min(width / 2, height / 2);\n const _cornerRadius: vec4 = [\n Math.min(maxCornerRadius, cornerRadius[0]),\n Math.min(maxCornerRadius, cornerRadius[1]),\n Math.min(maxCornerRadius, cornerRadius[2]),\n Math.min(maxCornerRadius, cornerRadius[3])\n ];\n const leftTopPoint1: vec2 = [leftTop[0] + _cornerRadius[0], leftTop[1]];\n const leftTopPoint2: vec2 = [leftTop[0], leftTop[1] + _cornerRadius[0]];\n const rightTopPoint1: vec2 = [rightTop[0] - _cornerRadius[1], rightTop[1]];\n const rightTopPoint2: vec2 = [rightTop[0], rightTop[1] + _cornerRadius[1]];\n const rightBottomPoint1: vec2 = [rightBottom[0] - _cornerRadius[2], rightBottom[1]];\n const rightBottomPoint2: vec2 = [rightBottom[0], rightBottom[1] - _cornerRadius[2]];\n const leftBottomPoint1: vec2 = [leftBottom[0] + _cornerRadius[3], leftBottom[1]];\n const leftBottomPoint2: vec2 = [leftBottom[0], leftBottom[1] - _cornerRadius[3]];\n\n path.moveTo(leftTopPoint1[0], leftTopPoint1[1]);\n path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n if (!arrayEqual(rightTopPoint1, rightTopPoint2)) {\n const centerX = rightTopPoint1[0];\n const centerY = rightTopPoint1[1] + _cornerRadius[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[1],\n -halfPi,\n 0,\n // Math.atan2(rightTopPoint1[1] - centerY, rightTopPoint1[0] - centerX),\n // Math.atan2(rightTopPoint2[1] - centerY, rightTopPoint2[0] - centerX),\n false\n );\n // path.arcTo(rightTop[0], rightTop[1], rightTopPoint2[0], rightTopPoint2[1], _cornerRadius[1]);\n }\n\n path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n if (!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {\n const centerX = rightBottomPoint2[0] - _cornerRadius[2];\n const centerY = rightBottomPoint2[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[2],\n 0,\n halfPi,\n // Math.atan2(rightBottomPoint2[1] - centerY, rightBottomPoint2[0] - centerX),\n // Math.atan2(rightBottomPoint1[1] - centerY, rightBottomPoint1[0] - centerX),\n false\n );\n // path.arcTo(rightBottom[0], rightBottom[1], rightBottomPoint1[0], rightBottomPoint1[1], _cornerRadius[2]);\n }\n\n path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n if (!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {\n const centerX = leftBottomPoint1[0];\n const centerY = leftBottomPoint1[1] - _cornerRadius[3];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[3],\n halfPi,\n pi,\n // Math.atan2(leftBottomPoint1[1] - centerY, leftBottomPoint1[0] - centerX),\n // Math.atan2(leftBottomPoint2[1] - centerY, leftBottomPoint2[0] - centerX),\n false\n );\n // path.arcTo(leftBottom[0], leftBottom[1], leftBottomPoint2[0], leftBottomPoint2[1], _cornerRadius[3]);\n }\n\n path.lineTo(leftTopPoint2[0], leftTopPoint2[1]);\n if (!arrayEqual(leftTopPoint1, leftTopPoint2)) {\n const centerX = leftTopPoint1[0];\n const centerY = leftTopPoint1[1] + _cornerRadius[0];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[0],\n pi,\n pi + halfPi,\n // Math.atan2(leftTopPoint2[1] - centerY, leftTopPoint2[0] - centerX),\n // Math.atan2(leftTopPoint1[1] - centerY, leftTopPoint1[0] - centerX) + Math.PI * 2,\n false\n );\n // path.arcTo(leftTop[0], leftTop[1], leftTopPoint1[0], leftTopPoint1[1], _cornerRadius[0]);\n }\n path.closePath();\n return path;\n}\n"]}
@@ -97,5 +97,4 @@ function findNextGraphic(graphic, id, defaultZIndex, reverse = !1) {
97
97
  Object.defineProperty(exports, "__esModule", {
98
98
  value: !0
99
99
  }), exports.findNextGraphic = exports.foreachAsync = exports.foreach = void 0, exports.foreach = foreach,
100
- exports.foreachAsync = foreachAsync, exports.findNextGraphic = findNextGraphic;
101
- //# sourceMappingURL=sort.js.map
100
+ exports.foreachAsync = foreachAsync, exports.findNextGraphic = findNextGraphic;
@@ -1 +1,2 @@
1
- class StageStore {}
1
+ class StageStore {}
2
+ //# sourceMappingURL=store.js.map
@@ -38,3 +38,4 @@ export declare class RafBasedSTO {
38
38
  appendDuration(d: number): void;
39
39
  }
40
40
  export declare const rafBasedSto: RafBasedSTO;
41
+ export declare const calculateLineHeight: (lineHeight: string | number, fontSize: number) => number;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.rafBasedSto = exports.RafBasedSTO = exports.getAttributeFromDefaultAttrList = exports.isTransformKey = exports.transformKeys = exports.pointsInterpolation = exports.pointInterpolationHighPerformance = exports.pointInterpolation = exports.pointEqual = exports.pointsEqual = exports.circleBounds = exports.parsePadding = exports.parseStroke = exports.Edge = void 0;
5
+ }), exports.calculateLineHeight = exports.rafBasedSto = exports.RafBasedSTO = exports.getAttributeFromDefaultAttrList = exports.isTransformKey = exports.transformKeys = exports.pointsInterpolation = exports.pointInterpolationHighPerformance = exports.pointInterpolation = exports.pointEqual = exports.pointsEqual = exports.circleBounds = exports.parsePadding = exports.parseStroke = exports.Edge = void 0;
6
6
 
7
7
  const vutils_1 = require("@visactor/vutils");
8
8
 
@@ -151,4 +151,13 @@ class RafBasedSTO {
151
151
  }
152
152
 
153
153
  exports.RafBasedSTO = RafBasedSTO, RafBasedSTO.TimeOut = 1e3 / 60, exports.rafBasedSto = new RafBasedSTO;
154
+
155
+ const calculateLineHeight = (lineHeight, fontSize) => {
156
+ if ((0, vutils_1.isString)(lineHeight) && "%" === lineHeight[lineHeight.length - 1]) {
157
+ return fontSize * (Number.parseFloat(lineHeight.substring(0, lineHeight.length - 1)) / 100);
158
+ }
159
+ return lineHeight;
160
+ };
161
+
162
+ exports.calculateLineHeight = calculateLineHeight;
154
163
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { IBounds, IPointLike } from '@visactor/vutils';\nimport { isBoolean, isNumber, halfPi, pi, pi2, max, min, sin, cos, isArray, pointAt, Point } from '@visactor/vutils';\nimport type { IGraphicAttribute, IStrokeStyle } from '../interface';\n\n// todo: 迁移到@visactor/vutils\n\nexport enum Edge {\n Top = 0b000001,\n Right = 0b000010,\n Bottom = 0b000100,\n Left = 0b001000,\n\n ALL = 0b001111\n}\n\n// 公共的stroke数组,避免大量数组生成\nconst _strokeVec4: [boolean | string, boolean | string, boolean | string, boolean | string] = [\n false,\n false,\n false,\n false\n];\n/**\n * 解析stroke配置\n * @param stroke\n * @returns\n */\nexport const parseStroke = (\n stroke: IStrokeStyle['stroke']\n): {\n isFullStroke: boolean;\n stroke: (boolean | string)[];\n} => {\n let isFullStroke: boolean = true;\n // 首先判断\n if (isBoolean(stroke, true)) {\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = stroke as boolean;\n isFullStroke &&= !!(_strokeVec4[i] ?? true);\n }\n isFullStroke = stroke as boolean;\n } else if (Array.isArray(stroke)) {\n // array\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = !!stroke[i];\n isFullStroke &&= !!_strokeVec4[i];\n }\n } else {\n _strokeVec4[0] = false;\n _strokeVec4[1] = false;\n _strokeVec4[2] = false;\n _strokeVec4[3] = false;\n }\n\n return {\n isFullStroke,\n stroke: _strokeVec4\n };\n};\n\n// 公共的padding数组,避免大量数组生成\nconst _paddingVec4: [number, number, number, number] = [0, 0, 0, 0];\n/**\n * 解析padding配置\n * @param padding\n * @returns\n */\nexport const parsePadding = (\n padding: IGraphicAttribute['boundsPadding']\n): number | [number, number, number, number] => {\n if (!padding) {\n return 0;\n }\n if (isArray(padding)) {\n if (padding.length === 0) {\n return 0;\n } else if (padding.length === 1) {\n return padding[0];\n } else if (padding.length === 2) {\n _paddingVec4[0] = padding[0];\n _paddingVec4[2] = padding[0];\n _paddingVec4[1] = padding[1];\n _paddingVec4[3] = padding[1];\n return _paddingVec4;\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return padding as [number, number, number, number];\n }\n\n return padding as number;\n};\n\nconst _coords: [IPointLike, IPointLike, IPointLike, IPointLike] = [\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n];\nconst indexList = [1, 2, 3, 0, 1, 2, 3, 0];\n/**\n * 计算circle一段弧线的bounds\n * @param startAngle 小于2pi\n * @param endAngle\n * @param radius\n * @param bounds\n */\nexport function circleBounds(startAngle: number, endAngle: number, radius: number, bounds: IBounds) {\n // startAngle小于2pi\n // endAngle - startAngle小于2pi\n while (startAngle >= pi2) {\n startAngle -= pi2;\n }\n while (startAngle < 0) {\n startAngle += pi2;\n }\n while (startAngle > endAngle) {\n endAngle += pi2;\n }\n _coords[0].x = radius;\n // _coords[0].y = 0;\n // _coords[1].x = 0;\n _coords[1].y = radius;\n _coords[2].x = -radius;\n // _coords[2].y = -radius;\n // _coords[3].x = 0;\n _coords[3].y = -radius;\n\n // (0,pi/2], (pi/2, pi], (pi, pi/2*3], (pi/2*3, 2pi]\n // 1, 2, 3, 0\n const startIdx = Math.ceil(startAngle / halfPi) % 4;\n const endIdx = Math.ceil(endAngle / halfPi) % 4;\n // console.log(startAngle, endAngle, cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle));\n bounds.add(cos(startAngle) * radius, sin(startAngle) * radius);\n bounds.add(cos(endAngle) * radius, sin(endAngle) * radius);\n if (startIdx !== endIdx || endAngle - startAngle > pi) {\n let match = false;\n for (let i = 0; i < indexList.length; i++) {\n if (!match && startIdx === indexList[i]) {\n match = true;\n const p = _coords[startIdx];\n bounds.add(p.x, p.y);\n continue;\n } else if (match && endIdx === indexList[i]) {\n break;\n }\n if (match) {\n const p = _coords[indexList[i]];\n bounds.add(p.x, p.y);\n }\n }\n }\n // const delta = Math.floor((endAngle - startAngle) / halfPi);\n // for (let i = 0; i < delta; i++) {\n // const p = _coords[(startIdx + i) % 4];\n // bounds.add(p.x, p.y);\n // }\n\n // // 计算y1, y2\n // const y2 = halfPi >= startAngle && halfPi <= endAngle ? radius : max(sin(startAngle), sin(endAngle)) * radius;\n // const y1 =\n // halfPi + pi >= startAngle && halfPi + pi <= endAngle ? -radius : min(sin(startAngle), sin(endAngle)) * radius;\n // const x2 = pi2 >= startAngle && pi2 <= endAngle ? radius : max(cos(startAngle), cos(endAngle)) * radius;\n // const x1 = pi >= startAngle && pi <= endAngle ? -radius : min(cos(startAngle), cos(endAngle)) * radius;\n\n // // bounds.set(x1, y1, x2, y2);\n // bounds.add(x1, y1);\n // bounds.add(x2, y2);\n}\n\n/**\n * 比较两个点数组是否相同\n * @param pointsA 数组A\n * @param pointsB 数组B\n */\nexport function pointsEqual(pointsA: IPointLike[] | IPointLike, pointsB: IPointLike[] | IPointLike): boolean {\n if (!pointsA || !pointsB) {\n return false;\n } // 需要传入pointsA和pointsB\n if (Array.isArray(pointsA) && Array.isArray(pointsB)) {\n // 如果pointsA和pointsB是数组\n if (pointsA.length !== pointsB.length) {\n return false;\n }\n return pointsA.every((point, index) => pointEqual(point, pointsB[index]));\n }\n if (!Number.isNaN((pointsA as IPointLike).x + (pointsA as IPointLike).y)) {\n // 如果pointA是IPoint(防止参数是undefined)\n return pointEqual(pointsA as IPointLike, pointsB as IPointLike);\n }\n return false;\n}\n\n/**\n * 比较两个点是否相同\n * @param pointA 点A\n * @param pointB 点B\n */\nexport function pointEqual(pointA: IPointLike, pointB: IPointLike): boolean {\n return (\n pointA.x === pointB.x &&\n pointA.y === pointB.y &&\n pointA.x1 === pointB.x1 &&\n pointA.y1 === pointB.y1 &&\n pointA.defined === pointB.defined\n );\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolation(pointA: IPointLike, pointB: IPointLike, ratio: number): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n const point = new Point(x as number, y as number, x1, y1);\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolationHighPerformance(\n pointA: IPointLike,\n pointB: IPointLike,\n ratio: number,\n point: IPointLike\n): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n // const point = new Point(x as number, y as number, x1, y1);\n point.x = x as number;\n point.y = y as number;\n point.x1 = x1;\n point.y1 = y1;\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 点数组插值\n * @param pointsA 点数组A\n * @param pointsB 点数组B\n * @param ratio 比例\n */\nexport function pointsInterpolation(\n pointsA: IPointLike[] | IPointLike,\n pointsB: IPointLike[] | IPointLike,\n ratio: number\n): IPointLike[] {\n if (!pointsA || !pointsB) {\n return [];\n } // 需要传入pointsA和pointsB\n if (!Array.isArray(pointsA)) {\n pointsA = [pointsA];\n }\n if (!Array.isArray(pointsB)) {\n pointsB = [pointsB];\n }\n\n let points: IPointLike[] = [];\n if (pointsA.length > pointsB.length) {\n // 如果变短了,那么后面点的直接clip\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsB.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n } else {\n // 如果变长了,加上后面的点\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsA.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n }\n return points;\n}\n\nexport const transformKeys = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'scrollX',\n 'scrollY'\n];\nexport const isTransformKey = (key: string) => {\n return transformKeys.includes(key);\n};\n\nexport function getAttributeFromDefaultAttrList(attr: Record<string, any> | Record<string, any>[], key: string) {\n if (isArray(attr)) {\n let val;\n for (let i = 0; i < attr.length && val === undefined; i++) {\n val = attr[i][key];\n }\n return val;\n }\n return attr[key];\n}\n\nexport class RafBasedSTO {\n static TimeOut = 1000 / 60;\n durations: number[];\n timeout: number;\n lastDate: number;\n durationsListThreshold: number;\n\n constructor() {\n this.durations = [];\n this.timeout = RafBasedSTO.TimeOut;\n this.lastDate = 0;\n this.durationsListThreshold = 30;\n }\n\n call(cb: FrameRequestCallback) {\n this.lastDate = Date.now();\n return setTimeout(\n () => {\n this.appendDuration(Date.now() - this.lastDate);\n cb(0);\n },\n this.timeout,\n true\n );\n }\n\n clear(h: number) {\n clearTimeout(h);\n }\n\n appendDuration(d: number) {\n this.durations.push(d);\n if (this.durations.length > this.durationsListThreshold) {\n this.durations.shift();\n }\n // 最多60fps, 最少30fps\n this.timeout = Math.min(\n Math.max(this.durations.reduce((a, b) => a + b, 0) / this.durations.length, 1000 / 60),\n 1000 / 30\n );\n }\n}\n\nexport const rafBasedSto = new RafBasedSTO();\n"]}
1
+ {"version":3,"sources":["../src/common/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type { IBounds, IPointLike } from '@visactor/vutils';\nimport { isBoolean, halfPi, pi, pi2, sin, cos, isArray, pointAt, Point, isString } from '@visactor/vutils';\nimport type { IGraphicAttribute, IStrokeStyle } from '../interface';\n\n// todo: 迁移到@visactor/vutils\n\nexport enum Edge {\n Top = 0b000001,\n Right = 0b000010,\n Bottom = 0b000100,\n Left = 0b001000,\n\n ALL = 0b001111\n}\n\n// 公共的stroke数组,避免大量数组生成\nconst _strokeVec4: [boolean | string, boolean | string, boolean | string, boolean | string] = [\n false,\n false,\n false,\n false\n];\n/**\n * 解析stroke配置\n * @param stroke\n * @returns\n */\nexport const parseStroke = (\n stroke: IStrokeStyle['stroke']\n): {\n isFullStroke: boolean;\n stroke: (boolean | string)[];\n} => {\n let isFullStroke: boolean = true;\n // 首先判断\n if (isBoolean(stroke, true)) {\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = stroke as boolean;\n isFullStroke &&= !!(_strokeVec4[i] ?? true);\n }\n isFullStroke = stroke as boolean;\n } else if (Array.isArray(stroke)) {\n // array\n for (let i = 0; i < 4; i++) {\n _strokeVec4[i] = !!stroke[i];\n isFullStroke &&= !!_strokeVec4[i];\n }\n } else {\n _strokeVec4[0] = false;\n _strokeVec4[1] = false;\n _strokeVec4[2] = false;\n _strokeVec4[3] = false;\n }\n\n return {\n isFullStroke,\n stroke: _strokeVec4\n };\n};\n\n// 公共的padding数组,避免大量数组生成\nconst _paddingVec4: [number, number, number, number] = [0, 0, 0, 0];\n/**\n * 解析padding配置\n * @param padding\n * @returns\n */\nexport const parsePadding = (\n padding: IGraphicAttribute['boundsPadding']\n): number | [number, number, number, number] => {\n if (!padding) {\n return 0;\n }\n if (isArray(padding)) {\n if (padding.length === 0) {\n return 0;\n } else if (padding.length === 1) {\n return padding[0];\n } else if (padding.length === 2) {\n _paddingVec4[0] = padding[0];\n _paddingVec4[2] = padding[0];\n _paddingVec4[1] = padding[1];\n _paddingVec4[3] = padding[1];\n return _paddingVec4;\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return padding as [number, number, number, number];\n }\n\n return padding as number;\n};\n\nconst _coords: [IPointLike, IPointLike, IPointLike, IPointLike] = [\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 },\n { x: 0, y: 0 }\n];\nconst indexList = [1, 2, 3, 0, 1, 2, 3, 0];\n/**\n * 计算circle一段弧线的bounds\n * @param startAngle 小于2pi\n * @param endAngle\n * @param radius\n * @param bounds\n */\nexport function circleBounds(startAngle: number, endAngle: number, radius: number, bounds: IBounds) {\n // startAngle小于2pi\n // endAngle - startAngle小于2pi\n while (startAngle >= pi2) {\n startAngle -= pi2;\n }\n while (startAngle < 0) {\n startAngle += pi2;\n }\n while (startAngle > endAngle) {\n endAngle += pi2;\n }\n _coords[0].x = radius;\n // _coords[0].y = 0;\n // _coords[1].x = 0;\n _coords[1].y = radius;\n _coords[2].x = -radius;\n // _coords[2].y = -radius;\n // _coords[3].x = 0;\n _coords[3].y = -radius;\n\n // (0,pi/2], (pi/2, pi], (pi, pi/2*3], (pi/2*3, 2pi]\n // 1, 2, 3, 0\n const startIdx = Math.ceil(startAngle / halfPi) % 4;\n const endIdx = Math.ceil(endAngle / halfPi) % 4;\n // console.log(startAngle, endAngle, cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle));\n bounds.add(cos(startAngle) * radius, sin(startAngle) * radius);\n bounds.add(cos(endAngle) * radius, sin(endAngle) * radius);\n if (startIdx !== endIdx || endAngle - startAngle > pi) {\n let match = false;\n for (let i = 0; i < indexList.length; i++) {\n if (!match && startIdx === indexList[i]) {\n match = true;\n const p = _coords[startIdx];\n bounds.add(p.x, p.y);\n continue;\n } else if (match && endIdx === indexList[i]) {\n break;\n }\n if (match) {\n const p = _coords[indexList[i]];\n bounds.add(p.x, p.y);\n }\n }\n }\n // const delta = Math.floor((endAngle - startAngle) / halfPi);\n // for (let i = 0; i < delta; i++) {\n // const p = _coords[(startIdx + i) % 4];\n // bounds.add(p.x, p.y);\n // }\n\n // // 计算y1, y2\n // const y2 = halfPi >= startAngle && halfPi <= endAngle ? radius : max(sin(startAngle), sin(endAngle)) * radius;\n // const y1 =\n // halfPi + pi >= startAngle && halfPi + pi <= endAngle ? -radius : min(sin(startAngle), sin(endAngle)) * radius;\n // const x2 = pi2 >= startAngle && pi2 <= endAngle ? radius : max(cos(startAngle), cos(endAngle)) * radius;\n // const x1 = pi >= startAngle && pi <= endAngle ? -radius : min(cos(startAngle), cos(endAngle)) * radius;\n\n // // bounds.set(x1, y1, x2, y2);\n // bounds.add(x1, y1);\n // bounds.add(x2, y2);\n}\n\n/**\n * 比较两个点数组是否相同\n * @param pointsA 数组A\n * @param pointsB 数组B\n */\nexport function pointsEqual(pointsA: IPointLike[] | IPointLike, pointsB: IPointLike[] | IPointLike): boolean {\n if (!pointsA || !pointsB) {\n return false;\n } // 需要传入pointsA和pointsB\n if (Array.isArray(pointsA) && Array.isArray(pointsB)) {\n // 如果pointsA和pointsB是数组\n if (pointsA.length !== pointsB.length) {\n return false;\n }\n return pointsA.every((point, index) => pointEqual(point, pointsB[index]));\n }\n if (!Number.isNaN((pointsA as IPointLike).x + (pointsA as IPointLike).y)) {\n // 如果pointA是IPoint(防止参数是undefined)\n return pointEqual(pointsA as IPointLike, pointsB as IPointLike);\n }\n return false;\n}\n\n/**\n * 比较两个点是否相同\n * @param pointA 点A\n * @param pointB 点B\n */\nexport function pointEqual(pointA: IPointLike, pointB: IPointLike): boolean {\n return (\n pointA.x === pointB.x &&\n pointA.y === pointB.y &&\n pointA.x1 === pointB.x1 &&\n pointA.y1 === pointB.y1 &&\n pointA.defined === pointB.defined\n );\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolation(pointA: IPointLike, pointB: IPointLike, ratio: number): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n const point = new Point(x as number, y as number, x1, y1);\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 两点插值\n * @param pointA 点A\n * @param pointB 点B\n * @param ratio 比例\n */\nexport function pointInterpolationHighPerformance(\n pointA: IPointLike,\n pointB: IPointLike,\n ratio: number,\n point: IPointLike\n): IPointLike {\n const { x, y } = pointAt(pointA.x, pointA.y, pointB.x, pointB.y, ratio);\n const { x: x1, y: y1 } = pointAt(pointA.x1, pointA.y1, pointB.x1, pointB.y1, ratio);\n // const point = new Point(x as number, y as number, x1, y1);\n point.x = x as number;\n point.y = y as number;\n point.x1 = x1;\n point.y1 = y1;\n point.defined = pointB.defined;\n return point;\n}\n\n/**\n * 点数组插值\n * @param pointsA 点数组A\n * @param pointsB 点数组B\n * @param ratio 比例\n */\nexport function pointsInterpolation(\n pointsA: IPointLike[] | IPointLike,\n pointsB: IPointLike[] | IPointLike,\n ratio: number\n): IPointLike[] {\n if (!pointsA || !pointsB) {\n return [];\n } // 需要传入pointsA和pointsB\n if (!Array.isArray(pointsA)) {\n pointsA = [pointsA];\n }\n if (!Array.isArray(pointsB)) {\n pointsB = [pointsB];\n }\n\n let points: IPointLike[] = [];\n if (pointsA.length > pointsB.length) {\n // 如果变短了,那么后面点的直接clip\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsB.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n } else {\n // 如果变长了,加上后面的点\n points = pointsB.map(point => {\n const p = new Point(point.x, point.y, point.x1, point.y1);\n p.defined = point.defined;\n return p;\n });\n for (let i = 0; i < pointsA.length; i++) {\n points[i] = pointInterpolation(pointsA[i], pointsB[i], ratio);\n }\n }\n return points;\n}\n\nexport const transformKeys = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'scrollX',\n 'scrollY'\n];\nexport const isTransformKey = (key: string) => {\n return transformKeys.includes(key);\n};\n\nexport function getAttributeFromDefaultAttrList(attr: Record<string, any> | Record<string, any>[], key: string) {\n if (isArray(attr)) {\n let val;\n for (let i = 0; i < attr.length && val === undefined; i++) {\n val = attr[i][key];\n }\n return val;\n }\n return attr[key];\n}\n\nexport class RafBasedSTO {\n static TimeOut = 1000 / 60;\n durations: number[];\n timeout: number;\n lastDate: number;\n durationsListThreshold: number;\n\n constructor() {\n this.durations = [];\n this.timeout = RafBasedSTO.TimeOut;\n this.lastDate = 0;\n this.durationsListThreshold = 30;\n }\n\n call(cb: FrameRequestCallback) {\n this.lastDate = Date.now();\n return setTimeout(\n () => {\n this.appendDuration(Date.now() - this.lastDate);\n cb(0);\n },\n this.timeout,\n true\n );\n }\n\n clear(h: number) {\n clearTimeout(h);\n }\n\n appendDuration(d: number) {\n this.durations.push(d);\n if (this.durations.length > this.durationsListThreshold) {\n this.durations.shift();\n }\n // 最多60fps, 最少30fps\n this.timeout = Math.min(\n Math.max(this.durations.reduce((a, b) => a + b, 0) / this.durations.length, 1000 / 60),\n 1000 / 30\n );\n }\n}\n\nexport const rafBasedSto = new RafBasedSTO();\n\nexport const calculateLineHeight = (lineHeight: string | number, fontSize: number): number => {\n if (isString(lineHeight) && lineHeight[lineHeight.length - 1] === '%') {\n const scale = Number.parseFloat(lineHeight.substring(0, lineHeight.length - 1)) / 100;\n return fontSize * scale;\n }\n return lineHeight as number;\n};\n"]}
@@ -98,8 +98,8 @@ class OrderedObjParser {
98
98
  for (let i = 0; i < xmlData.length; i++) {
99
99
  if ("<" === xmlData[i]) if ("/" === xmlData[i + 1]) {
100
100
  const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed."), propIndex = jPath.lastIndexOf(".");
101
- jPath = jPath.substring(0, propIndex), currentNode = this.tagsNodeStack.pop(), textData = "",
102
- i = closeIndex;
101
+ jPath = jPath.substring(0, propIndex), currentNode = this.tagsNodeStack.pop(), currentNode && currentNode.child && textData && currentNode.child[currentNode.child.length - 1][":@"] && (currentNode.child[currentNode.child.length - 1][":@"].text = textData),
102
+ textData = "", i = closeIndex;
103
103
  } else if ("?" === xmlData[i + 1]) {
104
104
  i = readTagExp(xmlData, i, !1, "?>").closeIndex + 1;
105
105
  } else if ("!--" === xmlData.substr(i + 1, 3)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/xml/OrderedObjParser.ts"],"names":[],"mappings":"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","file":"OrderedObjParser.js","sourcesContent":["// 参考fast-xml-parser\n// https://github.com/NaturalIntelligence/fast-xml-parser\n/**\n * MIT License\n\nCopyright (c) 2017 Amit Kumar Gupta\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n */\nimport type { X2jOptions } from './type';\nimport { getAllMatches } from './utils';\n\nclass XmlNode {\n declare tagname: string;\n declare child: any[];\n\n constructor(tagname: string) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[':@'] = {}; //attributes map\n }\n add(key: string, val: string) {\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if (key === '__proto__') {\n key = '#__proto__';\n }\n this.child.push({ [key]: val });\n }\n addChild(node: XmlNode) {\n if (node.tagname === '__proto__') {\n node.tagname = '#__proto__';\n }\n if (node[':@'] && Object.keys(node[':@']).length > 0) {\n this.child.push({ [node.tagname]: node.child, [':@']: node[':@'] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\n\nfunction findClosingIndex(xmlData: string, str: string, i: number, errMsg: string) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData\n * @param {number} i starting index\n * @returns\n */\nfunction tagExpWithClosingIndex(xmlData: string, i: number, closingChar = '>') {\n let attrBoundary;\n let tagExp = '';\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) {\n attrBoundary = '';\n } //reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index: index\n };\n }\n } else {\n return {\n data: tagExp,\n index: index\n };\n }\n } else if (ch === '\\t') {\n ch = ' ';\n }\n tagExp += ch;\n }\n}\n\nfunction readTagExp(xmlData: string, i: number, removeNSPrefix: boolean, closingChar = '>') {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) {\n return;\n }\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n //separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(':');\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName\n };\n}\n\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nexport class OrderedObjParser {\n declare options: Partial<X2jOptions>;\n declare currentNode: XmlNode | null;\n declare tagsNodeStack: XmlNode[];\n declare docTypeEntities: Record<string, any>;\n\n constructor(options: Partial<X2jOptions>) {\n this.currentNode = null;\n this.options = options;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n }\n\n protected addChild(currentNode: XmlNode, childNode: XmlNode, jPath: string) {\n const result = childNode.tagname;\n if (typeof result === 'string') {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n\n protected buildAttributesMap(attrStr: string, jPath: string, tagName: string) {\n const attrs = {};\n if (!attrStr) {\n return;\n }\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const attrName = matches[i][1];\n const oldVal = matches[i][4];\n const aName = attrName;\n if (attrName) {\n if (oldVal !== undefined) {\n attrs[aName] = isNaN(oldVal) ? oldVal : Number(oldVal);\n } else {\n attrs[aName] = true;\n }\n }\n }\n return attrs;\n }\n\n parseXml(xmlData: string) {\n // 判断xml的合法性\n xmlData = xmlData.replace(/\\r\\n?/g, '\\n');\n const xmlObj = new XmlNode('!xml');\n let currentNode = xmlObj;\n let textData = '';\n let jPath = '';\n for (let i = 0; i < xmlData.length; i++) {\n const ch = xmlData[i];\n if (ch === '<') {\n if (xmlData[i + 1] === '/') {\n const closeIndex = findClosingIndex(xmlData, '>', i, 'Closing Tag is not closed.');\n const propIndex = jPath.lastIndexOf('.');\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = '';\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n const tagData = readTagExp(xmlData, i, false, '?>');\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, '-->', i + 4, 'Comment is not closed.');\n i = endIndex;\n } else {\n const result = readTagExp(xmlData, i, false);\n let tagName = result.tagName;\n let tagExp = result.tagExp;\n const attrExpPresent = result.attrExpPresent;\n const closeIndex = result.closeIndex;\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? '.' + tagName : tagName;\n }\n if (tagExp.length > 0 && tagExp.lastIndexOf('/') === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === '/') {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n const childNode = new XmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[':@'] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf('.'));\n } else {\n const childNode = new XmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[':@'] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = '';\n i = closeIndex;\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/xml/OrderedObjParser.ts"],"names":[],"mappings":"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","file":"OrderedObjParser.js","sourcesContent":["// 参考fast-xml-parser\n// https://github.com/NaturalIntelligence/fast-xml-parser\n/**\n * MIT License\n\nCopyright (c) 2017 Amit Kumar Gupta\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n */\nimport type { X2jOptions } from './type';\nimport { getAllMatches } from './utils';\n\nclass XmlNode {\n declare tagname: string;\n declare child: any[];\n\n constructor(tagname: string) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[':@'] = {}; //attributes map\n }\n add(key: string, val: string) {\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if (key === '__proto__') {\n key = '#__proto__';\n }\n this.child.push({ [key]: val });\n }\n addChild(node: XmlNode) {\n if (node.tagname === '__proto__') {\n node.tagname = '#__proto__';\n }\n if (node[':@'] && Object.keys(node[':@']).length > 0) {\n this.child.push({ [node.tagname]: node.child, [':@']: node[':@'] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\n\nfunction findClosingIndex(xmlData: string, str: string, i: number, errMsg: string) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData\n * @param {number} i starting index\n * @returns\n */\nfunction tagExpWithClosingIndex(xmlData: string, i: number, closingChar = '>') {\n let attrBoundary;\n let tagExp = '';\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) {\n attrBoundary = '';\n } //reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index: index\n };\n }\n } else {\n return {\n data: tagExp,\n index: index\n };\n }\n } else if (ch === '\\t') {\n ch = ' ';\n }\n tagExp += ch;\n }\n}\n\nfunction readTagExp(xmlData: string, i: number, removeNSPrefix: boolean, closingChar = '>') {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) {\n return;\n }\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n //separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(':');\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName\n };\n}\n\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nexport class OrderedObjParser {\n declare options: Partial<X2jOptions>;\n declare currentNode: XmlNode | null;\n declare tagsNodeStack: XmlNode[];\n declare docTypeEntities: Record<string, any>;\n\n constructor(options: Partial<X2jOptions>) {\n this.currentNode = null;\n this.options = options;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n }\n\n protected addChild(currentNode: XmlNode, childNode: XmlNode, jPath: string) {\n const result = childNode.tagname;\n if (typeof result === 'string') {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n\n protected buildAttributesMap(attrStr: string, jPath: string, tagName: string) {\n const attrs = {};\n if (!attrStr) {\n return;\n }\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const attrName = matches[i][1];\n const oldVal = matches[i][4];\n const aName = attrName;\n if (attrName) {\n if (oldVal !== undefined) {\n attrs[aName] = isNaN(oldVal) ? oldVal : Number(oldVal);\n } else {\n attrs[aName] = true;\n }\n }\n }\n return attrs;\n }\n\n parseXml(xmlData: string) {\n // 判断xml的合法性\n xmlData = xmlData.replace(/\\r\\n?/g, '\\n');\n const xmlObj = new XmlNode('!xml');\n let currentNode = xmlObj;\n let textData = '';\n let jPath = '';\n for (let i = 0; i < xmlData.length; i++) {\n const ch = xmlData[i];\n if (ch === '<') {\n if (xmlData[i + 1] === '/') {\n const closeIndex = findClosingIndex(xmlData, '>', i, 'Closing Tag is not closed.');\n const propIndex = jPath.lastIndexOf('.');\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n if (currentNode && currentNode.child && textData) {\n currentNode.child[currentNode.child.length - 1][':@'] &&\n (currentNode.child[currentNode.child.length - 1][':@'].text = textData);\n }\n textData = '';\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n const tagData = readTagExp(xmlData, i, false, '?>');\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, '-->', i + 4, 'Comment is not closed.');\n i = endIndex;\n } else {\n const result = readTagExp(xmlData, i, false);\n let tagName = result.tagName;\n let tagExp = result.tagExp;\n const attrExpPresent = result.attrExpPresent;\n const closeIndex = result.closeIndex;\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? '.' + tagName : tagName;\n }\n if (tagExp.length > 0 && tagExp.lastIndexOf('/') === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === '/') {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n const childNode = new XmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[':@'] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf('.'));\n } else {\n const childNode = new XmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[':@'] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = '';\n i = closeIndex;\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n }\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  import type { IGlobal, ICanvas, IContext2d, IDrawToParams, IGroup, ILayer, ILayerHandlerContribution, IWindow, ILayerHandlerInitParams, ILayerHandlerDrawParams, IDrawContext, LayerMode } from '../../../interface';
2
2
  import type { IBounds } from '@visactor/vutils';
3
3
  export declare class CanvasLayerHandlerContribution implements ILayerHandlerContribution {
4
- readonly global: IGlobal;
5
4
  layer: ILayer;
6
5
  canvas: ICanvas;
7
6
  context: IContext2d;
@@ -9,8 +8,9 @@ export declare class CanvasLayerHandlerContribution implements ILayerHandlerCont
9
8
  main: boolean;
10
9
  window: IWindow;
11
10
  type: LayerMode;
11
+ global: IGlobal;
12
12
  secondaryHandlers: ILayerHandlerContribution[];
13
- constructor(global: IGlobal);
13
+ constructor();
14
14
  setDpr(dpr: number): void;
15
15
  init(layer: ILayer, window: IWindow, params: ILayerHandlerInitParams): void;
16
16
  resize(w: number, h: number): void;