survey-creator-core 1.9.120 → 1.9.122

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 (87) hide show
  1. package/README.md +5 -1
  2. package/fonts.fontless.css +1 -1
  3. package/fonts.fontless.min.css +1 -1
  4. package/i18n/arabic.js +1 -1
  5. package/i18n/arabic.min.js +1 -1
  6. package/i18n/bulgarian.js +1 -1
  7. package/i18n/bulgarian.min.js +1 -1
  8. package/i18n/croatian.js +1 -1
  9. package/i18n/croatian.min.js +1 -1
  10. package/i18n/czech.js +1 -1
  11. package/i18n/czech.min.js +1 -1
  12. package/i18n/danish.js +1 -1
  13. package/i18n/danish.min.js +1 -1
  14. package/i18n/dutch.js +1 -1
  15. package/i18n/dutch.min.js +1 -1
  16. package/i18n/english.js +2 -1
  17. package/i18n/english.js.map +1 -1
  18. package/i18n/english.min.js +2 -2
  19. package/i18n/finnish.js +1 -1
  20. package/i18n/finnish.min.js +1 -1
  21. package/i18n/french.js +1 -1
  22. package/i18n/french.min.js +1 -1
  23. package/i18n/german.js +1 -1
  24. package/i18n/german.min.js +1 -1
  25. package/i18n/hungarian.js +1 -1
  26. package/i18n/hungarian.min.js +1 -1
  27. package/i18n/index.js +1 -1
  28. package/i18n/index.min.js +1 -1
  29. package/i18n/indonesian.js +1 -1
  30. package/i18n/indonesian.min.js +1 -1
  31. package/i18n/italian.js +1 -1
  32. package/i18n/italian.min.js +1 -1
  33. package/i18n/japanese.js +1 -1
  34. package/i18n/japanese.min.js +1 -1
  35. package/i18n/korean.js +1 -1
  36. package/i18n/korean.min.js +1 -1
  37. package/i18n/malay.js +1 -1
  38. package/i18n/malay.min.js +1 -1
  39. package/i18n/mongolian.js +1 -1
  40. package/i18n/mongolian.min.js +1 -1
  41. package/i18n/norwegian.js +1 -1
  42. package/i18n/norwegian.min.js +1 -1
  43. package/i18n/persian.js +1 -1
  44. package/i18n/persian.min.js +1 -1
  45. package/i18n/polish.js +1 -1
  46. package/i18n/polish.min.js +1 -1
  47. package/i18n/portuguese.js +1 -1
  48. package/i18n/portuguese.min.js +1 -1
  49. package/i18n/russian.js +1 -1
  50. package/i18n/russian.min.js +1 -1
  51. package/i18n/simplified-chinese.js +1 -1
  52. package/i18n/simplified-chinese.min.js +1 -1
  53. package/i18n/slovak.js +1 -1
  54. package/i18n/slovak.min.js +1 -1
  55. package/i18n/spanish.js +1 -1
  56. package/i18n/spanish.min.js +1 -1
  57. package/i18n/swedish.js +1 -1
  58. package/i18n/swedish.min.js +1 -1
  59. package/i18n/tajik.js +1 -1
  60. package/i18n/tajik.min.js +1 -1
  61. package/i18n/traditional-chinese.js +1 -1
  62. package/i18n/traditional-chinese.min.js +1 -1
  63. package/i18n/turkish.js +1 -1
  64. package/i18n/turkish.min.js +1 -1
  65. package/package.json +2 -2
  66. package/survey-creator-core.css +23 -5
  67. package/survey-creator-core.fontless.css +22 -4
  68. package/survey-creator-core.fontless.css.map +1 -1
  69. package/survey-creator-core.fontless.min.css +8 -8
  70. package/survey-creator-core.i18n.js +1 -1
  71. package/survey-creator-core.i18n.min.js +1 -1
  72. package/survey-creator-core.js +299 -178
  73. package/survey-creator-core.js.map +1 -1
  74. package/survey-creator-core.min.css +9 -9
  75. package/survey-creator-core.min.js +5 -5
  76. package/typings/components/action-container-view-model.d.ts +2 -2
  77. package/typings/components/page-navigator/page-navigator.d.ts +3 -0
  78. package/typings/components/question-rating.d.ts +1 -0
  79. package/typings/components/question.d.ts +1 -0
  80. package/typings/components/tabs/theme-builder.d.ts +4 -0
  81. package/typings/components/tabs/theme-plugin.d.ts +2 -1
  82. package/typings/components/tabs/themes.d.ts +0 -2
  83. package/typings/custom-questions/question-color.d.ts +1 -0
  84. package/typings/editorLocalization.d.ts +1 -0
  85. package/typings/localization/english.d.ts +1 -0
  86. package/typings/property-grid/matrices.d.ts +1 -2
  87. package/typings/survey-elements.d.ts +2 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * SurveyJS Creator v1.9.120
2
+ * SurveyJS Creator v1.9.122
3
3
  * (c) 2015-2023 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * Github: https://github.com/surveyjs/survey-creator
5
5
  * License: https://surveyjs.io/Licenses#SurveyCreator
@@ -130,7 +130,7 @@ License: MIT
130
130
  /***/ (function(module, exports, __webpack_require__) {
131
131
 
132
132
  /*!
133
- * surveyjs - Survey JavaScript library v1.9.120
133
+ * surveyjs - Survey JavaScript library v1.9.122
134
134
  * Copyright (c) 2015-2023 Devsoft Baltic OÜ - http://surveyjs.io/
135
135
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
136
136
  */
@@ -4549,20 +4549,37 @@ var SurveyElementActionContainer = /** @class */ (function (_super) {
4549
4549
  function SurveyElementActionContainer() {
4550
4550
  return _super !== null && _super.apply(this, arguments) || this;
4551
4551
  }
4552
- SurveyElementActionContainer.prototype.setModeForActions = function (modes, defaultMode) {
4553
- this.visibleActions.forEach(function (action) {
4554
- action.mode = modes[action.id] || defaultMode;
4555
- });
4552
+ SurveyElementActionContainer.prototype.needToShrink = function (item, shrinkStart, shrinkEnd) {
4553
+ return (item.innerItem.location == "start" && shrinkStart || item.innerItem.location != "start" && shrinkEnd);
4556
4554
  };
4557
- SurveyElementActionContainer.prototype.skipInputType = function (item, dimension) {
4558
- return item.id != "convertInputType" ? dimension : 0;
4555
+ SurveyElementActionContainer.prototype.setModeForActions = function (shrinkStart, shrinkEnd, exclude) {
4556
+ var _this = this;
4557
+ if (exclude === void 0) { exclude = []; }
4558
+ this.visibleActions.forEach(function (item) {
4559
+ if (exclude.indexOf(item.id) != -1) {
4560
+ item.mode = "removed";
4561
+ return;
4562
+ }
4563
+ if (_this.needToShrink(item, shrinkStart, shrinkEnd)) {
4564
+ item.mode = item.innerItem.iconName ? "small" : "removed";
4565
+ return;
4566
+ }
4567
+ item.mode = "large";
4568
+ });
4559
4569
  };
4560
- SurveyElementActionContainer.prototype.skipQuestionType = function (item, dimension) {
4561
- return item.id != "convertInputType" && item.id != "convertTo" ? dimension : 0;
4570
+ SurveyElementActionContainer.prototype.calcItemSize = function (item, shrinkStart, shrinkEnd, exclude) {
4571
+ if (exclude === void 0) { exclude = []; }
4572
+ if (exclude.indexOf(item.id) != -1)
4573
+ return 0;
4574
+ if (this.needToShrink(item, shrinkStart, shrinkEnd)) {
4575
+ if (!item.innerItem.iconName)
4576
+ return 0;
4577
+ return item.minDimension;
4578
+ }
4579
+ return item.maxDimension;
4562
4580
  };
4563
4581
  SurveyElementActionContainer.prototype.fit = function (dimension, dotsItemSize) {
4564
4582
  var _this = this;
4565
- var _a;
4566
4583
  if (dimension <= 0)
4567
4584
  return;
4568
4585
  this.dotsItem.visible = false;
@@ -4571,19 +4588,33 @@ var SurveyElementActionContainer = /** @class */ (function (_super) {
4571
4588
  items.forEach(function (i) { return i.mode = "large"; });
4572
4589
  return;
4573
4590
  }
4574
- if (dimension >= items.reduce(function (sum, i) { return sum += _this.skipInputType(i, i.maxDimension); }, 0)) {
4575
- this.setModeForActions({ "convertInputType": "removed" }, "large");
4591
+ // if (dimension >= items.reduce((sum, i) => sum += this.skipInputType(i, i.maxDimension), 0)) {
4592
+ // this.setModeForActions({ "convertInputType": "removed" }, "large");
4593
+ // return;
4594
+ // }
4595
+ if (dimension >= items.reduce(function (sum, i) { return sum += _this.calcItemSize(i, false, true); }, 0)) {
4596
+ this.setModeForActions(false, true);
4576
4597
  return;
4577
4598
  }
4578
- if (dimension >= items.reduce(function (sum, i) { return sum += _this.skipQuestionType(i, i.minDimension); }, (_a = this.getActionById("convertTo")) === null || _a === void 0 ? void 0 : _a.maxDimension)) {
4579
- this.setModeForActions({ "convertInputType": "removed", "convertTo": "large" }, "small");
4599
+ if (dimension >= items.reduce(function (sum, i) { return sum += _this.calcItemSize(i, false, true, ["convertInputType"]); }, 0)) {
4600
+ this.setModeForActions(false, true, ["convertInputType"]);
4580
4601
  return;
4581
4602
  }
4582
- if (dimension >= items.reduce(function (sum, i) { return sum += _this.skipInputType(i, i.minDimension); }, 0)) {
4583
- this.setModeForActions({ "convertInputType": "removed", "convertTo": "small" }, "small");
4603
+ if (dimension >= items.reduce(function (sum, i) { return sum += _this.calcItemSize(i, true, true); }, 0)) {
4604
+ this.setModeForActions(true, true);
4584
4605
  return;
4585
4606
  }
4586
- this.setModeForActions({ "convertInputType": "removed", "convertTo": "small" }, "popup");
4607
+ this.visibleActions.forEach(function (item) {
4608
+ if (item.id == "convertTo") {
4609
+ item.mode = "small";
4610
+ return;
4611
+ }
4612
+ if (item.id == "convertInputType") {
4613
+ item.mode = "removed";
4614
+ return;
4615
+ }
4616
+ item.mode = "popup";
4617
+ });
4587
4618
  this.dotsItem.visible = true;
4588
4619
  this.hiddenItemsListModel.setItems(items.filter(function (i) { return i.mode == "popup"; }).map(function (i) { return i.innerItem; }));
4589
4620
  };
@@ -5010,8 +5041,10 @@ var ImageItemValueWrapperViewModel = /** @class */ (function (_super) {
5010
5041
  var fileInput = model.itemsRoot.getElementsByClassName("svc-choose-file-input")[0];
5011
5042
  model.creator.chooseFiles(fileInput, function (files) {
5012
5043
  model.isUploading = true;
5013
- model.creator.uploadFiles(files, model.question, function (_, link) {
5014
- model.item.imageLink = link;
5044
+ model.creator.uploadFiles(files, model.question, function (status, link) {
5045
+ if (status === "success") {
5046
+ model.item.imageLink = link;
5047
+ }
5015
5048
  model.isUploading = false;
5016
5049
  });
5017
5050
  }, { element: model.question, item: model.item });
@@ -5019,10 +5052,12 @@ var ImageItemValueWrapperViewModel = /** @class */ (function (_super) {
5019
5052
  ImageItemValueWrapperViewModel.prototype.uploadFiles = function (files) {
5020
5053
  var _this = this;
5021
5054
  this.isUploading = true;
5022
- this.creator.uploadFiles(files, this.question, function (_, link) {
5023
- _this.creator.createNewItemValue(_this.question, _this.isChoosingNewFile, function (res) {
5024
- res.imageLink = link;
5025
- });
5055
+ this.creator.uploadFiles(files, this.question, function (status, link) {
5056
+ if (status === "success") {
5057
+ _this.creator.createNewItemValue(_this.question, _this.isChoosingNewFile, function (res) {
5058
+ res.imageLink = link;
5059
+ });
5060
+ }
5026
5061
  _this.isChoosingNewFile = false;
5027
5062
  _this.isUploading = false;
5028
5063
  });
@@ -5851,7 +5886,7 @@ var PageNavigatorViewModel = /** @class */ (function (_super) {
5851
5886
  PageNavigatorViewModel.prototype.setItems = function (items) {
5852
5887
  this.items = items;
5853
5888
  this.pageListModel.setItems(items);
5854
- this.visible = items.length > 1 || this.pageEditMode === "bypage";
5889
+ this.updateVisibility();
5855
5890
  };
5856
5891
  PageNavigatorViewModel.prototype.buildItems = function () {
5857
5892
  this.currentPage = this.pagesController.currentPage || this.pagesController.pages[0];
@@ -6002,6 +6037,7 @@ var PageNavigatorViewModel = /** @class */ (function (_super) {
6002
6037
  this._resizeObserver.observe(itemsContainer);
6003
6038
  };
6004
6039
  PageNavigatorViewModel.prototype.updateVisibleItems = function (allAvailableHeight) {
6040
+ this.updateVisibility();
6005
6041
  var itemsAvailableHeight = allAvailableHeight - PageNavigatorViewModel.PAGE_NAVIGATION_MENU_ITEM_HEIGHT;
6006
6042
  this.visibleItemsCount = Math.floor(itemsAvailableHeight / PageNavigatorViewModel.PAGE_NAVIGATION_ITEM_HEIGHT);
6007
6043
  var currantPageIndex = this.pagesController.pages.indexOf(this.currentPage);
@@ -6011,6 +6047,17 @@ var PageNavigatorViewModel = /** @class */ (function (_super) {
6011
6047
  }
6012
6048
  this.visibleItemsStartIndex = visibleStart;
6013
6049
  };
6050
+ PageNavigatorViewModel.prototype._updateVisibility = function () {
6051
+ this.hasScrolling = !this._scrollableContainer || (this._scrollableContainer.scrollHeight > this._scrollableContainer.clientHeight);
6052
+ this.visible = this.items.length > 1 && (this.hasScrolling || this.pagesController.creator["pageEditMode"] === "bypage");
6053
+ };
6054
+ PageNavigatorViewModel.prototype.updateVisibility = function () {
6055
+ var _this = this;
6056
+ // this._updateVisibility();
6057
+ setTimeout(function () {
6058
+ _this._updateVisibility();
6059
+ }, 10);
6060
+ };
6014
6061
  Object.defineProperty(PageNavigatorViewModel.prototype, "visibleItems", {
6015
6062
  get: function () {
6016
6063
  if (this.items.length <= this.visibleItemsCount) {
@@ -6023,6 +6070,9 @@ var PageNavigatorViewModel = /** @class */ (function (_super) {
6023
6070
  });
6024
6071
  PageNavigatorViewModel.PAGE_NAVIGATION_MENU_ITEM_HEIGHT = 44;
6025
6072
  PageNavigatorViewModel.PAGE_NAVIGATION_ITEM_HEIGHT = 36;
6073
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6074
+ Object(survey_core__WEBPACK_IMPORTED_MODULE_1__["property"])({ defaultValue: true })
6075
+ ], PageNavigatorViewModel.prototype, "hasScrolling", void 0);
6026
6076
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6027
6077
  Object(survey_core__WEBPACK_IMPORTED_MODULE_1__["propertyArray"])()
6028
6078
  ], PageNavigatorViewModel.prototype, "items", void 0);
@@ -6786,6 +6836,16 @@ var QuestionRatingAdornerViewModel = /** @class */ (function (_super) {
6786
6836
  enumerable: false,
6787
6837
  configurable: true
6788
6838
  });
6839
+ Object.defineProperty(QuestionRatingAdornerViewModel.prototype, "controlsClassNames", {
6840
+ get: function () {
6841
+ return new survey_core__WEBPACK_IMPORTED_MODULE_1__["CssClassBuilder"]()
6842
+ .append("svc-rating-question-controls")
6843
+ .append("svc-item-value-controls")
6844
+ .append("svc-rating-question-controls--labels-top", this.element.rateDescriptionLocation == "top" || this.element.rateDescriptionLocation == "topBottom").toString();
6845
+ },
6846
+ enumerable: false,
6847
+ configurable: true
6848
+ });
6789
6849
  Object.defineProperty(QuestionRatingAdornerViewModel.prototype, "addTooltip", {
6790
6850
  get: function () {
6791
6851
  return Object(_editorLocalization__WEBPACK_IMPORTED_MODULE_2__["getLocString"])("pe.addItem");
@@ -7009,6 +7069,19 @@ var QuestionAdornerViewModel = /** @class */ (function (_super) {
7009
7069
  //this.updateActionsProperties();
7010
7070
  Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__["toggleHovered"])(event, element);
7011
7071
  };
7072
+ QuestionAdornerViewModel.prototype.updateActionsProperties = function () {
7073
+ if (this.isDisposed)
7074
+ return;
7075
+ _super.prototype.updateActionsProperties.call(this);
7076
+ var actions = this.actionContainer.visibleActions;
7077
+ var switchToStartLocation = false;
7078
+ for (var i = actions.length - 1; i >= 0; i--) {
7079
+ if (actions[i].id === "convertTo")
7080
+ switchToStartLocation = true;
7081
+ if (!actions[i].innerItem.location)
7082
+ actions[i].innerItem.location = switchToStartLocation ? "start" : "end";
7083
+ }
7084
+ };
7012
7085
  QuestionAdornerViewModel.prototype.updateElementAllowOptions = function (options, operationsAllow) {
7013
7086
  _super.prototype.updateElementAllowOptions.call(this, options, operationsAllow);
7014
7087
  this.updateActionVisibility("convertTo", operationsAllow && options.allowChangeType);
@@ -7155,12 +7228,13 @@ var QuestionAdornerViewModel = /** @class */ (function (_super) {
7155
7228
  var newAction = Object(survey_core__WEBPACK_IMPORTED_MODULE_1__["createDropdownActionModel"])({
7156
7229
  id: id,
7157
7230
  css: "sv-action--convertTo sv-action-bar-item--secondary",
7158
- iconName: (_a = this.creator.toolbox.getItemByName(this.element.getType())) === null || _a === void 0 ? void 0 : _a.iconName,
7231
+ iconName: id == "convertTo" ? (_a = this.creator.toolbox.getItemByName(this.element.getType())) === null || _a === void 0 ? void 0 : _a.iconName : undefined,
7159
7232
  iconSize: 24,
7160
7233
  title: actionTitle,
7161
7234
  enabled: enabled,
7162
7235
  visibleIndex: index,
7163
7236
  disableShrink: false,
7237
+ location: "start",
7164
7238
  action: function (newType) {
7165
7239
  },
7166
7240
  }, {
@@ -8538,7 +8612,7 @@ var StringEditorViewModelBase = /** @class */ (function (_super) {
8538
8612
  this.connector.onDoActivate.add(this.activate);
8539
8613
  };
8540
8614
  StringEditorViewModelBase.prototype.checkConstraints = function (event) {
8541
- if (this.maxLength > 0 && event.keyCode >= 32) {
8615
+ if (!this.compostionInProgress && this.maxLength > 0 && event.keyCode >= 32) {
8542
8616
  var text = event.target.innerText || "";
8543
8617
  if (text.length >= this.maxLength) {
8544
8618
  event.preventDefault();
@@ -14465,11 +14539,15 @@ var TestSurveyTabViewModel = /** @class */ (function (_super) {
14465
14539
  /*!**********************************************!*\
14466
14540
  !*** ./src/components/tabs/theme-builder.ts ***!
14467
14541
  \**********************************************/
14468
- /*! exports provided: ThemeBuilder */
14542
+ /*! exports provided: getThemeFullName, getObjectDiffs, getThemeChanges, findSuitableTheme, ThemeBuilder */
14469
14543
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
14470
14544
 
14471
14545
  "use strict";
14472
14546
  __webpack_require__.r(__webpack_exports__);
14547
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeFullName", function() { return getThemeFullName; });
14548
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getObjectDiffs", function() { return getObjectDiffs; });
14549
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeChanges", function() { return getThemeChanges; });
14550
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findSuitableTheme", function() { return findSuitableTheme; });
14473
14551
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeBuilder", function() { return ThemeBuilder; });
14474
14552
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./src/entries/helpers.ts");
14475
14553
  /* harmony import */ var _simulator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../simulator */ "./src/components/simulator.ts");
@@ -14485,6 +14563,9 @@ __webpack_require__.r(__webpack_exports__);
14485
14563
  /* harmony import */ var _plugins_undo_redo_undo_redo_manager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../plugins/undo-redo/undo-redo-manager */ "./src/plugins/undo-redo/undo-redo-manager.ts");
14486
14564
  /* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./themes */ "./src/components/tabs/themes.ts");
14487
14565
  /* harmony import */ var _theme_custom_questions__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./theme-custom-questions */ "./src/components/tabs/theme-custom-questions/index.ts");
14566
+ /* harmony import */ var survey_core_themes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! survey-core/themes */ "./node_modules/survey-core/themes/index.js");
14567
+ /* harmony import */ var survey_core_themes__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(survey_core_themes__WEBPACK_IMPORTED_MODULE_13__);
14568
+
14488
14569
 
14489
14570
 
14490
14571
 
@@ -14499,6 +14580,78 @@ __webpack_require__.r(__webpack_exports__);
14499
14580
 
14500
14581
 
14501
14582
  __webpack_require__(/*! ./theme-builder.scss */ "./src/components/tabs/theme-builder.scss");
14583
+ Object.keys(survey_core_themes__WEBPACK_IMPORTED_MODULE_13__).forEach(function (libraryThemeName) {
14584
+ var libraryTheme = survey_core_themes__WEBPACK_IMPORTED_MODULE_13__[libraryThemeName];
14585
+ var creatorThemeVariables = {};
14586
+ var creatorTheme = {};
14587
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(creatorThemeVariables, libraryTheme.cssVariables);
14588
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(creatorTheme, libraryTheme, { cssVariables: creatorThemeVariables });
14589
+ var creatorThemeName = getThemeFullName(libraryTheme);
14590
+ _themes__WEBPACK_IMPORTED_MODULE_11__["Themes"][creatorThemeName] = creatorTheme;
14591
+ });
14592
+ function getThemeFullName(theme) {
14593
+ var themeName = theme.themeName || ThemeBuilder.DefaultTheme.themeName || "default";
14594
+ var fullThemeName = themeName + "-" + (theme.colorPalette || "light");
14595
+ if (theme.isPanelless === true) {
14596
+ fullThemeName += "-panelless";
14597
+ }
14598
+ return fullThemeName;
14599
+ }
14600
+ function getObjectDiffs(obj1, obj2) {
14601
+ if (obj2 === void 0) { obj2 = {}; }
14602
+ var result = {};
14603
+ Object.keys(obj1).forEach(function (key) {
14604
+ if (typeof obj1[key] === "object") {
14605
+ result[key] = getObjectDiffs(obj1[key], obj2[key]);
14606
+ }
14607
+ else {
14608
+ if (obj1[key] !== undefined && obj1[key] != obj2[key]) {
14609
+ result[key] = obj1[key];
14610
+ }
14611
+ }
14612
+ });
14613
+ return result;
14614
+ }
14615
+ function getThemeChanges(fullTheme, baseTheme) {
14616
+ if (!baseTheme) {
14617
+ var probeThemeFullName = getThemeFullName(fullTheme);
14618
+ baseTheme = findSuitableTheme(fullTheme.themeName, fullTheme.colorPalette, fullTheme.isPanelless ? "lightweight" : "panels", probeThemeFullName);
14619
+ }
14620
+ var themeChanges = getObjectDiffs(fullTheme, baseTheme);
14621
+ Object.keys(themeChanges).forEach(function (propertyName) {
14622
+ if (propertyName.toLowerCase().indexOf("background") !== -1) {
14623
+ if (themeChanges[propertyName] === "" || themeChanges[propertyName] === survey_core__WEBPACK_IMPORTED_MODULE_2__["Serializer"].findProperty("survey", propertyName).defaultValue) {
14624
+ delete themeChanges[propertyName];
14625
+ }
14626
+ }
14627
+ });
14628
+ themeChanges.themeName = baseTheme.themeName || ThemeBuilder.DefaultTheme.themeName || "default";
14629
+ themeChanges.colorPalette = baseTheme.colorPalette || "light";
14630
+ themeChanges.isPanelless = !!baseTheme.isPanelless;
14631
+ return themeChanges;
14632
+ }
14633
+ function findSuitableTheme(themeName, themePalette, themeMode, probeThemeFullName) {
14634
+ var suitableTheme = _themes__WEBPACK_IMPORTED_MODULE_11__["Themes"][probeThemeFullName];
14635
+ if (!!suitableTheme) {
14636
+ return suitableTheme;
14637
+ }
14638
+ var appropriateThemeNames = Object.keys(_themes__WEBPACK_IMPORTED_MODULE_11__["Themes"]).filter(function (fullName) { return fullName.indexOf(themeName + "-") === 0; });
14639
+ for (var _i = 0, appropriateThemeNames_1 = appropriateThemeNames; _i < appropriateThemeNames_1.length; _i++) {
14640
+ var fullThemeName = appropriateThemeNames_1[_i];
14641
+ if (fullThemeName.indexOf(themeName + "-" + themePalette) === 0) {
14642
+ probeThemeFullName = themeName + "-" + themePalette;
14643
+ }
14644
+ if (fullThemeName.indexOf(themeName + "-" + themePalette + (themeMode === "lightweight" ? "-panelless" : "")) === 0) {
14645
+ probeThemeFullName = themeName + "-" + themePalette + (themeMode === "lightweight" ? "-panelless" : "");
14646
+ }
14647
+ }
14648
+ suitableTheme = _themes__WEBPACK_IMPORTED_MODULE_11__["Themes"][appropriateThemeNames[0]];
14649
+ if (!!suitableTheme) {
14650
+ return suitableTheme;
14651
+ }
14652
+ var defaultNearestThemeFullName = getThemeFullName({ themeName: ThemeBuilder.DefaultTheme.themeName, colorPalette: themePalette || "light", isPanelless: themeMode === "lightweight" });
14653
+ return _themes__WEBPACK_IMPORTED_MODULE_11__["Themes"][defaultNearestThemeFullName] || ThemeBuilder.DefaultTheme;
14654
+ }
14502
14655
  var ThemeBuilder = /** @class */ (function (_super) {
14503
14656
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(ThemeBuilder, _super);
14504
14657
  function ThemeBuilder(surveyProvider, startThemeClasses) {
@@ -14509,7 +14662,7 @@ var ThemeBuilder = /** @class */ (function (_super) {
14509
14662
  _this.pages = new survey_core__WEBPACK_IMPORTED_MODULE_2__["ActionContainer"]();
14510
14663
  _this.themeCssVariablesChanges = {};
14511
14664
  _this.colorCalculator = new _utils_utils__WEBPACK_IMPORTED_MODULE_6__["ColorCalculator"]();
14512
- _this.blockChanges = false;
14665
+ _this.blockChanges = true;
14513
14666
  _this._availableThemes = _themes__WEBPACK_IMPORTED_MODULE_11__["PredefinedThemes"];
14514
14667
  _this.prevQuestionValues = {};
14515
14668
  _this.onThemeSelected = new survey_core__WEBPACK_IMPORTED_MODULE_2__["EventBase"]();
@@ -14527,11 +14680,12 @@ var ThemeBuilder = /** @class */ (function (_super) {
14527
14680
  _this.themeName = ThemeBuilder.DefaultTheme.themeName || "default";
14528
14681
  Object(_theme_custom_questions__WEBPACK_IMPORTED_MODULE_12__["updateCustomQuestionJSONs"])();
14529
14682
  _this.themeEditorSurveyValue = _this.createThemeEditorSurvey();
14530
- _this.backgroundImage = _this.surveyProvider.theme.backgroundImage !== undefined ? _this.surveyProvider.theme.backgroundImage : surveyProvider.survey.backgroundImage;
14531
- _this.backgroundImageFit = _this.surveyProvider.theme.backgroundImageFit !== undefined ? _this.surveyProvider.theme.backgroundImageFit : surveyProvider.survey.backgroundImageFit;
14532
- _this.backgroundImageAttachment = _this.surveyProvider.theme.backgroundImageAttachment !== undefined ? _this.surveyProvider.theme.backgroundImageAttachment : surveyProvider.survey.backgroundImageAttachment;
14533
- _this.backgroundOpacity = ((_this.surveyProvider.theme.backgroundOpacity !== undefined ? _this.surveyProvider.theme.backgroundOpacity : surveyProvider.survey.backgroundOpacity) || 1) * 100;
14534
- _this.loadTheme(_this.surveyProvider.theme);
14683
+ var surveyTheme = _this.surveyProvider.theme;
14684
+ _this.backgroundImage = surveyTheme.backgroundImage !== undefined ? surveyTheme.backgroundImage : surveyProvider.survey.backgroundImage;
14685
+ _this.backgroundImageFit = surveyTheme.backgroundImageFit !== undefined ? surveyTheme.backgroundImageFit : surveyProvider.survey.backgroundImageFit;
14686
+ _this.backgroundImageAttachment = surveyTheme.backgroundImageAttachment !== undefined ? surveyTheme.backgroundImageAttachment : surveyProvider.survey.backgroundImageAttachment;
14687
+ _this.backgroundOpacity = ((surveyTheme.backgroundOpacity !== undefined ? surveyTheme.backgroundOpacity : surveyProvider.survey.backgroundOpacity) || 1) * 100;
14688
+ _this.loadTheme(surveyTheme);
14535
14689
  _this.surveyProvider.hasPendingThemeChanges = false;
14536
14690
  _this.undoRedoManager = new _plugins_undo_redo_undo_redo_manager__WEBPACK_IMPORTED_MODULE_10__["UndoRedoManager"]();
14537
14691
  _this.surveyProvider.onPropertyChanged.add(_this.creatorPropertyChanged);
@@ -14612,29 +14766,32 @@ var ThemeBuilder = /** @class */ (function (_super) {
14612
14766
  ThemeBuilder.prototype.loadTheme = function (theme) {
14613
14767
  this.blockThemeChangedNotifications += 1;
14614
14768
  try {
14615
- this.themeName = theme.themeName || this.themeName;
14616
- this.themePalette = theme.colorPalette || this.themePalette;
14617
- if (theme.isPanelless !== undefined) {
14618
- this.themeMode = theme.isPanelless === true ? "lightweight" : "panels";
14619
- }
14769
+ var probeThemeFullName = getThemeFullName(theme);
14770
+ var baseTheme = findSuitableTheme(theme.themeName, theme.colorPalette, theme.isPanelless ? "lightweight" : "panels", probeThemeFullName);
14771
+ var themeChanges = getThemeChanges(theme, baseTheme);
14772
+ if (this.currentTheme === theme) {
14773
+ this.themeCssVariablesChanges = themeChanges.cssVariables || {};
14774
+ }
14775
+ this.themeName = themeChanges.themeName;
14776
+ this.themePalette = themeChanges.colorPalette;
14777
+ this.themeMode = themeChanges.isPanelless === true ? "lightweight" : "panels";
14620
14778
  this.backgroundImage = theme.backgroundImage || this.backgroundImage;
14621
14779
  this.backgroundImageFit = theme.backgroundImageFit || this.backgroundImageFit;
14622
14780
  this.backgroundImageAttachment = theme.backgroundImageAttachment || this.backgroundImageAttachment;
14623
14781
  var effectiveThemeCssVariables = {};
14624
- var suitableTheme = this.findSuitableTheme(this.themeName);
14625
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(effectiveThemeCssVariables, ThemeBuilder.DefaultTheme.cssVariables || {}, suitableTheme.cssVariables || {});
14782
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(effectiveThemeCssVariables, ThemeBuilder.DefaultTheme.cssVariables || {}, baseTheme.cssVariables || {});
14626
14783
  Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(effectiveThemeCssVariables, theme.cssVariables || {}, this.themeCssVariablesChanges);
14627
14784
  this.trimCssVariables(effectiveThemeCssVariables);
14628
14785
  var effectiveTheme = {
14629
- backgroundImage: this.backgroundImage || suitableTheme.backgroundImage || "",
14630
- backgroundImageFit: this.backgroundImageFit || suitableTheme.backgroundImageFit,
14631
- backgroundImageAttachment: this.backgroundImageAttachment || suitableTheme.backgroundImageAttachment,
14632
- backgroundOpacity: (this.backgroundOpacity / 100) || suitableTheme.backgroundOpacity,
14786
+ backgroundImage: this.backgroundImage || baseTheme.backgroundImage || "",
14787
+ backgroundImageFit: this.backgroundImageFit || baseTheme.backgroundImageFit,
14788
+ backgroundImageAttachment: this.backgroundImageAttachment || baseTheme.backgroundImageAttachment,
14789
+ backgroundOpacity: (this.backgroundOpacity / 100) || baseTheme.backgroundOpacity,
14633
14790
  };
14634
- var headerSettings = {};
14635
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(headerSettings, suitableTheme.header || {});
14636
- if (Object.keys(headerSettings).length > 0) {
14637
- effectiveTheme.header = headerSettings;
14791
+ var effectiveHeaderSettings = {};
14792
+ Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(effectiveHeaderSettings, baseTheme.header || {});
14793
+ if (Object.keys(effectiveHeaderSettings).length > 0) {
14794
+ effectiveTheme.header = effectiveHeaderSettings;
14638
14795
  }
14639
14796
  Object(_utils_utils__WEBPACK_IMPORTED_MODULE_6__["assign"])(effectiveTheme, theme, { cssVariables: effectiveThemeCssVariables, themeName: this.themeName, colorPalette: this.themePalette, isPanelless: this.themeMode === "lightweight" });
14640
14797
  this.surveyProvider.theme = effectiveTheme;
@@ -14906,13 +15063,13 @@ var ThemeBuilder = /** @class */ (function (_super) {
14906
15063
  var _a;
14907
15064
  if (["themeName", "themeMode", "themePalette"].indexOf(options.name) !== -1) {
14908
15065
  if (options.name === "themeName") {
14909
- this.loadTheme(this.findSuitableTheme(options.value) || (_a = {}, _a[options.name] = options.value, _a));
15066
+ this.loadTheme(this.findSuitableTheme(options.value) || (_a = {}, _a[options.name] = options.value, _a.isPanelless = this.themeMode === "lightweight", _a.colorPalette = this.themePalette, _a));
14910
15067
  }
14911
15068
  if (options.name === "themeMode") {
14912
- this.loadTheme({ isPanelless: options.value === "lightweight" });
15069
+ this.loadTheme({ themeName: this.themeName, isPanelless: options.value === "lightweight", colorPalette: this.themePalette });
14913
15070
  }
14914
15071
  if (options.name === "themePalette") {
14915
- this.loadTheme({ colorPalette: options.value });
15072
+ this.loadTheme({ themeName: this.themeName, isPanelless: this.themeMode === "lightweight", colorPalette: options.value });
14916
15073
  }
14917
15074
  this.themeModified({ theme: this.currentTheme });
14918
15075
  return true;
@@ -15084,8 +15241,8 @@ var ThemeBuilder = /** @class */ (function (_super) {
15084
15241
  return themeEditorSurvey;
15085
15242
  };
15086
15243
  ThemeBuilder.prototype.findSuitableTheme = function (themeName) {
15087
- var probeThemeFullName = Object(_themes__WEBPACK_IMPORTED_MODULE_11__["getThemeFullName"])({ themeName: themeName, colorPalette: this.themePalette, isPanelless: this.themeMode === "lightweight" });
15088
- return Object(_themes__WEBPACK_IMPORTED_MODULE_11__["findSuitableTheme"])(themeName, this.themePalette, this.themeMode, probeThemeFullName);
15244
+ var probeThemeFullName = getThemeFullName({ themeName: themeName, colorPalette: this.themePalette, isPanelless: this.themeMode === "lightweight" });
15245
+ return findSuitableTheme(themeName, this.themePalette, this.themeMode, probeThemeFullName);
15089
15246
  };
15090
15247
  ThemeBuilder.prototype.patchFileEditors = function (survey) {
15091
15248
  var _this = this;
@@ -15103,12 +15260,13 @@ var ThemeBuilder = /** @class */ (function (_super) {
15103
15260
  return result;
15104
15261
  };
15105
15262
  ThemeBuilder.prototype.setHeaderBackgroundColorCssVariable = function (headerSettings) {
15263
+ var _a;
15106
15264
  var headerBackgroundColorValue = undefined;
15107
15265
  if (headerSettings["backgroundColorSwitch"] === "none") {
15108
- headerBackgroundColorValue = "trasparent";
15266
+ headerBackgroundColorValue = "transparent";
15109
15267
  }
15110
15268
  else if (headerSettings["backgroundColorSwitch"] === "custom") {
15111
- headerBackgroundColorValue = headerSettings.backgroundColor;
15269
+ headerBackgroundColorValue = (_a = headerSettings.backgroundColor) !== null && _a !== void 0 ? _a : "transparent";
15112
15270
  }
15113
15271
  this.themeCssVariablesChanges["--sjs-header-backcolor"] = headerBackgroundColorValue;
15114
15272
  };
@@ -15130,7 +15288,7 @@ var ThemeBuilder = /** @class */ (function (_super) {
15130
15288
  ThemeBuilder.prototype.getBackgroundColorSwitchByValue = function (backgroundColor) {
15131
15289
  if (!backgroundColor)
15132
15290
  return "accentColor";
15133
- if (backgroundColor === "trasparent")
15291
+ if (backgroundColor === "transparent")
15134
15292
  return "none";
15135
15293
  return "custom";
15136
15294
  };
@@ -15155,7 +15313,7 @@ var ThemeBuilder = /** @class */ (function (_super) {
15155
15313
  panel.getQuestionByName("descriptionPositionY").readOnly = !this.survey.description;
15156
15314
  };
15157
15315
  ThemeBuilder.prototype.setCoverColorsFromThemeVariables = function (question, cssVariable) {
15158
- if (!!question && !!cssVariable && cssVariable !== "trasparent") {
15316
+ if (!!question && !!cssVariable && cssVariable !== "transparent") {
15159
15317
  question.value = cssVariable;
15160
15318
  }
15161
15319
  };
@@ -15270,7 +15428,9 @@ var ThemeBuilder = /** @class */ (function (_super) {
15270
15428
  });
15271
15429
  };
15272
15430
  ThemeBuilder.prototype.updateSimulatorTheme = function () {
15273
- this.survey.applyTheme(this.currentTheme);
15431
+ if (!!this.survey) {
15432
+ this.survey.applyTheme(this.currentTheme);
15433
+ }
15274
15434
  };
15275
15435
  Object.defineProperty(ThemeBuilder.prototype, "saveThemeFunc", {
15276
15436
  /**
@@ -15518,6 +15678,7 @@ var ThemeBuilder = /** @class */ (function (_super) {
15518
15678
  {
15519
15679
  type: "color",
15520
15680
  name: "backgroundColor",
15681
+ allowEmptyValue: true,
15521
15682
  enableIf: "{panel.backgroundColorSwitch} = 'custom'",
15522
15683
  titleLocation: "hidden",
15523
15684
  descriptionLocation: "hidden",
@@ -16612,9 +16773,9 @@ __webpack_require__.r(__webpack_exports__);
16612
16773
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeTabPlugin", function() { return ThemeTabPlugin; });
16613
16774
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! survey-core */ "survey-core");
16614
16775
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(survey_core__WEBPACK_IMPORTED_MODULE_0__);
16615
- /* harmony import */ var _editorLocalization__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../editorLocalization */ "./src/editorLocalization.ts");
16616
- /* harmony import */ var _theme_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./theme-builder */ "./src/components/tabs/theme-builder.ts");
16617
- /* harmony import */ var _creator_settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../creator-settings */ "./src/creator-settings.ts");
16776
+ /* harmony import */ var _creator_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../creator-settings */ "./src/creator-settings.ts");
16777
+ /* harmony import */ var _editorLocalization__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../editorLocalization */ "./src/editorLocalization.ts");
16778
+ /* harmony import */ var _theme_builder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./theme-builder */ "./src/components/tabs/theme-builder.ts");
16618
16779
  /* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./themes */ "./src/components/tabs/themes.ts");
16619
16780
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/utils */ "./src/utils/utils.ts");
16620
16781
 
@@ -16623,21 +16784,6 @@ __webpack_require__.r(__webpack_exports__);
16623
16784
 
16624
16785
 
16625
16786
 
16626
- function getObjectDiffs(obj1, obj2) {
16627
- if (obj2 === void 0) { obj2 = {}; }
16628
- var result = {};
16629
- Object.keys(obj1).forEach(function (key) {
16630
- if (typeof obj1[key] === "object") {
16631
- result[key] = getObjectDiffs(obj1[key], obj2[key]);
16632
- }
16633
- else {
16634
- if (obj1[key] !== undefined && obj1[key] != obj2[key]) {
16635
- result[key] = obj1[key];
16636
- }
16637
- }
16638
- });
16639
- return result;
16640
- }
16641
16787
  /**
16642
16788
  * An object that enables you to modify, add, and remove UI themes and handle theme-related events. To access this object, use the [`themeEditor`](https://surveyjs.io/survey-creator/documentation/api-reference/survey-creator#themeEditor) property on a Survey Creator instance:
16643
16789
  *
@@ -16658,7 +16804,7 @@ var ThemeTabPlugin = /** @class */ (function () {
16658
16804
  function ThemeTabPlugin(creator) {
16659
16805
  var _this = this;
16660
16806
  this.creator = creator;
16661
- this.simulatorTheme = survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyCss"][survey_core__WEBPACK_IMPORTED_MODULE_0__["defaultV2ThemeName"]];
16807
+ this.simulatorCssClasses = survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyCss"][survey_core__WEBPACK_IMPORTED_MODULE_0__["defaultV2ThemeName"]];
16662
16808
  this._availableThemes = [].concat(_themes__WEBPACK_IMPORTED_MODULE_4__["PredefinedThemes"]);
16663
16809
  this.saveToFileHandler = _utils_utils__WEBPACK_IMPORTED_MODULE_5__["saveToFileHandler"];
16664
16810
  /**
@@ -16702,10 +16848,10 @@ var ThemeTabPlugin = /** @class */ (function () {
16702
16848
  */
16703
16849
  this.onAllowModifyTheme = new survey_core__WEBPACK_IMPORTED_MODULE_0__["EventBase"]();
16704
16850
  creator.addPluginTab("theme", this, "ed.themeSurvey");
16705
- this.simulatorTheme = survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyCss"][survey_core__WEBPACK_IMPORTED_MODULE_0__["defaultV2ThemeName"]];
16851
+ this.simulatorCssClasses = survey_core__WEBPACK_IMPORTED_MODULE_0__["surveyCss"][survey_core__WEBPACK_IMPORTED_MODULE_0__["defaultV2ThemeName"]];
16706
16852
  this.createActions().forEach(function (action) { return creator.toolbar.actions.push(action); });
16707
16853
  this.sidebarTab = this.creator.sidebar.addTab("theme");
16708
- this.sidebarTab.caption = _editorLocalization__WEBPACK_IMPORTED_MODULE_1__["editorLocalization"].getString("ed.themePropertyGridTitle");
16854
+ this.sidebarTab.caption = _editorLocalization__WEBPACK_IMPORTED_MODULE_2__["editorLocalization"].getString("ed.themePropertyGridTitle");
16709
16855
  creator.registerShortcut("undo_theme", {
16710
16856
  name: "undo",
16711
16857
  affectedTab: "theme",
@@ -16736,9 +16882,7 @@ var ThemeTabPlugin = /** @class */ (function () {
16736
16882
  return new survey_core__WEBPACK_IMPORTED_MODULE_0__["ComputedUpdater"](function () { return _this.creator.activeTab === "theme"; });
16737
16883
  };
16738
16884
  ThemeTabPlugin.prototype.activate = function () {
16739
- this.model = new _theme_builder__WEBPACK_IMPORTED_MODULE_2__["ThemeBuilder"](this.creator, this.simulatorTheme);
16740
- this.model.availableThemes = this.availableThemes;
16741
- this.model.simulator.landscape = this.creator.previewOrientation != "portrait";
16885
+ this.model = new _theme_builder__WEBPACK_IMPORTED_MODULE_3__["ThemeBuilder"](this.creator, this.simulatorCssClasses);
16742
16886
  this.update();
16743
16887
  this.sidebarTab.model = this.model.themeEditorSurvey;
16744
16888
  this.sidebarTab.componentName = "survey-widget";
@@ -16748,13 +16892,15 @@ var ThemeTabPlugin = /** @class */ (function () {
16748
16892
  var _this = this;
16749
16893
  if (!this.model)
16750
16894
  return;
16751
- var options = {
16752
- showPagesInTestSurveyTab: this.creator.showPagesInTestSurveyTab,
16753
- };
16895
+ this.model.availableThemes = this.availableThemes;
16896
+ this.model.simulator.landscape = this.creator.previewOrientation != "portrait";
16754
16897
  this.model.testAgainAction = this.testAgainAction;
16755
16898
  this.model.availableThemes = this.availableThemes;
16756
16899
  this.model.prevPageAction = this.prevPageAction;
16757
16900
  this.model.nextPageAction = this.nextPageAction;
16901
+ var options = {
16902
+ showPagesInTestSurveyTab: this.creator.showPagesInTestSurveyTab,
16903
+ };
16758
16904
  this.model.initialize(this.creator.JSON, options);
16759
16905
  if (this.creator.showInvisibleElementsInTestSurveyTab) {
16760
16906
  this.invisibleToggleAction.css = this.model.showInvisibleElements ? "sv-action-bar-item--active" : "";
@@ -16772,7 +16918,7 @@ var ThemeTabPlugin = /** @class */ (function () {
16772
16918
  }
16773
16919
  });
16774
16920
  this.model.onThemeSelected.add(function (sender, options) {
16775
- _this.resetTheme.enabled = Object(_themes__WEBPACK_IMPORTED_MODULE_4__["getThemeFullName"])(sender.defaultSessionTheme) !== Object(_themes__WEBPACK_IMPORTED_MODULE_4__["getThemeFullName"])(options.theme);
16921
+ _this.resetTheme.enabled = Object(_theme_builder__WEBPACK_IMPORTED_MODULE_3__["getThemeFullName"])(sender.defaultSessionTheme) !== Object(_theme_builder__WEBPACK_IMPORTED_MODULE_3__["getThemeFullName"])(options.theme);
16776
16922
  _this.saveThemeAction.enabled = true;
16777
16923
  _this.onThemeSelected.fire(_this, options);
16778
16924
  });
@@ -16784,11 +16930,11 @@ var ThemeTabPlugin = /** @class */ (function () {
16784
16930
  this.model.onAllowModifyTheme.add(function (sender, options) {
16785
16931
  _this.onAllowModifyTheme.fire(_this, options);
16786
16932
  });
16787
- this.resetTheme.enabled = Object(_themes__WEBPACK_IMPORTED_MODULE_4__["getThemeFullName"])(this.model.defaultSessionTheme) !== Object(_themes__WEBPACK_IMPORTED_MODULE_4__["getThemeFullName"])(this.creator.theme) || this.isModified;
16933
+ this.resetTheme.enabled = Object(_theme_builder__WEBPACK_IMPORTED_MODULE_3__["getThemeFullName"])(this.model.defaultSessionTheme) !== Object(_theme_builder__WEBPACK_IMPORTED_MODULE_3__["getThemeFullName"])(this.creator.theme) || this.isModified;
16788
16934
  };
16789
16935
  ThemeTabPlugin.prototype.deactivate = function () {
16790
16936
  if (this.model) {
16791
- this.simulatorTheme = this.model.simulator.survey.css;
16937
+ this.simulatorCssClasses = this.model.simulator.survey.css;
16792
16938
  this.model.onPropertyChanged.clear();
16793
16939
  this.model.onThemeSelected.clear();
16794
16940
  this.model.onThemePropertyChanged.clear();
@@ -16804,7 +16950,6 @@ var ThemeTabPlugin = /** @class */ (function () {
16804
16950
  };
16805
16951
  ThemeTabPlugin.prototype.exportToFile = function (fileName) {
16806
16952
  var themeCopy = JSON.parse(JSON.stringify(this.creator.theme));
16807
- themeCopy.themeName = themeCopy.themeName + "_exported";
16808
16953
  var themeData = JSON.stringify(themeCopy, null, 4);
16809
16954
  var themeBlob = new Blob([themeData], { type: "application/json" });
16810
16955
  this.saveToFileHandler(fileName, themeBlob);
@@ -16814,9 +16959,8 @@ var ThemeTabPlugin = /** @class */ (function () {
16814
16959
  var fileReader = new FileReader();
16815
16960
  fileReader.onload = function (e) {
16816
16961
  var theme = JSON.parse(fileReader.result);
16817
- _this.addTheme(theme);
16818
- if (_this.model) {
16819
- _this.model.setTheme(theme);
16962
+ if (!!_this.model) {
16963
+ _this.model.loadTheme(theme);
16820
16964
  }
16821
16965
  callback && callback(theme);
16822
16966
  };
@@ -16906,11 +17050,11 @@ var ThemeTabPlugin = /** @class */ (function () {
16906
17050
  mode: "small",
16907
17051
  visible: this.createVisibleUpdater(),
16908
17052
  action: function () {
16909
- survey_core__WEBPACK_IMPORTED_MODULE_0__["settings"].confirmActionAsync(Object(_editorLocalization__WEBPACK_IMPORTED_MODULE_1__["getLocString"])("ed.themeResetConfirmation"), function (confirm) {
17053
+ survey_core__WEBPACK_IMPORTED_MODULE_0__["settings"].confirmActionAsync(Object(_editorLocalization__WEBPACK_IMPORTED_MODULE_2__["getLocString"])("ed.themeResetConfirmation"), function (confirm) {
16910
17054
  if (confirm) {
16911
17055
  _this.model.resetTheme();
16912
17056
  }
16913
- }, Object(_editorLocalization__WEBPACK_IMPORTED_MODULE_1__["getLocString"])("ed.themeResetConfirmationOk"));
17057
+ }, Object(_editorLocalization__WEBPACK_IMPORTED_MODULE_2__["getLocString"])("ed.themeResetConfirmationOk"));
16914
17058
  }
16915
17059
  });
16916
17060
  items.push(this.resetTheme);
@@ -16966,7 +17110,7 @@ var ThemeTabPlugin = /** @class */ (function () {
16966
17110
  mode: "small",
16967
17111
  component: "sv-action-bar-item",
16968
17112
  action: function () {
16969
- _this.exportToFile(_creator_settings__WEBPACK_IMPORTED_MODULE_3__["settings"].theme.exportFileName);
17113
+ _this.exportToFile(_creator_settings__WEBPACK_IMPORTED_MODULE_1__["settings"].theme.exportFileName);
16970
17114
  }
16971
17115
  });
16972
17116
  items.push(this.exportAction);
@@ -16980,7 +17124,7 @@ var ThemeTabPlugin = /** @class */ (function () {
16980
17124
  action: function () {
16981
17125
  _this.model.showInvisibleElements = !_this.model.showInvisibleElements;
16982
17126
  _this.invisibleToggleAction.css = _this.model.showInvisibleElements ? "sv-action-bar-item--active" : "";
16983
- _this.invisibleToggleAction.title = Object(_editorLocalization__WEBPACK_IMPORTED_MODULE_1__["getLocString"])(!_this.model.showInvisibleElements ? "ts.showInvisibleElements" : "ts.hideInvisibleElements");
17127
+ _this.invisibleToggleAction.title = Object(_editorLocalization__WEBPACK_IMPORTED_MODULE_2__["getLocString"])(!_this.model.showInvisibleElements ? "ts.showInvisibleElements" : "ts.hideInvisibleElements");
16984
17128
  }
16985
17129
  });
16986
17130
  }
@@ -17047,12 +17191,12 @@ var ThemeTabPlugin = /** @class */ (function () {
17047
17191
  */
17048
17192
  ThemeTabPlugin.prototype.addTheme = function (theme, setAsDefault) {
17049
17193
  if (setAsDefault === void 0) { setAsDefault = false; }
17050
- var fullThemeName = Object(_themes__WEBPACK_IMPORTED_MODULE_4__["getThemeFullName"])(theme);
17194
+ var fullThemeName = Object(_theme_builder__WEBPACK_IMPORTED_MODULE_3__["getThemeFullName"])(theme);
17051
17195
  _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"][fullThemeName] = theme;
17052
17196
  if (this._availableThemes.indexOf(theme.themeName) === -1) {
17053
17197
  if (setAsDefault) {
17054
17198
  this.availableThemes = [theme.themeName].concat(this.availableThemes);
17055
- _theme_builder__WEBPACK_IMPORTED_MODULE_2__["ThemeBuilder"].DefaultTheme = theme;
17199
+ _theme_builder__WEBPACK_IMPORTED_MODULE_3__["ThemeBuilder"].DefaultTheme = theme;
17056
17200
  }
17057
17201
  else {
17058
17202
  this.availableThemes = this.availableThemes.concat([theme.themeName]);
@@ -17074,11 +17218,11 @@ var ThemeTabPlugin = /** @class */ (function () {
17074
17218
  ThemeTabPlugin.prototype.removeTheme = function (themeAccessor, includeModifications) {
17075
17219
  if (includeModifications === void 0) { includeModifications = false; }
17076
17220
  var themeToDelete = typeof themeAccessor === "string" ? _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"][themeAccessor] : themeAccessor;
17077
- var fullThemeName = typeof themeAccessor === "string" ? themeAccessor : Object(_themes__WEBPACK_IMPORTED_MODULE_4__["getThemeFullName"])(themeToDelete);
17221
+ var fullThemeName = typeof themeAccessor === "string" ? themeAccessor : Object(_theme_builder__WEBPACK_IMPORTED_MODULE_3__["getThemeFullName"])(themeToDelete);
17078
17222
  if (!!themeToDelete) {
17079
17223
  delete _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"][fullThemeName];
17080
- if (_theme_builder__WEBPACK_IMPORTED_MODULE_2__["ThemeBuilder"].DefaultTheme === themeToDelete) {
17081
- _theme_builder__WEBPACK_IMPORTED_MODULE_2__["ThemeBuilder"].DefaultTheme = _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"]["default-light"] || _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"][Object.keys(_themes__WEBPACK_IMPORTED_MODULE_4__["Themes"])[0]];
17224
+ if (_theme_builder__WEBPACK_IMPORTED_MODULE_3__["ThemeBuilder"].DefaultTheme === themeToDelete) {
17225
+ _theme_builder__WEBPACK_IMPORTED_MODULE_3__["ThemeBuilder"].DefaultTheme = _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"]["default-light"] || _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"][Object.keys(_themes__WEBPACK_IMPORTED_MODULE_4__["Themes"])[0]];
17082
17226
  }
17083
17227
  var registeredThemeNames = Object.keys(_themes__WEBPACK_IMPORTED_MODULE_4__["Themes"]);
17084
17228
  var themeModifications = registeredThemeNames.filter(function (themeName) { return themeName.indexOf(themeToDelete.themeName + "-") === 0; });
@@ -17111,21 +17255,7 @@ var ThemeTabPlugin = /** @class */ (function () {
17111
17255
  return this.getThemeChanges();
17112
17256
  };
17113
17257
  ThemeTabPlugin.prototype.getThemeChanges = function () {
17114
- var fullTheme = this.creator.theme;
17115
- var probeThemeFullName = Object(_themes__WEBPACK_IMPORTED_MODULE_4__["getThemeFullName"])(fullTheme);
17116
- var baseTheme = Object(_themes__WEBPACK_IMPORTED_MODULE_4__["findSuitableTheme"])(fullTheme.themeName, fullTheme.colorPalette, fullTheme.isPanelless ? "lightweight" : "panels", probeThemeFullName);
17117
- var themeChanges = getObjectDiffs(fullTheme, baseTheme);
17118
- Object.keys(themeChanges).forEach(function (propertyName) {
17119
- if (propertyName.toLowerCase().indexOf("background") !== -1) {
17120
- if (themeChanges[propertyName] === "" || themeChanges[propertyName] === survey_core__WEBPACK_IMPORTED_MODULE_0__["Serializer"].findProperty("survey", propertyName).defaultValue) {
17121
- delete themeChanges[propertyName];
17122
- }
17123
- }
17124
- });
17125
- themeChanges.themeName = fullTheme.themeName || _theme_builder__WEBPACK_IMPORTED_MODULE_2__["ThemeBuilder"].DefaultTheme.themeName || "default";
17126
- themeChanges.colorPalette = fullTheme.colorPalette || "light";
17127
- themeChanges.isPanelless = !!fullTheme.isPanelless;
17128
- return themeChanges;
17258
+ return Object(_theme_builder__WEBPACK_IMPORTED_MODULE_3__["getThemeChanges"])(this.creator.theme);
17129
17259
  };
17130
17260
  Object.defineProperty(ThemeTabPlugin.prototype, "isModified", {
17131
17261
  /**
@@ -17143,6 +17273,7 @@ var ThemeTabPlugin = /** @class */ (function () {
17143
17273
  enumerable: false,
17144
17274
  configurable: true
17145
17275
  });
17276
+ ThemeTabPlugin.DefaultTheme = _themes__WEBPACK_IMPORTED_MODULE_4__["Themes"]["default-light"];
17146
17277
  return ThemeTabPlugin;
17147
17278
  }());
17148
17279
 
@@ -17154,40 +17285,16 @@ var ThemeTabPlugin = /** @class */ (function () {
17154
17285
  /*!***************************************!*\
17155
17286
  !*** ./src/components/tabs/themes.ts ***!
17156
17287
  \***************************************/
17157
- /*! exports provided: Themes, PredefinedThemes, getThemeFullName, PredefinedColors, findSuitableTheme */
17288
+ /*! exports provided: Themes, PredefinedThemes, PredefinedColors */
17158
17289
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
17159
17290
 
17160
17291
  "use strict";
17161
17292
  __webpack_require__.r(__webpack_exports__);
17162
17293
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Themes", function() { return Themes; });
17163
17294
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PredefinedThemes", function() { return PredefinedThemes; });
17164
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getThemeFullName", function() { return getThemeFullName; });
17165
17295
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PredefinedColors", function() { return PredefinedColors; });
17166
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findSuitableTheme", function() { return findSuitableTheme; });
17167
- /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/utils */ "./src/utils/utils.ts");
17168
- /* harmony import */ var survey_core_themes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! survey-core/themes */ "./node_modules/survey-core/themes/index.js");
17169
- /* harmony import */ var survey_core_themes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(survey_core_themes__WEBPACK_IMPORTED_MODULE_1__);
17170
-
17171
-
17172
17296
  var Themes = {};
17173
17297
  var PredefinedThemes = ["default", "sharp", "borderless", "flat", "plain", "doubleborder", "layered", "solid", "threedimensional", "contrast"];
17174
- function getThemeFullName(theme) {
17175
- var themeName = theme.themeName || "default";
17176
- var fullThemeName = themeName + "-" + (theme.colorPalette || "light");
17177
- if (theme.isPanelless === true) {
17178
- fullThemeName += "-panelless";
17179
- }
17180
- return fullThemeName;
17181
- }
17182
- Object.keys(survey_core_themes__WEBPACK_IMPORTED_MODULE_1__).forEach(function (libraryThemeName) {
17183
- var libraryTheme = survey_core_themes__WEBPACK_IMPORTED_MODULE_1__[libraryThemeName];
17184
- var creatorThemeVariables = {};
17185
- var creatorTheme = {};
17186
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["assign"])(creatorThemeVariables, libraryTheme.cssVariables);
17187
- Object(_utils_utils__WEBPACK_IMPORTED_MODULE_0__["assign"])(creatorTheme, libraryTheme, { cssVariables: creatorThemeVariables });
17188
- var creatorThemeName = getThemeFullName(libraryTheme);
17189
- Themes[creatorThemeName] = creatorTheme;
17190
- });
17191
17298
  var PredefinedColors = {
17192
17299
  light: {
17193
17300
  teal: "rgba(11, 128, 128, 1)",
@@ -17208,23 +17315,6 @@ var PredefinedColors = {
17208
17315
  green: "rgba(140, 204, 90, 1)"
17209
17316
  }
17210
17317
  };
17211
- function findSuitableTheme(themeName, themePalette, themeMode, probeThemeFullName) {
17212
- var suitableTheme = Themes[probeThemeFullName];
17213
- if (!!suitableTheme) {
17214
- return suitableTheme;
17215
- }
17216
- var appropriateThemeNames = Object.keys(Themes).filter(function (fullName) { return fullName.indexOf(themeName + "-") === 0; });
17217
- for (var _i = 0, appropriateThemeNames_1 = appropriateThemeNames; _i < appropriateThemeNames_1.length; _i++) {
17218
- var fullThemeName = appropriateThemeNames_1[_i];
17219
- if (fullThemeName.indexOf(themeName + "-" + themePalette) === 0) {
17220
- probeThemeFullName = themeName + "-" + themePalette;
17221
- }
17222
- if (fullThemeName.indexOf(themeName + "-" + themePalette + (themeMode === "lightweight" ? "-panelless" : "")) === 0) {
17223
- probeThemeFullName = themeName + "-" + themePalette + (themeMode === "lightweight" ? "-panelless" : "");
17224
- }
17225
- }
17226
- return Themes[probeThemeFullName] || Themes[appropriateThemeNames[0]];
17227
- }
17228
17318
 
17229
17319
 
17230
17320
  /***/ }),
@@ -21621,9 +21711,9 @@ var CreatorBase = /** @class */ (function (_super) {
21621
21711
  _survey_elements__WEBPACK_IMPORTED_MODULE_24__["DragDropSurveyElements"].restrictDragQuestionBetweenPages =
21622
21712
  _creator_settings__WEBPACK_IMPORTED_MODULE_2__["settings"].dragDrop.restrictDragQuestionBetweenPages;
21623
21713
  this.dragDropSurveyElements = new _survey_elements__WEBPACK_IMPORTED_MODULE_24__["DragDropSurveyElements"](null, this);
21714
+ this.dragDropSurveyElements.onGetMaxNestedPanels = function () { return _this.maxNestedPanels; };
21624
21715
  var isDraggedFromToolbox = false;
21625
21716
  this.dragDropSurveyElements.onDragStart.add(function (sender, options) {
21626
- _this.dragDropSurveyElements.maxNestedPanels = _this.maxNestedPanels;
21627
21717
  isDraggedFromToolbox = !sender.draggedElement.parent;
21628
21718
  _this.onDragStart.fire(sender, options);
21629
21719
  _this.startUndoRedoTransaction("drag drop");
@@ -22775,6 +22865,12 @@ var CreatorBase = /** @class */ (function (_super) {
22775
22865
  this.onPropertyGridShowModal.fire(this, options);
22776
22866
  };
22777
22867
  CreatorBase.prototype.onCanDeleteItemCallback = function (object, item, allowDelete) {
22868
+ if (!!item && item["isPage"]) {
22869
+ if (this.pageEditMode === "bypage")
22870
+ return item !== this.survey.currentPage;
22871
+ if (this.pageEditMode === "single")
22872
+ return false;
22873
+ }
22778
22874
  return this.canDeleteItem(object, item, allowDelete);
22779
22875
  };
22780
22876
  CreatorBase.prototype.onCollectionItemDeletingCallback = function (obj, property, collection, item) {
@@ -23474,12 +23570,23 @@ function isContentElement(element) {
23474
23570
  }
23475
23571
  return false;
23476
23572
  }
23573
+ function getQuestionFromElement(element) {
23574
+ if (!element)
23575
+ return null;
23576
+ if (!!element.row)
23577
+ return element.row.data;
23578
+ if (!!element.column)
23579
+ return element.column.colOwner;
23580
+ return null;
23581
+ }
23477
23582
  var editableStringRendererName = "svc-string-editor";
23478
23583
  function getElementWrapperComponentName(element, reason, isPopupEditorContent) {
23479
23584
  if (reason === "logo-image") {
23480
23585
  return "svc-logo-image";
23481
23586
  }
23482
23587
  if (reason === "cell" || reason === "column-header" || reason === "row-header") {
23588
+ if (isContentElement(getQuestionFromElement(element)))
23589
+ return undefined;
23483
23590
  return "svc-matrix-cell";
23484
23591
  }
23485
23592
  if (!isContentElement(element)) {
@@ -23554,8 +23661,11 @@ function getItemValueWrapperComponentData(item, question, creator) {
23554
23661
  };
23555
23662
  }
23556
23663
  function isStringEditable(element, name) {
23557
- var parentIsMatrix = !!element.data && element.parentQuestion instanceof survey_core__WEBPACK_IMPORTED_MODULE_1__["QuestionMatrixDropdownModelBase"];
23558
- return !parentIsMatrix && (!isContentElement(element) || element.isEditableTemplateElement);
23664
+ if (element.parentQuestion instanceof survey_core__WEBPACK_IMPORTED_MODULE_1__["QuestionMatrixDropdownModelBase"]) {
23665
+ if (!!element.data || isContentElement(element.parentQuestion))
23666
+ return false;
23667
+ }
23668
+ return !isContentElement(element) || element.isEditableTemplateElement;
23559
23669
  }
23560
23670
  function isTextInput(target) {
23561
23671
  if (!target.tagName)
@@ -24024,9 +24134,11 @@ var QuestionColorModel = /** @class */ (function (_super) {
24024
24134
  }
24025
24135
  newValue = (newValue.match(/#([0-9a-fA-F]){1,6}/) || [DEFAULT_COLOR])[0];
24026
24136
  if (newValue.length === 4) {
24137
+ var value = newValue.slice(0, 1);
24027
24138
  for (var i = 1; i < 4; i++) {
24028
- newValue += newValue[i];
24139
+ value += newValue[i] + newValue[i];
24029
24140
  }
24141
+ newValue = value;
24030
24142
  }
24031
24143
  if (newValue.length < 7) {
24032
24144
  var length_1 = newValue.length;
@@ -24036,6 +24148,12 @@ var QuestionColorModel = /** @class */ (function (_super) {
24036
24148
  }
24037
24149
  return newValue;
24038
24150
  };
24151
+ QuestionColorModel.prototype.isNewValueEqualsToValue = function (newValue) {
24152
+ if (_super.prototype.isNewValueEqualsToValue.call(this, newValue) || this.isTwoValueEquals(newValue, this.value, true, true))
24153
+ return true;
24154
+ else
24155
+ return false;
24156
+ };
24039
24157
  QuestionColorModel.prototype.setNewValue = function (newValue) {
24040
24158
  this.resetRenderedValue();
24041
24159
  _super.prototype.setNewValue.call(this, this.getCorrectedValue(newValue));
@@ -25195,7 +25313,7 @@ var __spreadArray = function (to, from) {
25195
25313
  /*!******************************!*\
25196
25314
  !*** ./src/entries/index.ts ***!
25197
25315
  \******************************/
25198
- /*! exports provided: Version, enStrings, editorLocalization, defaultStrings, localization, QuestionConvertMode, settings, EmptySurveyCreatorOptions, CreatorAction, TabbedMenuItem, TabbedMenuContainer, ToolbarActionContainer, CreatorEvent, CreatorBase, SurveyCreatorModel, StylesManager, initializeDesignTimeSurveyModel, editableStringRendererName, getElementWrapperComponentName, getQuestionContentWrapperComponentName, getElementWrapperComponentData, getItemValueWrapperComponentName, getItemValueWrapperComponentData, isStringEditable, isTextInput, registerAdorner, removeAdorners, CreatorResponsivityManager, AceJsonEditorModel, TabJsonEditorAcePlugin, JsonEditorBaseModel, TabJsonEditorBasePlugin, TextareaJsonEditorModel, TabJsonEditorTextareaPlugin, TestSurveyTabViewModel, TabTestPlugin, updateColorSettingsJSON, createColor, updateBoxShadowSettingsJSON, createBoxShadow, parseBoxShadow, DefaultFonts, updateFontSettingsJSON, fontsettingsToCssVariable, fontsettingsFromCssVariable, updateElementSettingsJSON, elementSettingsToCssVariable, elementSettingsFromCssVariable, Themes, PredefinedThemes, getThemeFullName, PredefinedColors, findSuitableTheme, ThemeBuilder, ThemeTabPlugin, initLogicOperator, LogicEvent, SurveyLogic, TranslationItemBase, TranslationItemString, TranslationItem, TranslationGroup, Translation, TranslationEditor, createImportCSVAction, createExportCSVAction, translationCss, TabTranslationPlugin, initialSettingsAllowShowEmptyTitleInDesignMode, TabDesignerViewModel, TabDesignerPlugin, SurveyLogicUI, TabLogicPlugin, logicCss, ToolboxToolViewModel, PageNavigatorViewModel, PageAdorner, RowViewModel, QuestionAdornerViewModel, QuestionDropdownAdornerViewModel, QuestionImageAdornerViewModel, QuestionRatingAdornerViewModel, ItemValueWrapperViewModel, ImageItemValueWrapperViewModel, MatrixCellWrapperEditSurvey, MatrixCellWrapperViewModel, SurveySimulatorModel, DEFAULT_MONITOR_DPI, simulatorDevices, SurveyResultsItemModel, SurveyResultsModel, LogoImageViewModel, StringItemsNavigatorBase, StringEditorConnector, StringEditorViewModelBase, QuestionEmbeddedSurveyModel, QuestionLinkValueModel, EditorLocalization, getLocString, SurveyJSON5, QuestionSpinEditorModel, QuestionColorModel, QuestionFileEditorModel, ResetValueAdorner, QuestionTextWithResetModel, QuestionCommentWithResetModel, setSurveyJSONForPropertyGrid, PropertyEditorSetupValue, PropertyGridEditorCollection, PropertyGridTitleActionsCreator, PropertyJSONGenerator, PropertyGridModel, PropertyGridEditor, PropertyGridEditorBoolean, PropertyGridEditorStringBase, PropertyGridEditorString, PropertyGridLinkEditor, PropertyGridEditorColor, PropertyGridEditorNumber, PropertyGridEditorImageSize, PropertyGridEditorText, PropertyGridEditorHtml, PropertyGridEditorStringArray, PropertyGridEditorDropdown, PropertyGridEditorSet, PropertyGridEditorPage, PropertyGridEditorQuestion, PropertyGridEditorQuestionSelectBase, PropertyGridEditorQuestionCarryForward, PropertyGridEditorQuestionValue, PropertyGridEditorExpression, PropertyGridEditorCondition, PropertyGridEditorMatrix, PropertyGridEditorMatrixItemValues, PropertyGridEditorMatrixRateValues, PropertyGridEditorMatrixColumns, PropertyGridEditorMatrixPages, PropertyGridEditorMatrixCalculatedValues, PropertyGridEditorMatrixHtmlConditions, PropertyGridEditorMatrixUrlConditions, PropertyGridEditorMatrixMutlipleTextItems, PropertyGridEditorMatrixMultipleTypes, PropertyGridEditorMatrixValidators, PropertyGridEditorMatrixTriggers, PropertyGridEditorBindings, PropertyGridViewModel, ObjectSelectorItem, ObjectSelector, ObjectSelectorModel, PropertyGridEditorQuestionRestfull, PropertyGridValueEditorBase, PropertyGridCellsEditor, PropertyGridValueEditor, PropertyGridRowValueEditor, PropertyGridPanelValueEditor, PropertyGridTriggerValueEditor, PropertyGridTriggerValueInLogicEditor, SearchManager, propertyGridCss, QuestionConverter, svgBundle, SurveyTextWorkerError, SurveyTextWorkerParserError, SurveyTextWorkerJsonError, SurveyTextWorker, JsonDuplicateNameError, QuestionToolboxCategory, QuestionToolboxItem, QuestionToolbox, SidebarModel, SidebarTabModel, getNextItemValue, getNextItemText, getNextValue, findParentNode, focusFirstControl, getFirstNonTextElement, getNodesFromKoComponentInfo, propertyExists, isPropertyVisible, toggleHovered, clearNewLines, select, copyObject, copyCssClasses, assignDefaultV2Classes, wrapTextByCurlyBraces, capitalize, notShortCircuitAnd, imageMimeTypes, getAcceptedTypesByContentMode, getQuestionFromObj, scrollElementIntoView, ingectAlpha, convertRgbaToString, parseRgbaFromString, parseColor, HSBToRGB, RGBToHSB, assign, ColorCalculator, saveToFileHandler, SurveyQuestionEditorDefinition, ObjType, SurveyHelper, ResizeManager, UndoRedoPlugin, undoRedoTransaction, ignoreUndoRedo, UndoRedoManager, Transaction, UndoRedoAction, UndoRedoArrayAction, PagesController */
25316
+ /*! exports provided: Version, enStrings, editorLocalization, defaultStrings, localization, QuestionConvertMode, settings, EmptySurveyCreatorOptions, CreatorAction, TabbedMenuItem, TabbedMenuContainer, ToolbarActionContainer, CreatorEvent, CreatorBase, SurveyCreatorModel, StylesManager, initializeDesignTimeSurveyModel, editableStringRendererName, getElementWrapperComponentName, getQuestionContentWrapperComponentName, getElementWrapperComponentData, getItemValueWrapperComponentName, getItemValueWrapperComponentData, isStringEditable, isTextInput, registerAdorner, removeAdorners, CreatorResponsivityManager, AceJsonEditorModel, TabJsonEditorAcePlugin, JsonEditorBaseModel, TabJsonEditorBasePlugin, TextareaJsonEditorModel, TabJsonEditorTextareaPlugin, TestSurveyTabViewModel, TabTestPlugin, updateColorSettingsJSON, createColor, updateBoxShadowSettingsJSON, createBoxShadow, parseBoxShadow, DefaultFonts, updateFontSettingsJSON, fontsettingsToCssVariable, fontsettingsFromCssVariable, updateElementSettingsJSON, elementSettingsToCssVariable, elementSettingsFromCssVariable, Themes, PredefinedThemes, PredefinedColors, getThemeFullName, getObjectDiffs, getThemeChanges, findSuitableTheme, ThemeBuilder, ThemeTabPlugin, initLogicOperator, LogicEvent, SurveyLogic, TranslationItemBase, TranslationItemString, TranslationItem, TranslationGroup, Translation, TranslationEditor, createImportCSVAction, createExportCSVAction, translationCss, TabTranslationPlugin, initialSettingsAllowShowEmptyTitleInDesignMode, TabDesignerViewModel, TabDesignerPlugin, SurveyLogicUI, TabLogicPlugin, logicCss, ToolboxToolViewModel, PageNavigatorViewModel, PageAdorner, RowViewModel, QuestionAdornerViewModel, QuestionDropdownAdornerViewModel, QuestionImageAdornerViewModel, QuestionRatingAdornerViewModel, ItemValueWrapperViewModel, ImageItemValueWrapperViewModel, MatrixCellWrapperEditSurvey, MatrixCellWrapperViewModel, SurveySimulatorModel, DEFAULT_MONITOR_DPI, simulatorDevices, SurveyResultsItemModel, SurveyResultsModel, LogoImageViewModel, StringItemsNavigatorBase, StringEditorConnector, StringEditorViewModelBase, QuestionEmbeddedSurveyModel, QuestionLinkValueModel, EditorLocalization, getLocString, SurveyJSON5, QuestionSpinEditorModel, QuestionColorModel, QuestionFileEditorModel, ResetValueAdorner, QuestionTextWithResetModel, QuestionCommentWithResetModel, setSurveyJSONForPropertyGrid, PropertyEditorSetupValue, PropertyGridEditorCollection, PropertyGridTitleActionsCreator, PropertyJSONGenerator, PropertyGridModel, PropertyGridEditor, PropertyGridEditorBoolean, PropertyGridEditorStringBase, PropertyGridEditorString, PropertyGridLinkEditor, PropertyGridEditorColor, PropertyGridEditorNumber, PropertyGridEditorImageSize, PropertyGridEditorText, PropertyGridEditorHtml, PropertyGridEditorStringArray, PropertyGridEditorDropdown, PropertyGridEditorSet, PropertyGridEditorPage, PropertyGridEditorQuestion, PropertyGridEditorQuestionSelectBase, PropertyGridEditorQuestionCarryForward, PropertyGridEditorQuestionValue, PropertyGridEditorExpression, PropertyGridEditorCondition, PropertyGridEditorMatrix, PropertyGridEditorMatrixItemValues, PropertyGridEditorMatrixRateValues, PropertyGridEditorMatrixColumns, PropertyGridEditorMatrixPages, PropertyGridEditorMatrixCalculatedValues, PropertyGridEditorMatrixHtmlConditions, PropertyGridEditorMatrixUrlConditions, PropertyGridEditorMatrixMutlipleTextItems, PropertyGridEditorMatrixMultipleTypes, PropertyGridEditorMatrixValidators, PropertyGridEditorMatrixTriggers, PropertyGridEditorBindings, PropertyGridViewModel, ObjectSelectorItem, ObjectSelector, ObjectSelectorModel, PropertyGridEditorQuestionRestfull, PropertyGridValueEditorBase, PropertyGridCellsEditor, PropertyGridValueEditor, PropertyGridRowValueEditor, PropertyGridPanelValueEditor, PropertyGridTriggerValueEditor, PropertyGridTriggerValueInLogicEditor, SearchManager, propertyGridCss, QuestionConverter, svgBundle, SurveyTextWorkerError, SurveyTextWorkerParserError, SurveyTextWorkerJsonError, SurveyTextWorker, JsonDuplicateNameError, QuestionToolboxCategory, QuestionToolboxItem, QuestionToolbox, SidebarModel, SidebarTabModel, getNextItemValue, getNextItemText, getNextValue, findParentNode, focusFirstControl, getFirstNonTextElement, getNodesFromKoComponentInfo, propertyExists, isPropertyVisible, toggleHovered, clearNewLines, select, copyObject, copyCssClasses, assignDefaultV2Classes, wrapTextByCurlyBraces, capitalize, notShortCircuitAnd, imageMimeTypes, getAcceptedTypesByContentMode, getQuestionFromObj, scrollElementIntoView, ingectAlpha, convertRgbaToString, parseRgbaFromString, parseColor, HSBToRGB, RGBToHSB, assign, ColorCalculator, saveToFileHandler, SurveyQuestionEditorDefinition, ObjType, SurveyHelper, ResizeManager, UndoRedoPlugin, undoRedoTransaction, ignoreUndoRedo, UndoRedoManager, Transaction, UndoRedoAction, UndoRedoArrayAction, PagesController */
25199
25317
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
25200
25318
 
25201
25319
  "use strict";
@@ -25314,13 +25432,17 @@ __webpack_require__.r(__webpack_exports__);
25314
25432
 
25315
25433
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PredefinedThemes", function() { return _components_tabs_themes__WEBPACK_IMPORTED_MODULE_14__["PredefinedThemes"]; });
25316
25434
 
25317
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getThemeFullName", function() { return _components_tabs_themes__WEBPACK_IMPORTED_MODULE_14__["getThemeFullName"]; });
25318
-
25319
25435
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PredefinedColors", function() { return _components_tabs_themes__WEBPACK_IMPORTED_MODULE_14__["PredefinedColors"]; });
25320
25436
 
25321
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findSuitableTheme", function() { return _components_tabs_themes__WEBPACK_IMPORTED_MODULE_14__["findSuitableTheme"]; });
25322
-
25323
25437
  /* harmony import */ var _components_tabs_theme_builder__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../components/tabs/theme-builder */ "./src/components/tabs/theme-builder.ts");
25438
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getThemeFullName", function() { return _components_tabs_theme_builder__WEBPACK_IMPORTED_MODULE_15__["getThemeFullName"]; });
25439
+
25440
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getObjectDiffs", function() { return _components_tabs_theme_builder__WEBPACK_IMPORTED_MODULE_15__["getObjectDiffs"]; });
25441
+
25442
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getThemeChanges", function() { return _components_tabs_theme_builder__WEBPACK_IMPORTED_MODULE_15__["getThemeChanges"]; });
25443
+
25444
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findSuitableTheme", function() { return _components_tabs_theme_builder__WEBPACK_IMPORTED_MODULE_15__["findSuitableTheme"]; });
25445
+
25324
25446
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ThemeBuilder", function() { return _components_tabs_theme_builder__WEBPACK_IMPORTED_MODULE_15__["ThemeBuilder"]; });
25325
25447
 
25326
25448
  /* harmony import */ var _components_tabs_theme_plugin__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../components/tabs/theme-plugin */ "./src/components/tabs/theme-plugin.ts");
@@ -25702,7 +25824,7 @@ __webpack_require__.r(__webpack_exports__);
25702
25824
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! survey-core */ "survey-core");
25703
25825
  /* harmony import */ var survey_core__WEBPACK_IMPORTED_MODULE_72___default = /*#__PURE__*/__webpack_require__.n(survey_core__WEBPACK_IMPORTED_MODULE_72__);
25704
25826
  var Version;
25705
- Version = "" + "1.9.120";
25827
+ Version = "" + "1.9.122";
25706
25828
  //should be loaded before other styles for easier override
25707
25829
  __webpack_require__(/*! ../utils/context-button.scss */ "./src/utils/context-button.scss");
25708
25830
 
@@ -25793,7 +25915,7 @@ __webpack_require__(/*! ../utils/design.scss */ "./src/utils/design.scss");
25793
25915
  __webpack_require__(/*! ../utils/layout.scss */ "./src/utils/layout.scss");
25794
25916
 
25795
25917
  survey_core__WEBPACK_IMPORTED_MODULE_72__["settings"].supportCreatorV2 = true;
25796
- Object(survey_core__WEBPACK_IMPORTED_MODULE_72__["checkLibraryVersion"])("" + "1.9.120", "survey-creator-core");
25918
+ Object(survey_core__WEBPACK_IMPORTED_MODULE_72__["checkLibraryVersion"])("" + "1.9.122", "survey-creator-core");
25797
25919
 
25798
25920
 
25799
25921
  /***/ }),
@@ -28639,6 +28761,7 @@ var enStrings = {
28639
28761
  both: "Both",
28640
28762
  left: "Left",
28641
28763
  right: "Right",
28764
+ leftRight: "Left and right",
28642
28765
  color: "color",
28643
28766
  date: "date",
28644
28767
  datetime: "datetime",
@@ -34191,13 +34314,6 @@ var PropertyGridEditorMatrixPages = /** @class */ (function (_super) {
34191
34314
  PropertyGridEditorMatrixPages.prototype.fit = function (prop) {
34192
34315
  return prop.type == "surveypages";
34193
34316
  };
34194
- PropertyGridEditorMatrixPages.prototype.onMatrixAllowRemoveRow = function (obj, row) {
34195
- var page = row.editingObj;
34196
- if (!page || !page.survey) {
34197
- return;
34198
- }
34199
- return page.survey.currentPage !== page;
34200
- };
34201
34317
  PropertyGridEditorMatrixPages.prototype.getColumnClassName = function (obj, prop) {
34202
34318
  return "page@" + obj.getType();
34203
34319
  };
@@ -36932,7 +37048,6 @@ var DragDropSurveyElements = /** @class */ (function (_super) {
36932
37048
  // protected ghostSurveyElement: IElement = null;
36933
37049
  _this.dragOverIndicatorElement = null;
36934
37050
  _this.isDraggedElementSelected = false;
36935
- _this.maxNestedPanels = -1;
36936
37051
  _this.doBanDropHere = function () {
36937
37052
  _this.removeDragOverMarker(_this.dragOverIndicatorElement);
36938
37053
  _this.removeDragOverMarker(_this.dropTarget);
@@ -37026,6 +37141,11 @@ var DragDropSurveyElements = /** @class */ (function (_super) {
37026
37141
  enumerable: false,
37027
37142
  configurable: true
37028
37143
  });
37144
+ Object.defineProperty(DragDropSurveyElements.prototype, "maxNestedPanels", {
37145
+ get: function () { return this.onGetMaxNestedPanels ? this.onGetMaxNestedPanels() : -1; },
37146
+ enumerable: false,
37147
+ configurable: true
37148
+ });
37029
37149
  // private isRight: boolean;
37030
37150
  // protected prevIsRight: boolean;
37031
37151
  DragDropSurveyElements.prototype.startDragToolboxItem = function (event, draggedElementJson, toolboxItemModel) {
@@ -38985,6 +39105,7 @@ var QuestionToolbox = /** @class */ (function (_super) {
38985
39105
  iconName: iconName,
38986
39106
  title: title,
38987
39107
  tooltip: title,
39108
+ className: "svc-toolbox__item svc-toolbox__item--" + iconName,
38988
39109
  json: elementJson,
38989
39110
  isCopied: false,
38990
39111
  category: category