@syncfusion/ej2-inputs 19.4.52 → 20.1.55
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/CHANGELOG.md +0 -16
- package/README.md +15 -2
- package/dist/ej2-inputs.umd.min.js +2 -2
- package/dist/ej2-inputs.umd.min.js.map +1 -1
- package/dist/es6/ej2-inputs.es2015.js +49 -46
- package/dist/es6/ej2-inputs.es2015.js.map +1 -1
- package/dist/es6/ej2-inputs.es5.js +50 -47
- package/dist/es6/ej2-inputs.es5.js.map +1 -1
- package/dist/global/ej2-inputs.min.js +2 -2
- package/dist/global/ej2-inputs.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +9 -9
- package/src/color-picker/color-picker.js +1 -1
- package/src/common/signature-base.d.ts +7 -49
- package/src/common/signature-base.js +21 -33
- package/src/slider/slider.d.ts +1 -0
- package/src/slider/slider.js +5 -2
- package/src/textbox/textbox-model.d.ts +1 -1
- package/src/textbox/textbox.js +8 -1
- package/src/uploader/uploader.js +16 -11
- package/styles/bootstrap-dark.css +10 -12
- package/styles/bootstrap.css +10 -12
- package/styles/bootstrap4.css +9 -14
- package/styles/bootstrap5-dark.css +118 -57
- package/styles/bootstrap5.css +118 -57
- package/styles/color-picker/_bootstrap5-definition.scss +10 -10
- package/styles/color-picker/_fluent-dark-definition.scss +1 -0
- package/styles/color-picker/_fluent-definition.scss +18 -18
- package/styles/color-picker/_layout.scss +33 -5
- package/styles/color-picker/_tailwind-definition.scss +4 -3
- package/styles/color-picker/_theme.scss +1 -1
- package/styles/color-picker/bootstrap5-dark.css +26 -20
- package/styles/color-picker/bootstrap5.css +26 -20
- package/styles/color-picker/fluent-dark.css +902 -0
- package/styles/color-picker/fluent-dark.scss +11 -0
- package/styles/color-picker/fluent.css +902 -0
- package/styles/color-picker/fluent.scss +11 -0
- package/styles/color-picker/icons/_fluent-dark.scss +1 -0
- package/styles/color-picker/icons/_fluent.scss +1 -1
- package/styles/color-picker/icons/_tailwind-dark.scss +3 -2
- package/styles/color-picker/icons/_tailwind.scss +3 -2
- package/styles/color-picker/tailwind-dark.css +10 -6
- package/styles/color-picker/tailwind.css +10 -6
- package/styles/fabric-dark.css +8 -11
- package/styles/fabric.css +8 -11
- package/styles/fluent-dark.css +7366 -0
- package/styles/fluent-dark.scss +8 -0
- package/styles/fluent.css +7366 -0
- package/styles/fluent.scss +8 -0
- package/styles/highcontrast-light.css +8 -11
- package/styles/highcontrast.css +8 -11
- package/styles/input/_bootstrap-dark-definition.scss +1 -0
- package/styles/input/_bootstrap-definition.scss +1 -0
- package/styles/input/_bootstrap4-definition.scss +1 -0
- package/styles/input/_bootstrap5-definition.scss +23 -22
- package/styles/input/_fabric-dark-definition.scss +3 -1
- package/styles/input/_fabric-definition.scss +2 -1
- package/styles/input/_fluent-dark-definition.scss +1 -0
- package/styles/input/_fluent-definition.scss +8 -6
- package/styles/input/_highcontrast-definition.scss +2 -1
- package/styles/input/_highcontrast-light-definition.scss +2 -1
- package/styles/input/_layout.scss +186 -22
- package/styles/input/_material-dark-definition.scss +1 -0
- package/styles/input/_material-definition.scss +2 -1
- package/styles/input/_tailwind-definition.scss +18 -17
- package/styles/input/_theme.scss +9 -2
- package/styles/input/bootstrap-dark.css +8 -8
- package/styles/input/bootstrap.css +8 -8
- package/styles/input/bootstrap4.css +8 -8
- package/styles/input/bootstrap5-dark.css +86 -29
- package/styles/input/bootstrap5.css +86 -29
- package/styles/input/fabric-dark.css +7 -7
- package/styles/input/fabric.css +7 -7
- package/styles/input/fluent-dark.css +4595 -0
- package/styles/input/fluent-dark.scss +4 -0
- package/styles/input/fluent.css +4595 -0
- package/styles/input/fluent.scss +4 -0
- package/styles/input/highcontrast-light.css +7 -7
- package/styles/input/highcontrast.css +7 -7
- package/styles/input/icons/_fluent-dark.scss +1 -0
- package/styles/input/icons/_fluent.scss +2 -2
- package/styles/input/icons/_tailwind.scss +2 -2
- package/styles/input/material-dark.css +90 -7
- package/styles/input/material.css +90 -7
- package/styles/input/tailwind-dark.css +96 -40
- package/styles/input/tailwind.css +96 -40
- package/styles/maskedtextbox/_fluent-dark-definition.scss +1 -0
- package/styles/maskedtextbox/fluent-dark.css +26 -0
- package/styles/maskedtextbox/fluent-dark.scss +4 -0
- package/styles/maskedtextbox/fluent.css +26 -0
- package/styles/maskedtextbox/fluent.scss +4 -0
- package/styles/material-dark.css +91 -11
- package/styles/material.css +91 -11
- package/styles/numerictextbox/_fluent-dark-definition.scss +1 -0
- package/styles/numerictextbox/fluent-dark.css +60 -0
- package/styles/numerictextbox/fluent-dark.scss +5 -0
- package/styles/numerictextbox/fluent.css +60 -0
- package/styles/numerictextbox/fluent.scss +5 -0
- package/styles/numerictextbox/icons/_fluent-dark.scss +1 -0
- package/styles/numerictextbox/icons/_fluent.scss +3 -3
- package/styles/numerictextbox/icons/_tailwind.scss +2 -2
- package/styles/numerictextbox/tailwind-dark.css +2 -2
- package/styles/numerictextbox/tailwind.css +2 -2
- package/styles/signature/_fluent-dark-definition.scss +1 -0
- package/styles/signature/fluent-dark.css +9 -0
- package/styles/signature/fluent-dark.scss +3 -0
- package/styles/signature/fluent.css +9 -0
- package/styles/signature/fluent.scss +3 -0
- package/styles/slider/_fluent-dark-definition.scss +1 -0
- package/styles/slider/_fluent-definition.scss +46 -66
- package/styles/slider/_layout.scss +152 -51
- package/styles/slider/_tailwind-definition.scss +1 -1
- package/styles/slider/_theme.scss +14 -8
- package/styles/slider/bootstrap-dark.css +1 -0
- package/styles/slider/bootstrap.css +1 -0
- package/styles/slider/bootstrap4.css +0 -2
- package/styles/slider/bootstrap5-dark.css +5 -4
- package/styles/slider/bootstrap5.css +5 -4
- package/styles/slider/fluent-dark.css +632 -0
- package/styles/slider/fluent-dark.scss +5 -0
- package/styles/slider/fluent.css +632 -0
- package/styles/slider/fluent.scss +5 -0
- package/styles/slider/tailwind-dark.css +9 -5
- package/styles/slider/tailwind.css +9 -5
- package/styles/tailwind-dark.css +178 -92
- package/styles/tailwind.css +178 -92
- package/styles/textbox/_fluent-dark-definition.scss +1 -0
- package/styles/textbox/fluent-dark.css +0 -0
- package/styles/textbox/fluent-dark.scss +4 -0
- package/styles/textbox/fluent.css +0 -0
- package/styles/textbox/fluent.scss +4 -0
- package/styles/uploader/_fluent-dark-definition.scss +1 -0
- package/styles/uploader/_layout.scss +11 -0
- package/styles/uploader/_tailwind-definition.scss +29 -14
- package/styles/uploader/_theme.scss +25 -2
- package/styles/uploader/bootstrap-dark.css +1 -4
- package/styles/uploader/bootstrap.css +1 -4
- package/styles/uploader/bootstrap4.css +1 -4
- package/styles/uploader/bootstrap5-dark.css +1 -4
- package/styles/uploader/bootstrap5.css +1 -4
- package/styles/uploader/fabric-dark.css +1 -4
- package/styles/uploader/fabric.css +1 -4
- package/styles/uploader/fluent-dark.css +1137 -0
- package/styles/uploader/fluent-dark.scss +6 -0
- package/styles/uploader/fluent.css +1137 -0
- package/styles/uploader/fluent.scss +6 -0
- package/styles/uploader/highcontrast-light.css +1 -4
- package/styles/uploader/highcontrast.css +1 -4
- package/styles/uploader/icons/_fluent-dark.scss +1 -0
- package/styles/uploader/icons/_fluent.scss +7 -7
- package/styles/uploader/icons/_tailwind.scss +7 -8
- package/styles/uploader/material-dark.css +1 -4
- package/styles/uploader/material.css +1 -4
- package/styles/uploader/tailwind-dark.css +61 -39
- package/styles/uploader/tailwind.css +61 -39
|
@@ -4173,6 +4173,7 @@ let Slider = class Slider extends Component {
|
|
|
4173
4173
|
this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';
|
|
4174
4174
|
this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';
|
|
4175
4175
|
this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';
|
|
4176
|
+
this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';
|
|
4176
4177
|
this.isMaterialTooltip = this.isMaterial && this.type !== 'Range' && this.tooltip.isVisible;
|
|
4177
4178
|
}
|
|
4178
4179
|
createRangeBar() {
|
|
@@ -4320,7 +4321,9 @@ let Slider = class Slider extends Component {
|
|
|
4320
4321
|
transitionEnd(e) {
|
|
4321
4322
|
if (e.propertyName !== 'transform') {
|
|
4322
4323
|
this.handleStart();
|
|
4323
|
-
this.
|
|
4324
|
+
if (!this.enableAnimation) {
|
|
4325
|
+
this.getHandle().style.transition = 'none';
|
|
4326
|
+
}
|
|
4324
4327
|
if (this.type !== 'Default') {
|
|
4325
4328
|
this.rangeBar.style.transition = 'none';
|
|
4326
4329
|
}
|
|
@@ -4661,7 +4664,7 @@ let Slider = class Slider extends Component {
|
|
|
4661
4664
|
}
|
|
4662
4665
|
renderTooltip() {
|
|
4663
4666
|
this.tooltipObj = new Tooltip({
|
|
4664
|
-
showTipPointer: this.isBootstrap || this.isMaterial || this.isBootstrap4 || this.isTailwind || this.isBootstrap5,
|
|
4667
|
+
showTipPointer: this.isBootstrap || this.isMaterial || this.isBootstrap4 || this.isTailwind || this.isBootstrap5 || this.isFluent,
|
|
4665
4668
|
cssClass: classNames.sliderTooltip,
|
|
4666
4669
|
height: this.isMaterial ? 30 : 'auto',
|
|
4667
4670
|
animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },
|
|
@@ -9008,15 +9011,17 @@ let Uploader = class Uploader extends Component {
|
|
|
9008
9011
|
fileList.classList.add(INVALID_FILE);
|
|
9009
9012
|
}
|
|
9010
9013
|
createFormInput(fileData) {
|
|
9011
|
-
|
|
9012
|
-
|
|
9013
|
-
|
|
9014
|
-
listItem
|
|
9015
|
-
|
|
9016
|
-
|
|
9017
|
-
|
|
9018
|
-
|
|
9019
|
-
this.
|
|
9014
|
+
if (this.browserName !== 'safari') {
|
|
9015
|
+
const inputElement = this.element.cloneNode(true);
|
|
9016
|
+
inputElement.classList.add(HIDDEN_INPUT);
|
|
9017
|
+
for (const listItem of fileData) {
|
|
9018
|
+
listItem.input = inputElement;
|
|
9019
|
+
}
|
|
9020
|
+
inputElement.setAttribute('name', this.uploaderName);
|
|
9021
|
+
this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);
|
|
9022
|
+
if (this.browserName !== 'msie' && this.browserName !== 'edge') {
|
|
9023
|
+
this.element.value = '';
|
|
9024
|
+
}
|
|
9020
9025
|
}
|
|
9021
9026
|
}
|
|
9022
9027
|
getFileSize(fileData) {
|
|
@@ -9403,7 +9408,7 @@ let Uploader = class Uploader extends Component {
|
|
|
9403
9408
|
}
|
|
9404
9409
|
removecanceledFile(e, file) {
|
|
9405
9410
|
const liElement = this.getLiElement(file);
|
|
9406
|
-
if (liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {
|
|
9411
|
+
if (isNullOrUndefined(liElement) || liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {
|
|
9407
9412
|
return;
|
|
9408
9413
|
}
|
|
9409
9414
|
this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');
|
|
@@ -9636,6 +9641,9 @@ let Uploader = class Uploader extends Component {
|
|
|
9636
9641
|
if (selectAll(uploadTemplate, document).length) {
|
|
9637
9642
|
return compile(select(uploadTemplate, document).innerHTML.trim());
|
|
9638
9643
|
}
|
|
9644
|
+
else {
|
|
9645
|
+
return compile(uploadTemplate);
|
|
9646
|
+
}
|
|
9639
9647
|
}
|
|
9640
9648
|
catch (exception) {
|
|
9641
9649
|
return compile(uploadTemplate);
|
|
@@ -11170,7 +11178,7 @@ let ColorPicker = class ColorPicker extends Component {
|
|
|
11170
11178
|
}
|
|
11171
11179
|
roundedColor = this.roundValue(colors[i]).toLowerCase();
|
|
11172
11180
|
tile = this.createElement('span', {
|
|
11173
|
-
className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false' }
|
|
11181
|
+
className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false', 'tabindex': '0' }
|
|
11174
11182
|
});
|
|
11175
11183
|
this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });
|
|
11176
11184
|
row.appendChild(tile);
|
|
@@ -12894,6 +12902,9 @@ let TextBox = class TextBox extends Component {
|
|
|
12894
12902
|
}
|
|
12895
12903
|
this.updateHTMLAttrToElement();
|
|
12896
12904
|
this.checkAttributes(false);
|
|
12905
|
+
if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {
|
|
12906
|
+
this.setProperties({ value: this.element.value }, true);
|
|
12907
|
+
}
|
|
12897
12908
|
if (this.element.tagName !== 'TEXTAREA') {
|
|
12898
12909
|
this.element.setAttribute('type', this.type);
|
|
12899
12910
|
}
|
|
@@ -13188,6 +13199,10 @@ let TextBox = class TextBox extends Component {
|
|
|
13188
13199
|
this.preventChange = false;
|
|
13189
13200
|
this.trigger('change', eventArgs);
|
|
13190
13201
|
this.previousValue = this.value;
|
|
13202
|
+
//EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present
|
|
13203
|
+
if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {
|
|
13204
|
+
this.element.value = this.respectiveElement.value;
|
|
13205
|
+
}
|
|
13191
13206
|
}
|
|
13192
13207
|
bindClearEvent() {
|
|
13193
13208
|
if (this.showClearButton && this.respectiveElement.tagName !== 'TEXTAREA') {
|
|
@@ -13442,53 +13457,36 @@ class SignatureBase extends Component {
|
|
|
13442
13457
|
this.backgroundLoaded = null;
|
|
13443
13458
|
this.clearArray = [];
|
|
13444
13459
|
this.isBlazor = false;
|
|
13460
|
+
this.isResponsive = false;
|
|
13445
13461
|
}
|
|
13446
13462
|
/**
|
|
13447
13463
|
* To Initialize the component rendering
|
|
13448
13464
|
*
|
|
13449
13465
|
* @private
|
|
13450
13466
|
* @param {HTMLCanvasElement} element - Specifies the canvas element.
|
|
13451
|
-
* @param {parameter} parameter - Specifies only for the blazor parameter.
|
|
13452
13467
|
* @param {BlazorDotnetObject} dotnetRef - Specifies for blazor client to server communication.
|
|
13453
13468
|
* @returns {void}
|
|
13454
13469
|
*/
|
|
13455
|
-
initialize(element,
|
|
13470
|
+
initialize(element, dotnetRef) {
|
|
13456
13471
|
this.element = element;
|
|
13457
13472
|
this.canvasContext = this.element.getContext('2d');
|
|
13458
13473
|
this.canvasContext.canvas.tabIndex = 0;
|
|
13459
|
-
if (
|
|
13460
|
-
this.setBlazorParameter(parameter);
|
|
13474
|
+
if (dotnetRef) {
|
|
13461
13475
|
this.dotnetRef = dotnetRef;
|
|
13476
|
+
this.isBlazor = true;
|
|
13477
|
+
if (this.signatureValue) {
|
|
13478
|
+
this.loadPersistedSignature();
|
|
13479
|
+
}
|
|
13462
13480
|
}
|
|
13463
13481
|
this.setHTMLProperties();
|
|
13464
13482
|
if (isNullOrUndefined(this.signatureValue)) {
|
|
13465
13483
|
this.updateSnapCollection(true);
|
|
13466
13484
|
}
|
|
13467
13485
|
this.wireEvents();
|
|
13468
|
-
this.isSignatureEmpty = true;
|
|
13469
13486
|
if (!this.isBlazor) {
|
|
13470
13487
|
this.trigger('created', null);
|
|
13471
13488
|
}
|
|
13472
13489
|
}
|
|
13473
|
-
setBlazorParameter(parameter) {
|
|
13474
|
-
this.isBlazor = true;
|
|
13475
|
-
this.backgroundColor = parameter.backgroundColor;
|
|
13476
|
-
this.backgroundImage = parameter.backgroundImage;
|
|
13477
|
-
this.disabled = parameter.disabled;
|
|
13478
|
-
this.isReadOnly = parameter.isReadOnly;
|
|
13479
|
-
this.maxStrokeWidth = parameter.maxStrokeWidth || 2;
|
|
13480
|
-
this.minStrokeWidth = parameter.minStrokeWidth || 0.5;
|
|
13481
|
-
this.velocity = parameter.velocity || 0.7;
|
|
13482
|
-
this.strokeColor = parameter.strokeColor || '#000000';
|
|
13483
|
-
this.saveWithBackground = parameter.saveWithBackground;
|
|
13484
|
-
this.interval = 30;
|
|
13485
|
-
this.previous = 0;
|
|
13486
|
-
this.minDistance = 5;
|
|
13487
|
-
this.signatureValue = parameter.signatureValue;
|
|
13488
|
-
if (this.signatureValue) {
|
|
13489
|
-
this.loadPersistedSignature();
|
|
13490
|
-
}
|
|
13491
|
-
}
|
|
13492
13490
|
wireEvents() {
|
|
13493
13491
|
if (isNullOrUndefined(this.pointColl) && !this.isReadOnly && !this.disabled) {
|
|
13494
13492
|
EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);
|
|
@@ -13509,24 +13507,21 @@ class SignatureBase extends Component {
|
|
|
13509
13507
|
}
|
|
13510
13508
|
else {
|
|
13511
13509
|
EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);
|
|
13512
|
-
EventHandler.remove(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler);
|
|
13513
|
-
EventHandler.remove(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler);
|
|
13514
|
-
EventHandler.remove(document, 'mouseup', this.mouseUpHandler);
|
|
13515
13510
|
EventHandler.remove(this.canvasContext.canvas, 'keydown', this.keyboardHandler);
|
|
13516
13511
|
window.removeEventListener('resize', this.resizeHandler);
|
|
13517
13512
|
}
|
|
13518
13513
|
}
|
|
13519
13514
|
setHTMLProperties() {
|
|
13520
|
-
if (this.element.height === 150) {
|
|
13515
|
+
if (this.element.height === 150 && this.element.width === 300) {
|
|
13521
13516
|
this.element.height = this.element.offsetHeight;
|
|
13522
|
-
}
|
|
13523
|
-
if (this.element.width === 300) {
|
|
13524
13517
|
this.element.width = this.element.offsetWidth;
|
|
13518
|
+
this.isResponsive = true;
|
|
13525
13519
|
}
|
|
13526
13520
|
this.canvasContext.scale(1, 1);
|
|
13527
13521
|
this.canvasContext.fillStyle = this.strokeColor;
|
|
13528
13522
|
if (this.backgroundImage) {
|
|
13529
13523
|
this.canvasContext.canvas.style.backgroundImage = 'url(' + this.backgroundImage + ')';
|
|
13524
|
+
this.canvasContext.canvas.style.backgroundRepeat = "no-repeat";
|
|
13530
13525
|
}
|
|
13531
13526
|
else if (this.backgroundColor) {
|
|
13532
13527
|
this.canvasContext.canvas.style.backgroundColor = this.backgroundColor;
|
|
@@ -13604,9 +13599,11 @@ class SignatureBase extends Component {
|
|
|
13604
13599
|
resizeHandler() {
|
|
13605
13600
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
13606
13601
|
const proxy = this;
|
|
13607
|
-
this.
|
|
13608
|
-
|
|
13609
|
-
|
|
13602
|
+
if (this.isResponsive) {
|
|
13603
|
+
this.canvasContext.canvas.width = this.element.offsetWidth;
|
|
13604
|
+
this.canvasContext.canvas.height = this.element.offsetHeight;
|
|
13605
|
+
this.canvasContext.scale(1, 1);
|
|
13606
|
+
}
|
|
13610
13607
|
const restoreImg = new Image();
|
|
13611
13608
|
restoreImg.src = this.snapColl[this.incStep];
|
|
13612
13609
|
restoreImg.onload = () => {
|
|
@@ -14094,6 +14091,9 @@ class SignatureBase extends Component {
|
|
|
14094
14091
|
const proxy = this;
|
|
14095
14092
|
const bitmapImage = new Image();
|
|
14096
14093
|
bitmapImage.src = signature;
|
|
14094
|
+
if (signature.slice(0, 4) !== 'data') {
|
|
14095
|
+
bitmapImage.crossOrigin = 'anonymous';
|
|
14096
|
+
}
|
|
14097
14097
|
bitmapImage.onload = () => {
|
|
14098
14098
|
Promise.all([
|
|
14099
14099
|
createImageBitmap(bitmapImage, 0, 0, width, height)
|
|
@@ -14102,6 +14102,9 @@ class SignatureBase extends Component {
|
|
|
14102
14102
|
tempCanvas.width = width;
|
|
14103
14103
|
tempCanvas.height = height;
|
|
14104
14104
|
tempCanvas.getContext('2d').drawImage(results[0], 0, 0);
|
|
14105
|
+
if (signature.slice(0, 4) !== 'data') {
|
|
14106
|
+
proxy.canvasContext.globalCompositeOperation = 'source-over';
|
|
14107
|
+
}
|
|
14105
14108
|
proxy.canvasContext.drawImage(tempCanvas, 0, 0, width, height, 0, 0, proxy.element.width, proxy.element.height);
|
|
14106
14109
|
proxy.updateSnapCollection();
|
|
14107
14110
|
});
|