@progress/kendo-angular-layout 16.4.0-develop.2 → 16.4.0-develop.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/package-metadata.mjs +2 -2
- package/esm2020/splitter/splitter.component.mjs +7 -2
- package/esm2020/splitter/splitter.service.mjs +13 -20
- package/fesm2015/progress-kendo-angular-layout.mjs +21 -24
- package/fesm2020/progress-kendo-angular-layout.mjs +21 -24
- package/package.json +8 -8
- package/splitter/splitter.service.d.ts +4 -1
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-layout',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
13
|
-
version: '16.4.0-develop.
|
|
12
|
+
publishDate: 1719994250,
|
|
13
|
+
version: '16.4.0-develop.3',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
15
15
|
};
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
import { Component, ElementRef, EventEmitter, ContentChildren, Host, HostBinding, Inject, Input, Optional, Output, QueryList, ViewChildren, Renderer2 } from '@angular/core';
|
|
6
6
|
import { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
7
7
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
8
|
+
import { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
8
9
|
import { packageMetadata } from '../package-metadata';
|
|
10
|
+
import { isPresent } from '../common/util';
|
|
9
11
|
import { SplitterPaneComponent } from './splitter-pane.component';
|
|
10
12
|
import { SplitterBarComponent } from './splitter-bar.component';
|
|
11
13
|
import { SplitterService } from './splitter.service';
|
|
12
|
-
import { isPresent } from '../common/util';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
import * as i1 from "./splitter.service";
|
|
15
16
|
import * as i2 from "@progress/kendo-angular-l10n";
|
|
@@ -100,6 +101,9 @@ export class SplitterComponent {
|
|
|
100
101
|
if (!isPresent(splitbars) || !isPresent(this.panes)) {
|
|
101
102
|
return;
|
|
102
103
|
}
|
|
104
|
+
if (!isDocumentAvailable()) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
103
107
|
const panesArray = this.panes.toArray();
|
|
104
108
|
const splitBarsArray = splitbars.toArray();
|
|
105
109
|
const components = [...panesArray, ...splitBarsArray]
|
|
@@ -149,7 +153,8 @@ export class SplitterComponent {
|
|
|
149
153
|
else {
|
|
150
154
|
return this.element.nativeElement.clientWidth;
|
|
151
155
|
}
|
|
152
|
-
}
|
|
156
|
+
},
|
|
157
|
+
direction: this.direction
|
|
153
158
|
});
|
|
154
159
|
}
|
|
155
160
|
get direction() {
|
|
@@ -29,7 +29,9 @@ export class SplitterService {
|
|
|
29
29
|
}
|
|
30
30
|
const notCollapsed = this.panes.filter(p => !p.collapsed);
|
|
31
31
|
const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
|
|
32
|
-
notCollapsed
|
|
32
|
+
notCollapsed.filter(p => p.fixedSize).forEach(pane => {
|
|
33
|
+
pane.forceExpand = allHaveFixedSize ? true : false;
|
|
34
|
+
});
|
|
33
35
|
return pane.collapsible;
|
|
34
36
|
}
|
|
35
37
|
togglePane(keyCode, index) {
|
|
@@ -44,8 +46,11 @@ export class SplitterService {
|
|
|
44
46
|
}
|
|
45
47
|
resizePane(keyCode, index) {
|
|
46
48
|
const state = this.dragState(index);
|
|
47
|
-
const direction = keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowUp;
|
|
48
|
-
|
|
49
|
+
const direction = keyCode === Keys.ArrowLeft || keyCode === (this.rtl ? Keys.ArrowDown : Keys.ArrowUp);
|
|
50
|
+
let step = direction ? (-this.resizeStep) : this.resizeStep;
|
|
51
|
+
if (this.rtl) {
|
|
52
|
+
step = -step;
|
|
53
|
+
}
|
|
49
54
|
this.setSize(state, step);
|
|
50
55
|
}
|
|
51
56
|
toggleContentOverlay(index, show) {
|
|
@@ -89,22 +94,9 @@ export class SplitterService {
|
|
|
89
94
|
pane.isResized = true;
|
|
90
95
|
this.emit(pane.sizeChange, size);
|
|
91
96
|
};
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (prev.fixedSize && next.fixedSize) {
|
|
96
|
-
// resizing both panes
|
|
97
|
-
resize(state.prev, delta);
|
|
98
|
-
resize(state.next, -delta);
|
|
99
|
-
}
|
|
100
|
-
else if (next.collapsible || next.fixedSize) {
|
|
101
|
-
// resizing next
|
|
102
|
-
resize(state.next, -delta);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
// resizing prev
|
|
106
|
-
resize(state.prev, delta);
|
|
107
|
-
}
|
|
97
|
+
// resizing both panes
|
|
98
|
+
resize(state.prev, delta);
|
|
99
|
+
resize(state.next, -delta);
|
|
108
100
|
this.emit(this.layoutChange, {});
|
|
109
101
|
}
|
|
110
102
|
isDraggable(splitBarIndex) {
|
|
@@ -130,7 +122,7 @@ export class SplitterService {
|
|
|
130
122
|
}
|
|
131
123
|
return this.panes[index];
|
|
132
124
|
}
|
|
133
|
-
configure({ panes, orientation, containerSize }) {
|
|
125
|
+
configure({ panes, orientation, containerSize, direction }) {
|
|
134
126
|
this.panes = panes;
|
|
135
127
|
this.panes.forEach((pane, index) => {
|
|
136
128
|
pane.order = index * 2;
|
|
@@ -147,6 +139,7 @@ export class SplitterService {
|
|
|
147
139
|
}
|
|
148
140
|
}
|
|
149
141
|
this.containerSize = containerSize;
|
|
142
|
+
this.rtl = direction === 'rtl';
|
|
150
143
|
}
|
|
151
144
|
isPercent(size) {
|
|
152
145
|
return /%$/.test(size);
|
|
@@ -7,7 +7,7 @@ import { Directive, Optional, Injectable, isDevMode, Component, SkipSelf, Host,
|
|
|
7
7
|
import * as i1 from '@progress/kendo-angular-l10n';
|
|
8
8
|
import { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';
|
|
9
9
|
import * as i5 from '@progress/kendo-angular-common';
|
|
10
|
-
import { Keys, shouldShowValidationUI, PreventableEvent as PreventableEvent$1,
|
|
10
|
+
import { Keys, shouldShowValidationUI, isDocumentAvailable, PreventableEvent as PreventableEvent$1, guid, hasObservers, isPresent as isPresent$1, focusableSelector, isChanged, WatermarkModule, EventsModule, DraggableModule, ResizeSensorModule } from '@progress/kendo-angular-common';
|
|
11
11
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
12
12
|
import * as i1$1 from '@angular/animations';
|
|
13
13
|
import { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';
|
|
@@ -33,8 +33,8 @@ const packageMetadata = {
|
|
|
33
33
|
name: '@progress/kendo-angular-layout',
|
|
34
34
|
productName: 'Kendo UI for Angular',
|
|
35
35
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
36
|
-
publishDate:
|
|
37
|
-
version: '16.4.0-develop.
|
|
36
|
+
publishDate: 1719994250,
|
|
37
|
+
version: '16.4.0-develop.3',
|
|
38
38
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
39
39
|
};
|
|
40
40
|
|
|
@@ -1863,7 +1863,9 @@ class SplitterService {
|
|
|
1863
1863
|
}
|
|
1864
1864
|
const notCollapsed = this.panes.filter(p => !p.collapsed);
|
|
1865
1865
|
const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
|
|
1866
|
-
notCollapsed
|
|
1866
|
+
notCollapsed.filter(p => p.fixedSize).forEach(pane => {
|
|
1867
|
+
pane.forceExpand = allHaveFixedSize ? true : false;
|
|
1868
|
+
});
|
|
1867
1869
|
return pane.collapsible;
|
|
1868
1870
|
}
|
|
1869
1871
|
togglePane(keyCode, index) {
|
|
@@ -1878,8 +1880,11 @@ class SplitterService {
|
|
|
1878
1880
|
}
|
|
1879
1881
|
resizePane(keyCode, index) {
|
|
1880
1882
|
const state = this.dragState(index);
|
|
1881
|
-
const direction = keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowUp;
|
|
1882
|
-
|
|
1883
|
+
const direction = keyCode === Keys.ArrowLeft || keyCode === (this.rtl ? Keys.ArrowDown : Keys.ArrowUp);
|
|
1884
|
+
let step = direction ? (-this.resizeStep) : this.resizeStep;
|
|
1885
|
+
if (this.rtl) {
|
|
1886
|
+
step = -step;
|
|
1887
|
+
}
|
|
1883
1888
|
this.setSize(state, step);
|
|
1884
1889
|
}
|
|
1885
1890
|
toggleContentOverlay(index, show) {
|
|
@@ -1923,22 +1928,9 @@ class SplitterService {
|
|
|
1923
1928
|
pane.isResized = true;
|
|
1924
1929
|
this.emit(pane.sizeChange, size);
|
|
1925
1930
|
};
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
if (prev.fixedSize && next.fixedSize) {
|
|
1930
|
-
// resizing both panes
|
|
1931
|
-
resize(state.prev, delta);
|
|
1932
|
-
resize(state.next, -delta);
|
|
1933
|
-
}
|
|
1934
|
-
else if (next.collapsible || next.fixedSize) {
|
|
1935
|
-
// resizing next
|
|
1936
|
-
resize(state.next, -delta);
|
|
1937
|
-
}
|
|
1938
|
-
else {
|
|
1939
|
-
// resizing prev
|
|
1940
|
-
resize(state.prev, delta);
|
|
1941
|
-
}
|
|
1931
|
+
// resizing both panes
|
|
1932
|
+
resize(state.prev, delta);
|
|
1933
|
+
resize(state.next, -delta);
|
|
1942
1934
|
this.emit(this.layoutChange, {});
|
|
1943
1935
|
}
|
|
1944
1936
|
isDraggable(splitBarIndex) {
|
|
@@ -1964,7 +1956,7 @@ class SplitterService {
|
|
|
1964
1956
|
}
|
|
1965
1957
|
return this.panes[index];
|
|
1966
1958
|
}
|
|
1967
|
-
configure({ panes, orientation, containerSize }) {
|
|
1959
|
+
configure({ panes, orientation, containerSize, direction }) {
|
|
1968
1960
|
this.panes = panes;
|
|
1969
1961
|
this.panes.forEach((pane, index) => {
|
|
1970
1962
|
pane.order = index * 2;
|
|
@@ -1981,6 +1973,7 @@ class SplitterService {
|
|
|
1981
1973
|
}
|
|
1982
1974
|
}
|
|
1983
1975
|
this.containerSize = containerSize;
|
|
1976
|
+
this.rtl = direction === 'rtl';
|
|
1984
1977
|
}
|
|
1985
1978
|
isPercent(size) {
|
|
1986
1979
|
return /%$/.test(size);
|
|
@@ -2359,6 +2352,9 @@ class SplitterComponent {
|
|
|
2359
2352
|
if (!isPresent(splitbars) || !isPresent(this.panes)) {
|
|
2360
2353
|
return;
|
|
2361
2354
|
}
|
|
2355
|
+
if (!isDocumentAvailable()) {
|
|
2356
|
+
return;
|
|
2357
|
+
}
|
|
2362
2358
|
const panesArray = this.panes.toArray();
|
|
2363
2359
|
const splitBarsArray = splitbars.toArray();
|
|
2364
2360
|
const components = [...panesArray, ...splitBarsArray]
|
|
@@ -2408,7 +2404,8 @@ class SplitterComponent {
|
|
|
2408
2404
|
else {
|
|
2409
2405
|
return this.element.nativeElement.clientWidth;
|
|
2410
2406
|
}
|
|
2411
|
-
}
|
|
2407
|
+
},
|
|
2408
|
+
direction: this.direction
|
|
2412
2409
|
});
|
|
2413
2410
|
}
|
|
2414
2411
|
get direction() {
|
|
@@ -7,7 +7,7 @@ import { Injectable, Directive, Optional, isDevMode, Component, SkipSelf, Host,
|
|
|
7
7
|
import * as i1 from '@progress/kendo-angular-l10n';
|
|
8
8
|
import { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';
|
|
9
9
|
import * as i5 from '@progress/kendo-angular-common';
|
|
10
|
-
import { Keys, shouldShowValidationUI, PreventableEvent as PreventableEvent$1,
|
|
10
|
+
import { Keys, shouldShowValidationUI, isDocumentAvailable, PreventableEvent as PreventableEvent$1, guid, hasObservers, isPresent as isPresent$1, focusableSelector, isChanged, WatermarkModule, EventsModule, DraggableModule, ResizeSensorModule } from '@progress/kendo-angular-common';
|
|
11
11
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
12
12
|
import * as i1$1 from '@angular/animations';
|
|
13
13
|
import { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';
|
|
@@ -33,8 +33,8 @@ const packageMetadata = {
|
|
|
33
33
|
name: '@progress/kendo-angular-layout',
|
|
34
34
|
productName: 'Kendo UI for Angular',
|
|
35
35
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
36
|
-
publishDate:
|
|
37
|
-
version: '16.4.0-develop.
|
|
36
|
+
publishDate: 1719994250,
|
|
37
|
+
version: '16.4.0-develop.3',
|
|
38
38
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
39
39
|
};
|
|
40
40
|
|
|
@@ -1857,7 +1857,9 @@ class SplitterService {
|
|
|
1857
1857
|
}
|
|
1858
1858
|
const notCollapsed = this.panes.filter(p => !p.collapsed);
|
|
1859
1859
|
const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
|
|
1860
|
-
notCollapsed
|
|
1860
|
+
notCollapsed.filter(p => p.fixedSize).forEach(pane => {
|
|
1861
|
+
pane.forceExpand = allHaveFixedSize ? true : false;
|
|
1862
|
+
});
|
|
1861
1863
|
return pane.collapsible;
|
|
1862
1864
|
}
|
|
1863
1865
|
togglePane(keyCode, index) {
|
|
@@ -1872,8 +1874,11 @@ class SplitterService {
|
|
|
1872
1874
|
}
|
|
1873
1875
|
resizePane(keyCode, index) {
|
|
1874
1876
|
const state = this.dragState(index);
|
|
1875
|
-
const direction = keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowUp;
|
|
1876
|
-
|
|
1877
|
+
const direction = keyCode === Keys.ArrowLeft || keyCode === (this.rtl ? Keys.ArrowDown : Keys.ArrowUp);
|
|
1878
|
+
let step = direction ? (-this.resizeStep) : this.resizeStep;
|
|
1879
|
+
if (this.rtl) {
|
|
1880
|
+
step = -step;
|
|
1881
|
+
}
|
|
1877
1882
|
this.setSize(state, step);
|
|
1878
1883
|
}
|
|
1879
1884
|
toggleContentOverlay(index, show) {
|
|
@@ -1917,22 +1922,9 @@ class SplitterService {
|
|
|
1917
1922
|
pane.isResized = true;
|
|
1918
1923
|
this.emit(pane.sizeChange, size);
|
|
1919
1924
|
};
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
if (prev.fixedSize && next.fixedSize) {
|
|
1924
|
-
// resizing both panes
|
|
1925
|
-
resize(state.prev, delta);
|
|
1926
|
-
resize(state.next, -delta);
|
|
1927
|
-
}
|
|
1928
|
-
else if (next.collapsible || next.fixedSize) {
|
|
1929
|
-
// resizing next
|
|
1930
|
-
resize(state.next, -delta);
|
|
1931
|
-
}
|
|
1932
|
-
else {
|
|
1933
|
-
// resizing prev
|
|
1934
|
-
resize(state.prev, delta);
|
|
1935
|
-
}
|
|
1925
|
+
// resizing both panes
|
|
1926
|
+
resize(state.prev, delta);
|
|
1927
|
+
resize(state.next, -delta);
|
|
1936
1928
|
this.emit(this.layoutChange, {});
|
|
1937
1929
|
}
|
|
1938
1930
|
isDraggable(splitBarIndex) {
|
|
@@ -1958,7 +1950,7 @@ class SplitterService {
|
|
|
1958
1950
|
}
|
|
1959
1951
|
return this.panes[index];
|
|
1960
1952
|
}
|
|
1961
|
-
configure({ panes, orientation, containerSize }) {
|
|
1953
|
+
configure({ panes, orientation, containerSize, direction }) {
|
|
1962
1954
|
this.panes = panes;
|
|
1963
1955
|
this.panes.forEach((pane, index) => {
|
|
1964
1956
|
pane.order = index * 2;
|
|
@@ -1975,6 +1967,7 @@ class SplitterService {
|
|
|
1975
1967
|
}
|
|
1976
1968
|
}
|
|
1977
1969
|
this.containerSize = containerSize;
|
|
1970
|
+
this.rtl = direction === 'rtl';
|
|
1978
1971
|
}
|
|
1979
1972
|
isPercent(size) {
|
|
1980
1973
|
return /%$/.test(size);
|
|
@@ -2351,6 +2344,9 @@ class SplitterComponent {
|
|
|
2351
2344
|
if (!isPresent(splitbars) || !isPresent(this.panes)) {
|
|
2352
2345
|
return;
|
|
2353
2346
|
}
|
|
2347
|
+
if (!isDocumentAvailable()) {
|
|
2348
|
+
return;
|
|
2349
|
+
}
|
|
2354
2350
|
const panesArray = this.panes.toArray();
|
|
2355
2351
|
const splitBarsArray = splitbars.toArray();
|
|
2356
2352
|
const components = [...panesArray, ...splitBarsArray]
|
|
@@ -2400,7 +2396,8 @@ class SplitterComponent {
|
|
|
2400
2396
|
else {
|
|
2401
2397
|
return this.element.nativeElement.clientWidth;
|
|
2402
2398
|
}
|
|
2403
|
-
}
|
|
2399
|
+
},
|
|
2400
|
+
direction: this.direction
|
|
2404
2401
|
});
|
|
2405
2402
|
}
|
|
2406
2403
|
get direction() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-layout",
|
|
3
|
-
"version": "16.4.0-develop.
|
|
3
|
+
"version": "16.4.0-develop.3",
|
|
4
4
|
"description": "Kendo UI for Angular Layout Package - a collection of components to create professional application layoyts",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|
|
@@ -39,17 +39,17 @@
|
|
|
39
39
|
"@angular/core": "15 - 18",
|
|
40
40
|
"@angular/platform-browser": "15 - 18",
|
|
41
41
|
"@progress/kendo-licensing": "^1.0.2",
|
|
42
|
-
"@progress/kendo-angular-common": "16.4.0-develop.
|
|
43
|
-
"@progress/kendo-angular-l10n": "16.4.0-develop.
|
|
44
|
-
"@progress/kendo-angular-progressbar": "16.4.0-develop.
|
|
45
|
-
"@progress/kendo-angular-icons": "16.4.0-develop.
|
|
46
|
-
"@progress/kendo-angular-buttons": "16.4.0-develop.
|
|
47
|
-
"@progress/kendo-angular-intl": "16.4.0-develop.
|
|
42
|
+
"@progress/kendo-angular-common": "16.4.0-develop.3",
|
|
43
|
+
"@progress/kendo-angular-l10n": "16.4.0-develop.3",
|
|
44
|
+
"@progress/kendo-angular-progressbar": "16.4.0-develop.3",
|
|
45
|
+
"@progress/kendo-angular-icons": "16.4.0-develop.3",
|
|
46
|
+
"@progress/kendo-angular-buttons": "16.4.0-develop.3",
|
|
47
|
+
"@progress/kendo-angular-intl": "16.4.0-develop.3",
|
|
48
48
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"tslib": "^2.3.1",
|
|
52
|
-
"@progress/kendo-angular-schematics": "16.4.0-develop.
|
|
52
|
+
"@progress/kendo-angular-schematics": "16.4.0-develop.3",
|
|
53
53
|
"@progress/kendo-draggable": "^3.0.2"
|
|
54
54
|
},
|
|
55
55
|
"schematics": "./schematics/collection.json",
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { EventEmitter, NgZone } from '@angular/core';
|
|
6
6
|
import { Orientation } from '../common/orientation';
|
|
7
7
|
import { SplitterPaneComponent } from './splitter-pane.component';
|
|
8
|
+
import { Direction } from '../common/direction';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
/**
|
|
10
11
|
* @hidden
|
|
@@ -13,6 +14,7 @@ export declare type SplitterParameters = {
|
|
|
13
14
|
containerSize: () => number;
|
|
14
15
|
panes: Array<SplitterPaneComponent>;
|
|
15
16
|
orientation: Orientation;
|
|
17
|
+
direction: Direction;
|
|
16
18
|
};
|
|
17
19
|
/**
|
|
18
20
|
* @hidden
|
|
@@ -49,8 +51,9 @@ export declare class SplitterService {
|
|
|
49
51
|
isDraggable(splitBarIndex: number): boolean;
|
|
50
52
|
isStatic(splitBarIndex: number): boolean;
|
|
51
53
|
pane(index: number): SplitterPaneComponent;
|
|
52
|
-
configure({ panes, orientation, containerSize }: SplitterParameters): void;
|
|
54
|
+
configure({ panes, orientation, containerSize, direction }: SplitterParameters): void;
|
|
53
55
|
private containerSize;
|
|
56
|
+
private rtl;
|
|
54
57
|
private isPercent;
|
|
55
58
|
private toPixels;
|
|
56
59
|
private emit;
|