UNPKG

6.25 kBJavaScriptView Raw
1import { __assign } from "tslib";
2import { Module, injectable, decorate } from 'mana-syringe';
3import { EventEmitter } from 'eventemitter3';
4import { DisplayObjectPool } from './DisplayObjectPool';
5import { CircleUpdater, EllipseUpdater, GeometryAABBUpdater, GeometryUpdaterFactory, LineUpdater, PathUpdater, PolylineUpdater, RectUpdater, TextUpdater, TextService, OffscreenCanvasCreator, DefaultSceneGraphService, DefaultSceneGraphSelector, SceneGraphSelector, SceneGraphSelectorFactory } from './services';
6import { LayoutRegistry, CSSPropertyLocalPosition, CSSPropertyLengthOrPercentage, CSSPropertyAnchor, CSSPropertyClipPath, CSSPropertyColor, CSSPropertyFilter, CSSPropertyLineDash, CSSPropertyOffsetDistance, CSSPropertyOffsetPath, CSSPropertyOpacity, CSSPropertyPath, CSSPropertyPoints, CSSPropertyText, CSSPropertyTextTransform, CSSPropertyTransform, CSSPropertyTransformOrigin, CSSPropertyZIndex, CSSPropertyShadowBlur, DefaultStyleValueRegistry } from './css';
7import { ContextNode, FragmentResult, FragmentResultFactory, FragmentResultOptions, LayoutChildren, LayoutChildrenFactory, LayoutChildrenOptions, LayoutContext, LayoutContextFactory, LayoutContextOptions, LayoutEdges, LayoutEdgesFactory, LayoutEdgesOptions, LayoutEngine, LayoutFragment, LayoutFragmentFactory, LayoutFragmentOptions } from './css/layout';
8export var containerModule = Module(function (register) {
9 decorate(injectable(), EventEmitter); // bind DisplayObject pool
10
11 register(DisplayObjectPool); // bind Selector
12
13 register(DefaultSceneGraphSelector);
14 register({
15 token: SceneGraphSelectorFactory,
16 useFactory: function useFactory(context) {
17 return function () {
18 return context.container.get(SceneGraphSelector);
19 };
20 }
21 }); // bind scenegraph service
22
23 register(DefaultSceneGraphService); // bind text service
24
25 register(OffscreenCanvasCreator);
26 register(TextService); // bind aabb updater
27
28 register(CircleUpdater);
29 register(EllipseUpdater);
30 register(RectUpdater);
31 register(TextUpdater);
32 register(LineUpdater);
33 register(PolylineUpdater);
34 register(PathUpdater);
35 register({
36 token: GeometryUpdaterFactory,
37 useFactory: function useFactory(context) {
38 var cache = {};
39 return function (tagName) {
40 if (!cache[tagName]) {
41 if (context.container.isBoundNamed(GeometryAABBUpdater, tagName)) {
42 cache[tagName] = context.container.getNamed(GeometryAABBUpdater, tagName);
43 }
44 }
45
46 return cache[tagName];
47 };
48 }
49 }); // bind CSS property handlers
50
51 register(LayoutRegistry);
52 register(DefaultStyleValueRegistry);
53 register(CSSPropertyLengthOrPercentage);
54 register(CSSPropertyLocalPosition);
55 register(CSSPropertyOpacity);
56 register(CSSPropertyColor);
57 register(CSSPropertyFilter);
58 register(CSSPropertyLineDash);
59 register(CSSPropertyShadowBlur);
60 register(CSSPropertyOffsetPath);
61 register(CSSPropertyOffsetDistance);
62 register(CSSPropertyAnchor);
63 register(CSSPropertyZIndex);
64 register(CSSPropertyTransform);
65 register(CSSPropertyTransformOrigin);
66 register(CSSPropertyPath);
67 register(CSSPropertyPoints);
68 register(CSSPropertyClipPath);
69 register(CSSPropertyText);
70 register(CSSPropertyTextTransform); // bind layout engine
71
72 register(LayoutEngine);
73 register(LayoutEdges);
74 register({
75 token: LayoutEdgesFactory,
76 useFactory: function useFactory(context) {
77 return function (options) {
78 var container = context.container.createChild();
79 container.register({
80 token: LayoutEdgesOptions,
81 useValue: options
82 });
83 return container.get(LayoutEdges);
84 };
85 }
86 });
87 register({
88 token: LayoutContextFactory,
89 useFactory: function useFactory(context) {
90 return function (options) {
91 var container = context.container.createChild();
92 container.register(LayoutContext);
93 container.register(LayoutChildren);
94 container.register({
95 token: LayoutChildrenFactory,
96 useFactory: function useFactory(childContext) {
97 return function (childOptions) {
98 var childContainer = childContext.container.createChild();
99 childContainer.register({
100 token: LayoutChildrenOptions,
101 useValue: childOptions
102 });
103 return childContainer.get(LayoutChildren);
104 };
105 }
106 });
107 container.register(FragmentResult);
108 container.register({
109 token: FragmentResultFactory,
110 useFactory: function useFactory(childContext) {
111 return function (childOptions, node) {
112 var childContainer = childContext.container.createChild();
113 childContainer.register({
114 token: FragmentResultOptions,
115 useValue: childOptions
116 });
117 childContainer.register({
118 token: ContextNode,
119 useValue: node
120 });
121 return childContainer.get(FragmentResult);
122 };
123 }
124 });
125 container.register(LayoutFragment);
126 container.register({
127 token: LayoutFragmentFactory,
128 useFactory: function useFactory(childContext) {
129 return function (childOptions) {
130 var childContainer = childContext.container.createChild();
131 childContainer.register({
132 token: LayoutFragmentOptions,
133 useValue: childOptions
134 });
135 return childContainer.get(LayoutFragment);
136 };
137 }
138 });
139 var layoutChildrenFactory = container.get(LayoutChildrenFactory);
140 var layoutFragmentFactory = container.get(LayoutFragmentFactory);
141 var fragmentResultFactory = container.get(FragmentResultFactory);
142 container.register({
143 token: LayoutContextOptions,
144 useValue: __assign(__assign({}, options), {
145 layoutChildrenFactory: layoutChildrenFactory,
146 layoutFragmentFactory: layoutFragmentFactory,
147 fragmentResultFactory: fragmentResultFactory
148 })
149 });
150 var layoutContext = container.get(LayoutContext);
151 return layoutContext;
152 };
153 }
154 });
155});
\No newline at end of file