@billpeng/surveyjs-editor
Version:
Use surveyjs Builder(Editor) to create or edit JSON for surveyjs library.
1,229 lines (1,178 loc) • 2.48 MB
JavaScript
/*!
* surveyjs Builder(Editor) v1.0.46-4
* (c) Devsoft Baltic O� - http://surveyjs.io/
* Github: https://github.com/surveyjs/editor
* License: https://surveyjs.io/Licenses#BuildSurvey
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("knockout"), require("survey-knockout"));
else if(typeof define === 'function' && define.amd)
define("SurveyEditor", ["knockout", "survey-knockout"], factory);
else if(typeof exports === 'object')
exports["SurveyEditor"] = factory(require("knockout"), require("survey-knockout"));
else
root["SurveyEditor"] = factory(root["ko"], root["Survey"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 127);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__localization_english__ = __webpack_require__(23);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_survey_knockout__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_survey_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_survey_knockout__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return editorLocalization; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return defaultStrings; });
var editorLocalization = {
currentLocale: "",
locales: {},
getString: function (strName, locale) {
if (locale === void 0) { locale = null; }
var loc = this.getLocale(locale);
var path = strName.split(".");
var obj = loc;
for (var i = 0; i < path.length; i++) {
obj = obj[path[i]];
if (!obj) {
if (loc === defaultStrings)
return path[i];
return this.getString(strName, "en");
}
}
return obj;
},
hasString: function (strName, locale) {
if (locale === void 0) { locale = null; }
var loc = this.getLocale(locale);
var path = strName.split(".");
var obj = loc;
for (var i = 0; i < path.length; i++) {
obj = obj[path[i]];
if (!obj)
return false;
}
return true;
},
getLocaleName: function (loc) {
var localeNames = __WEBPACK_IMPORTED_MODULE_1_survey_knockout__["surveyLocalization"]["localeNames"];
return !!loc
? localeNames[loc]
: editorLocalization
.getString("ed.defaultLocale")["format"](localeNames[__WEBPACK_IMPORTED_MODULE_1_survey_knockout__["surveyLocalization"].defaultLocale]);
},
getPropertyName: function (strName, locale) {
if (locale === void 0) { locale = null; }
var obj = this.getProperty(strName, locale);
if (obj["name"])
return obj["name"];
return obj;
},
getPropertyTitle: function (strName, locale) {
if (locale === void 0) { locale = null; }
var obj = this.getProperty(strName, locale);
if (obj["title"])
return obj["title"];
return "";
},
getProperty: function (strName, locale) {
if (locale === void 0) { locale = null; }
var obj = this.getString("p." + strName, locale);
if (obj !== strName)
return obj;
var pos = strName.indexOf("_");
if (pos < -1)
return obj;
strName = strName.substr(pos + 1);
return this.getString("p." + strName, locale);
},
getPropertyValue: function (value, locale) {
if (locale === void 0) { locale = null; }
return this.getValueInternal(value, "pv", locale);
},
getValidatorName: function (name, locale) {
if (locale === void 0) { locale = null; }
return this.getValueInternal(name, "validators", locale);
},
getTriggerName: function (name, locale) {
if (locale === void 0) { locale = null; }
return this.getValueInternal(name, "triggers", locale);
},
getLocale: function (locale) {
if (!locale)
locale = this.currentLocale;
var loc = locale ? this.locales[locale] : defaultStrings;
if (!loc)
loc = defaultStrings;
return loc;
},
getValueInternal: function (value, prefix, locale) {
if (locale === void 0) { locale = null; }
if (value === "" || value === null || value === undefined)
return "";
value = value.toString();
var loc = this.getLocale(locale);
var res = loc[prefix] ? loc[prefix][value] : null;
if (!res)
res = defaultStrings[prefix][value];
return res ? res : value;
},
getLocales: function () {
var res = [];
res.push("");
for (var key in this.locales) {
res.push(key);
}
return res;
}
};
var defaultStrings = __WEBPACK_IMPORTED_MODULE_0__localization_english__["a" /* enStrings */];
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
/***/ }),
/* 2 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export __assign */
/* harmony export (immutable) */ __webpack_exports__["a"] = __extends;
var __assign = Object["assign"] ||
function (target) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
target[p] = s[p];
}
return target;
};
function __extends(thisClass, baseClass) {
for (var p in baseClass)
if (baseClass.hasOwnProperty(p))
thisClass[p] = baseClass[p];
function __() {
this.constructor = thisClass;
}
thisClass.prototype =
baseClass === null
? Object.create(baseClass)
: ((__.prototype = baseClass.prototype), new __());
}
/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(3);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_knockout__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_survey_knockout__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_survey_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_survey_knockout__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__ = __webpack_require__(13);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__propertyCustomEditor__ = __webpack_require__(25);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__editorLocalization__ = __webpack_require__(0);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SurveyPropertyEditorFactory; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SurveyStringPropertyEditor; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return SurveyDropdownPropertyEditor; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return SurveyBooleanPropertyEditor; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return SurveyNumberPropertyEditor; });
var SurveyPropertyEditorFactory = (function () {
function SurveyPropertyEditorFactory() {
}
SurveyPropertyEditorFactory.getOperators = function () {
var operators = [
"empty",
"notempty",
"equal",
"notequal",
"contains",
"notcontains",
"greater",
"less",
"greaterorequal",
"lessorequal"
];
var result = [];
for (var i = 0; i < operators.length; i++) {
var name = operators[i];
result.push({
name: name,
text: __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getString("op." + name)
});
}
return result;
};
SurveyPropertyEditorFactory.registerEditor = function (name, creator, editableClassName) {
if (editableClassName === void 0) { editableClassName = null; }
SurveyPropertyEditorFactory.creatorList[name] = creator;
var className = editableClassName ? editableClassName : name;
SurveyPropertyEditorFactory.creatorByClassList[className] = creator;
};
SurveyPropertyEditorFactory.registerCustomEditor = function (name, widgetJSON) {
SurveyPropertyEditorFactory.widgetRegisterList[name] = widgetJSON;
};
SurveyPropertyEditorFactory.createEditor = function (property, func) {
var editorType = property.type;
if (property.choices != null &&
(!editorType || editorType == SurveyPropertyEditorFactory.defaultEditor)) {
editorType = "dropdown";
}
var propertyEditor = SurveyPropertyEditorFactory.createCustomEditor(editorType, property);
if (!propertyEditor) {
var creator = SurveyPropertyEditorFactory.creatorList[editorType];
if (creator)
propertyEditor = creator(property);
}
if (!propertyEditor) {
creator = SurveyPropertyEditorFactory.findParentCreator(editorType);
propertyEditor = creator(property);
}
propertyEditor.onChanged = func;
return propertyEditor;
};
SurveyPropertyEditorFactory.createCustomEditor = function (name, property) {
var widgetJSON = SurveyPropertyEditorFactory.widgetRegisterList[name];
if (!widgetJSON)
return null;
return new __WEBPACK_IMPORTED_MODULE_4__propertyCustomEditor__["a" /* SurveyPropertyCustomEditor */](property, widgetJSON);
};
SurveyPropertyEditorFactory.findParentCreator = function (name) {
var jsonClass = __WEBPACK_IMPORTED_MODULE_2_survey_knockout__["JsonObject"].metaData.findClass(name);
while (jsonClass && jsonClass.parentName) {
var creator = SurveyPropertyEditorFactory.creatorByClassList[jsonClass.parentName];
if (creator)
return creator;
jsonClass = __WEBPACK_IMPORTED_MODULE_2_survey_knockout__["JsonObject"].metaData.findClass(jsonClass.parentName);
}
return SurveyPropertyEditorFactory.creatorList[SurveyPropertyEditorFactory.defaultEditor];
};
return SurveyPropertyEditorFactory;
}());
SurveyPropertyEditorFactory.defaultEditor = "string";
SurveyPropertyEditorFactory.creatorList = {};
SurveyPropertyEditorFactory.creatorByClassList = {};
SurveyPropertyEditorFactory.widgetRegisterList = {};
var SurveyStringPropertyEditor = (function (_super) {
__WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyStringPropertyEditor, _super);
function SurveyStringPropertyEditor(property) {
return _super.call(this, property) || this;
}
Object.defineProperty(SurveyStringPropertyEditor.prototype, "editorType", {
get: function () {
return "string";
},
enumerable: true,
configurable: true
});
return SurveyStringPropertyEditor;
}(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */]));
var SurveyDropdownPropertyEditor = (function (_super) {
__WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyDropdownPropertyEditor, _super);
function SurveyDropdownPropertyEditor(property) {
var _this = _super.call(this, property) || this;
_this.koChoices = __WEBPACK_IMPORTED_MODULE_1_knockout__["observableArray"](_this.getLocalizableChoices());
_this.koHasFocus = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](false);
var self = _this;
_this.koHasFocus.subscribe(function (newValue) {
if (newValue && self.property["isDynamicChoices"]) {
//TODO
self.koChoices(self.getLocalizableChoices());
}
});
return _this;
}
Object.defineProperty(SurveyDropdownPropertyEditor.prototype, "editorType", {
get: function () {
return "dropdown";
},
enumerable: true,
configurable: true
});
SurveyDropdownPropertyEditor.prototype.getValueText = function (value) {
if (this.property.name === "locale") {
var text = __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getLocaleName(value);
if (text)
return text;
}
if (this.property.name === "cellType") {
var text = __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getString("qt." + value);
if (text)
return text;
}
return __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getPropertyValue(value);
};
SurveyDropdownPropertyEditor.prototype.setObject = function (value) {
_super.prototype.setObject.call(this, value);
this.beginValueUpdating();
if (this.koChoices().length == 0) {
this.koChoices(this.getLocalizableChoices());
}
this.endValueUpdating();
};
SurveyDropdownPropertyEditor.prototype.getLocalizableChoices = function () {
var choices = this.getPropertyChoices();
if (!choices || choices.length == 0)
return [];
var res = new Array();
__WEBPACK_IMPORTED_MODULE_2_survey_knockout__["ItemValue"].setData(res, choices);
for (var i = 0; i < res.length; i++) {
var value = res[i].value;
var text = this.getValueText(value);
if (text != value) {
res[i].text = text;
}
}
return res;
};
SurveyDropdownPropertyEditor.prototype.getPropertyChoices = function () {
if (!this.property)
return [];
return this.property["getChoices"]
? this.property["getChoices"](this.object)
: this.property.choices;
};
return SurveyDropdownPropertyEditor;
}(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */]));
var SurveyBooleanPropertyEditor = (function (_super) {
__WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyBooleanPropertyEditor, _super);
function SurveyBooleanPropertyEditor(property) {
return _super.call(this, property) || this;
}
Object.defineProperty(SurveyBooleanPropertyEditor.prototype, "editorType", {
get: function () {
return "boolean";
},
enumerable: true,
configurable: true
});
Object.defineProperty(SurveyBooleanPropertyEditor.prototype, "alwaysShowEditor", {
get: function () {
return true;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SurveyBooleanPropertyEditor.prototype, "canShowDisplayNameOnTop", {
get: function () {
return false;
},
enumerable: true,
configurable: true
});
SurveyBooleanPropertyEditor.prototype.getValueText = function (value) {
return __WEBPACK_IMPORTED_MODULE_5__editorLocalization__["a" /* editorLocalization */].getPropertyValue(value);
};
return SurveyBooleanPropertyEditor;
}(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */]));
var SurveyNumberPropertyEditor = (function (_super) {
__WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyNumberPropertyEditor, _super);
function SurveyNumberPropertyEditor(property) {
return _super.call(this, property) || this;
}
Object.defineProperty(SurveyNumberPropertyEditor.prototype, "editorType", {
get: function () {
return "number";
},
enumerable: true,
configurable: true
});
SurveyNumberPropertyEditor.prototype.getCorrectedValue = function (value) {
if (!value)
return value;
if (typeof value === "string" || value instanceof String) {
value = Number(value);
if (!value)
value = 0;
}
return value;
};
return SurveyNumberPropertyEditor;
}(__WEBPACK_IMPORTED_MODULE_3__propertyEditorBase__["a" /* SurveyPropertyEditorBase */]));
SurveyPropertyEditorFactory.registerEditor("string", function (property) {
return new SurveyStringPropertyEditor(property);
});
SurveyPropertyEditorFactory.registerEditor("dropdown", function (property) {
return new SurveyDropdownPropertyEditor(property);
});
SurveyPropertyEditorFactory.registerEditor("boolean", function (property) {
return new SurveyBooleanPropertyEditor(property);
});
SurveyPropertyEditorFactory.registerEditor("number", function (property) {
return new SurveyNumberPropertyEditor(property);
});
/***/ }),
/* 5 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__editorLocalization__ = __webpack_require__(0);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SurveyHelper; });
var ObjType;
(function (ObjType) {
ObjType[ObjType["Unknown"] = 0] = "Unknown";
ObjType[ObjType["Survey"] = 1] = "Survey";
ObjType[ObjType["Page"] = 2] = "Page";
ObjType[ObjType["Panel"] = 3] = "Panel";
ObjType[ObjType["Question"] = 4] = "Question";
})(ObjType || (ObjType = {}));
var SurveyHelper = (function () {
function SurveyHelper() {
}
SurveyHelper.getNewPageName = function (objs) {
return SurveyHelper.getNewName(objs, __WEBPACK_IMPORTED_MODULE_0__editorLocalization__["a" /* editorLocalization */].getString("ed.newPageName"));
};
SurveyHelper.getNewQuestionName = function (objs) {
return SurveyHelper.getNewName(objs, __WEBPACK_IMPORTED_MODULE_0__editorLocalization__["a" /* editorLocalization */].getString("ed.newQuestionName"));
};
SurveyHelper.getNewPanelName = function (objs) {
return SurveyHelper.getNewName(objs, __WEBPACK_IMPORTED_MODULE_0__editorLocalization__["a" /* editorLocalization */].getString("ed.newPanelName"));
};
SurveyHelper.generateNewName = function (name) {
var pos = name.length;
while (pos > 0 && name[pos - 1] >= "0" && name[pos - 1] <= "9") {
pos--;
}
var base = name.substr(0, pos);
var num = 0;
if (pos < name.length) {
num = parseInt(name.substr(pos));
}
num++;
return base + num;
};
SurveyHelper.getNewName = function (objs, baseName) {
var hash = {};
for (var i = 0; i < objs.length; i++) {
hash[objs[i].name] = true;
}
var num = 1;
while (true) {
if (!hash[baseName + num.toString()])
break;
num++;
}
return baseName + num.toString();
};
SurveyHelper.getObjectType = function (obj) {
if (!obj || !obj["getType"])
return ObjType.Unknown;
if (obj.getType() == "page")
return ObjType.Page;
if (obj.getType() == "panel")
return ObjType.Panel;
if (obj.getType() == "survey")
return ObjType.Survey;
if (obj["name"])
return ObjType.Question;
return ObjType.Unknown;
};
SurveyHelper.getObjectTypeStr = function (obj) {
var objType = SurveyHelper.getObjectType(obj);
if (objType === ObjType.Survey)
return "survey";
if (objType === ObjType.Page)
return "page";
if (objType === ObjType.Panel)
return "panel";
if (objType === ObjType.Question)
return "question";
return "unknown";
};
SurveyHelper.getObjectName = function (obj) {
if (obj["name"])
return obj["name"];
var objType = SurveyHelper.getObjectType(obj);
if (objType != ObjType.Page)
return "";
var data = obj["data"];
if (!data)
data = obj["survey"]; //TODO
var index = data.pages.indexOf(obj);
return "[Page " + (index + 1) + "]";
};
SurveyHelper.getElements = function (element, includeHidden) {
if (includeHidden === void 0) { includeHidden = false; }
if (!element)
return [];
if (element.getElementsInDesign)
return element.getElementsInDesign(includeHidden);
if (element.elements)
return element.elements;
return [];
};
SurveyHelper.isPropertyVisible = function (obj, property, onCanShowPropertyCallback) {
if (onCanShowPropertyCallback === void 0) { onCanShowPropertyCallback = null; }
if (!property || !property.visible)
return false;
if (onCanShowPropertyCallback && !onCanShowPropertyCallback(obj, property))
return false;
return true;
};
SurveyHelper.scrollIntoViewIfNeeded = function (el, pageEl) {
if (!el || !el.scrollIntoView || !pageEl)
return;
var rect = el.getBoundingClientRect();
var height = pageEl.offsetParent
? pageEl.offsetParent.clientHeight
: pageEl.clientHeight;
if (rect.top < pageEl.offsetTop) {
el.scrollIntoView();
}
else {
if (rect.bottom > height &&
(rect.top > pageEl.offsetTop + height || rect.height < height)) {
el.scrollIntoView(false);
}
}
};
return SurveyHelper;
}());
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(3);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_knockout__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__editorLocalization__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_survey_knockout__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_survey_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_survey_knockout__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_utils__ = __webpack_require__(8);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__stylesmanager__ = __webpack_require__(19);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SurveyForDesigner; });
/* harmony export (immutable) */ __webpack_exports__["b"] = registerAdorner;
/* harmony export (immutable) */ __webpack_exports__["c"] = removeAdorners;
/* unused harmony export applyAdornerClass */
var SurveyForDesigner = (function (_super) {
__WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyForDesigner, _super);
function SurveyForDesigner(jsonObj, renderedElement, css) {
if (jsonObj === void 0) { jsonObj = null; }
if (renderedElement === void 0) { renderedElement = null; }
if (css === void 0) { css = null; }
var _this = _super.call(this, jsonObj, renderedElement, css) || this;
_this.onSelectedElementChanged = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"]();
_this.onEditButtonClick = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"]();
_this.onGetMenuItems = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"]();
_this.onElementDoubleClick = new __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Event"]();
var self = _this;
_this.setDesignMode(true);
_this.onAfterRenderPage.add(function (sender, options) {
options.page["onAfterRenderPage"](options.htmlElement);
});
_this.onAfterRenderQuestion.add(function (sender, options) {
options.question["onAfterRenderQuestion"](options.htmlElement);
});
_this.onAfterRenderPanel.add(function (sender, options) {
options.panel["onAfterRenderPanel"](options.htmlElement);
});
_this.editQuestionClick = function () {
self.onEditButtonClick.fire(self, null);
};
_this.onUpdateQuestionCssClasses.add(onUpdateQuestionCssClasses);
_this.onUpdatePanelCssClasses.add(onUpdateQuestionCssClasses);
return _this;
}
SurveyForDesigner.prototype.updateElementAllowingOptions = function (obj) {
if (this.onUpdateElementAllowingOptions && obj["allowingOptions"]) {
obj["allowingOptions"].obj = obj;
this.onUpdateElementAllowingOptions(obj["allowingOptions"]);
}
};
SurveyForDesigner.prototype.getMenuItems = function (obj) {
var items = [];
var options = { obj: obj, items: items };
this.onGetMenuItems.fire(this, options);
return options.items;
};
Object.defineProperty(SurveyForDesigner.prototype, "selectedElement", {
get: function () {
return this.selectedElementValue;
},
set: function (value) {
if (value && value.selectedElementInDesign)
value = value.selectedElementInDesign;
if (value == this.selectedElementValue)
return;
var oldValue = this.selectedElementValue;
this.selectedElementValue = value;
if (oldValue != null && oldValue["onSelectedElementChanged"]) {
oldValue["onSelectedElementChanged"]();
}
if (this.selectedElementValue != null &&
this.selectedElementValue["onSelectedElementChanged"]) {
this.selectedElementValue["onSelectedElementChanged"]();
}
this.onSelectedElementChanged.fire(this, {
oldElement: oldValue,
newElement: value
});
},
enumerable: true,
configurable: true
});
SurveyForDesigner.prototype.doElementDoubleClick = function (obj) {
this.onElementDoubleClick.fire(this, { element: obj });
};
SurveyForDesigner.prototype.getEditorLocString = function (value) {
return __WEBPACK_IMPORTED_MODULE_2__editorLocalization__["a" /* editorLocalization */].getString(value);
};
return SurveyForDesigner;
}(__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Survey"]));
function getSurvey(el) {
if (!el)
return null;
var res = el["survey"];
if (res)
return res;
return el["data"];
}
function panelBaseOnCreating(self) {
self.dragEnterCounter = 0;
self.emptyElement = null;
self.koRows.subscribe(function (changes) {
if (self.emptyElement) {
self.emptyElement.style.display = self.koRows().length > 0 ? "none" : "";
}
});
}
function elementOnCreating(surveyElement) {
surveyElement.allowingOptions = {
allowDelete: true,
allowEdit: true,
allowCopy: true,
allowAddToToolbox: true,
allowDragging: true,
allowChangeType: true,
allowShowHideTitle: true,
allowChangeRequired: true
};
surveyElement.dragDropHelperValue = null;
surveyElement.dragDropHelper = function () {
if (surveyElement.dragDropHelperValue == null) {
surveyElement.dragDropHelperValue = getSurvey(surveyElement)["dragDropHelper"];
}
return surveyElement.dragDropHelperValue;
};
surveyElement.renderedElement = null;
surveyElement.koIsDragging = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](false);
surveyElement.koIsSelected = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](false);
surveyElement.koIsDragging.subscribe(function (newValue) {
if (surveyElement.renderedElement) {
surveyElement.renderedElement.style.opacity = newValue ? 0.4 : 1;
}
});
surveyElement.koIsSelected.subscribe(function (newValue) {
if (surveyElement.renderedElement) {
if (newValue) {
surveyElement.renderedElement.classList.add("svd_q_selected", "svd-main-border-color");
}
else {
surveyElement.renderedElement.classList.remove("svd_q_selected", "svd-main-border-color");
}
}
});
}
function addEmptyPanelElement(root, dragDropHelper, self) {
var eDiv = document.createElement("div");
eDiv.className = "well card card-block";
eDiv.ondragover = function (e) {
dragDropHelper.doDragDropOver(e, self);
};
var eSpan = document.createElement("span");
eSpan.textContent = getSurvey(self).getEditorLocString("survey.dropQuestion");
eDiv.appendChild(eSpan);
root.appendChild(eDiv);
return eDiv;
}
function createQuestionDesignItem(obj, item) {
var res = document.createElement("li");
var btn = document.createElement("button");
btn.innerText = item.text;
var onClick = item.onClick;
btn.onclick = function () {
onClick(obj, item);
};
btn.className = "btn btn-primary btn-sm btn-xs";
res.appendChild(btn);
return res;
}
function elementOnAfterRendering(domElement, surveyElement, isPanel, disable) {
surveyElement.renderedElement = domElement;
surveyElement.renderedElement.classList.add("svd_question");
if (__WEBPACK_IMPORTED_MODULE_5__stylesmanager__["a" /* StylesManager */].currentTheme() === "bootstrap") {
surveyElement.renderedElement.classList.add("svd-dark-bg-color");
}
surveyElement.renderedElement.classList.add("svd_q_design_border");
getSurvey(surveyElement).updateElementAllowingOptions(surveyElement);
if (surveyElement.koIsSelected())
surveyElement.renderedElement.classList.add("svd_q_selected", "svd-main-border-color");
surveyElement.dragDropHelper().attachToElement(domElement, surveyElement);
domElement.tabindex = "0";
domElement.onclick = function (e) {
if (!e["markEvent"]) {
e["markEvent"] = true;
if (surveyElement.parent) {
getSurvey(surveyElement)["selectedElement"] = surveyElement;
}
}
};
domElement.onkeyup = function (e) {
var char = e.which || e.keyCode;
if (char === 0x13 || char === 0x20) {
domElement.click();
}
};
// el.onkeydown = function(e) {
// if (e.witch == 46) getSurvey(surveyElement).deleteCurrentObjectClick();
// return true;
// };
domElement.ondblclick = function (e) {
getSurvey(surveyElement).doElementDoubleClick(surveyElement);
};
disable = disable && !(surveyElement.getType() == "paneldynamic"); //TODO
if (disable) {
var childs = domElement.childNodes;
for (var i = 0; i < childs.length; i++) {
if (childs[i].style)
childs[i].style.pointerEvents = "none";
}
}
var setTabIndex = function (element) {
element.tabIndex = -1;
};
["input", "select", "textarea"].forEach(function (sel) {
var elements = domElement.querySelectorAll(sel);
elements.forEach(setTabIndex);
});
addAdorner(domElement, surveyElement);
}
var adornersConfig = {};
function registerAdorner(name, adorner) {
if (!adornersConfig[name]) {
adornersConfig[name] = [];
}
adornersConfig[name].push(adorner);
}
function removeAdorners(names) {
if (names === void 0) { names = undefined; }
if (names !== undefined) {
(names || []).forEach(function (name) { return delete adornersConfig[name]; });
}
else {
adornersConfig = {};
}
}
function onUpdateQuestionCssClasses(survey, options) {
var classes = options.panel ? options.cssClasses.panel : options.cssClasses;
Object.keys(adornersConfig).forEach(function (element) {
adornersConfig[element].forEach(function (adorner) {
var classesElementName = adorner.getElementName(options.question || options.panel);
var adornerMarkerClass = adorner.getMarkerClass(options.question || options.panel);
classes[classesElementName] = applyAdornerClass(classes[classesElementName], adornerMarkerClass);
});
});
}
function applyAdornerClass(classes, adornerClass) {
var result = classes;
if (!!adornerClass) {
result = !!result ? result + " " + adornerClass : adornerClass;
}
return result;
}
function filterNestedQuestions(rootQuestionNode, elements) {
var targetElements = [];
for (var i = 0; i < elements.length; i++) {
var questionElement = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__utils_utils__["b" /* findParentNode */])("svd_question", elements[i]);
if (questionElement === rootQuestionNode) {
targetElements.push(elements[i]);
}
}
return targetElements;
}
function addAdorner(node, model) {
Object.keys(adornersConfig).forEach(function (element) {
adornersConfig[element].forEach(function (adorner) {
var elementClass = adorner.getMarkerClass(model);
if (!!elementClass) {
var elements = node.querySelectorAll("." + elementClass.replace(/\s/g, "."));
var temp = [];
for (var i = 0; i < elements.length; i++) {
temp.push(elements[i]);
}
elements = temp;
if (node.className.split(" ").indexOf(elementClass) !== -1) {
elements.unshift(node);
}
elements = filterNestedQuestions(node, elements);
if (elements.length === 0 &&
node.className.indexOf(elementClass) !== -1) {
elements = [node];
}
if (elements.length > 0) {
adorner.afterRender(elements, model, getSurvey(model).getEditor());
}
}
});
});
}
__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Page"].prototype["onCreating"] = function () {
panelBaseOnCreating(this);
};
__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Page"].prototype["onAfterRenderPage"] = function (el) {
if (!getSurvey(this).isDesignMode)
return;
var self = this;
var dragDropHelper = getSurvey(this)["dragDropHelper"];
this.dragEnterCounter = 0;
el.ondragenter = function (e) {
e.preventDefault();
self.dragEnterCounter++;
};
el.ondragleave = function (e) {
self.dragEnterCounter--;
if (self.dragEnterCounter === 0)
dragDropHelper.doLeavePage(e);
};
el.ondragover = function (e) {
return false;
};
el.ondrop = function (e) {
dragDropHelper.doDrop(e);
};
// if (this.elements.length == 0) {
// this.emptyElement = addEmptyPanelElement(el, dragDropHelper, self);
// }
};
__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Panel"].prototype["onCreating"] = function () {
panelBaseOnCreating(this);
elementOnCreating(this);
};
__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Panel"].prototype["onAfterRenderPanel"] = function (el) {
if (!getSurvey(this).isDesignMode)
return;
var rows = this.koRows();
var self = this;
if (this.elements.length == 0) {
this.emptyElement = addEmptyPanelElement(el, self.dragDropHelper(), self);
}
elementOnAfterRendering(el, this, true, this.koIsDragging());
};
__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Panel"].prototype["onSelectedElementChanged"] = function () {
if (getSurvey(this) == null)
return;
this.koIsSelected(getSurvey(this)["selectedElementValue"] == this);
};
var questionPrototype = !!__WEBPACK_IMPORTED_MODULE_3_survey_knockout__["QuestionBase"]
? __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["QuestionBase"].prototype
: __WEBPACK_IMPORTED_MODULE_3_survey_knockout__["Question"].prototype;
questionPrototype["onCreating"] = function () {
elementOnCreating(this);
};
questionPrototype["onAfterRenderQuestion"] = function (el) {
if (!getSurvey(this).isDesignMode)
return;
elementOnAfterRendering(el, this, false, true);
};
questionPrototype["onSelectedElementChanged"] = function () {
if (getSurvey(this) == null)
return;
this.koIsSelected(getSurvey(this)["selectedElementValue"] == this);
};
/***/ }),
/* 7 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(3);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_knockout___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_knockout__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__propertyEditorBase__ = __webpack_require__(13);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__propertyEditorFactory__ = __webpack_require__(4);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__editorLocalization__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_utils__ = __webpack_require__(8);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_rmodal__ = __webpack_require__(35);
/* unused harmony export SurveyPropertyModalEditorCustomWidget */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SurveyPropertyModalEditor; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SurveyPropertyTextEditor; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return SurveyPropertyHtmlEditor; });
var SurveyPropertyModalEditorCustomWidget = (function () {
function SurveyPropertyModalEditorCustomWidget(json) {
this.json = json;
}
SurveyPropertyModalEditorCustomWidget.prototype.afterRender = function (editor, el) {
if (this.json && this.json.afterRender) {
if (!el.id) {
el.id =
SurveyPropertyModalEditorCustomWidget.customWidgetName +
SurveyPropertyModalEditorCustomWidget.customWidgetId;
SurveyPropertyModalEditorCustomWidget.customWidgetId++;
}
this.json.afterRender(editor, el);
if (this.json.destroy) {
var self = this;
__WEBPACK_IMPORTED_MODULE_1_knockout__["utils"].domNodeDisposal.addDisposeCallback(el, function () {
self.destroy(editor, el);
});
}
}
};
SurveyPropertyModalEditorCustomWidget.prototype.destroy = function (editor, el) {
if (this.json && this.json.destroy) {
this.json.destroy(editor, el);
}
};
return SurveyPropertyModalEditorCustomWidget;
}());
SurveyPropertyModalEditorCustomWidget.customWidgetId = 1;
SurveyPropertyModalEditorCustomWidget.customWidgetName = "modalEditorCustomWidget";
var SurveyPropertyModalEditor = (function (_super) {
__WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyPropertyModalEditor, _super);
function SurveyPropertyModalEditor(property) {
var _this = _super.call(this, property) || this;
_this.isShowingModalValue = false;
_this.koTitleCaption = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"]("");
_this.koHtmlTop = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"]("");
_this.koHtmlBottom = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"]("");
if (_this.property) {
_this.koTitleCaption(__WEBPACK_IMPORTED_MODULE_4__editorLocalization__["a" /* editorLocalization */]
.getString("pe.editProperty")["format"](_this.property.name));
}
var name = property ? property.name : "";
_this.modalName =
"modelEditor" + _this.editorType + SurveyPropertyModalEditor.idCounter;
SurveyPropertyModalEditor.idCounter++;
_this.modalNameTarget = "#" + _this.modalName;
var self = _this;
_this.koShowApplyButton = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](true);
self.onHideModal = function () { };
self.onApplyClick = function () {
self.apply();
};
self.onOkClick = function () {
self.apply();
if (!self.koHasError())
self.onHideModal();
};
self.onResetClick = function () {
self.updateValue();
self.onHideModal();
};
self.onShowModal = function () {
self.beforeShow();
var modal = new __WEBPACK_IMPORTED_MODULE_6_rmodal__["a" /* default */](document.querySelector(self.modalNameTarget), {
bodyClass: "",
closeTimeout: 100,
dialogOpenClass: "animated fadeInDown",
focus: false
});
modal.open();
document.addEventListener("keydown", function (ev) {
modal.keydown(ev);
}, false);
self.onHideModal = function () {
self.beforeCloseModal();
modal.close();
};
if (!!this.elements) {
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__utils_utils__["c" /* focusFirstControl */])(this.elements);
}
};
self.koAfterRender = function (el, con) {
return self.afterRender(el, con);
};
return _this;
}
SurveyPropertyModalEditor.registerCustomWidget = function (editorType, json) {
if (!SurveyPropertyModalEditor.customWidgets)
SurveyPropertyModalEditor.customWidgets = {};
SurveyPropertyModalEditor.customWidgets[editorType] = new SurveyPropertyModalEditorCustomWidget(json);
};
SurveyPropertyModalEditor.getCustomWidget = function (editorType) {
if (!SurveyPropertyModalEditor.customWidgets)
return null;
return SurveyPropertyModalEditor.customWidgets[editorType];
};
SurveyPropertyModalEditor.prototype.setup = function () {
_super.prototype.setup.call(this);
this.beforeShow();
};
Object.defineProperty(SurveyPropertyModalEditor.prototype, "isModal", {
get: function () {
return true;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SurveyPropertyModalEditor.prototype, "isShowingModal", {
get: function () {
return this.isShowingModalValue;
},
enumerable: true,
configurable: true
});
SurveyPropertyModalEditor.prototype.beforeShow = function () {
this.isShowingModalValue = true;
this.updateValue();
};
SurveyPropertyModalEditor.prototype.beforeCloseModal = function () {
this.isShowingModalValue = false;
};
SurveyPropertyModalEditor.prototype.onOptionsChanged = function () {
this.koShowApplyButton = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"](!this.options || this.options.showApplyButtonInEditors);
};
SurveyPropertyModalEditor.prototype.setObject = function (value) {
this.editingObject = value;
_super.prototype.setObject.call(this, value);
if (this.options && this.property) {
var html = this.options.onPropertyEditorModalShowDescriptionCallback(this.property.name, value);
if (html) {
if (html.top)
this.koHtmlTop(html.top);
if (html.bottom)
this.koHtmlBottom(html.bottom);
}
}
};
Object.defineProperty(SurveyPropertyModalEditor.prototype, "isEditable", {
get: function () {
return false;
},
enumerable: true,
configurable: true
});
SurveyPropertyModalEditor.prototype.afterRender = function (elements, con) {
this.elements = elements;
var customWidget = SurveyPropertyModalEditor.getCustomWidget(this.editorType);
if (!!customWidget) {
var el = this.GetFirstNonTextElement(elements);
var tEl = elements[0];
if (tEl.nodeName == "#text")
tEl.data = "";
tEl = elements[elements.length - 1];
if (tEl.nodeName == "#text")
tEl.data = "";
customWidget.afterRender(this, el);
}
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__utils_utils__["c" /* focusFirstControl */])(elements);
};
SurveyPropertyModalEditor.prototype.GetFirstNonTextElement = function (elements) {
if (!elements || !elements.length)
return;
for (var i = 0; i < elements.length; i++) {
if (elements[i].nodeName != "#text" && elements[i].nodeName != "#comment")
return elements[i];
}
return null;
};
return SurveyPropertyModalEditor;
}(__WEBPACK_IMPORTED_MODULE_2__propertyEditorBase__["a" /* SurveyPropertyEditorBase */]));
SurveyPropertyModalEditor.idCounter = 1;
var SurveyPropertyTextEditor = (function (_super) {
__WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SurveyPropertyTextEditor, _super);
function SurveyPropertyTextEditor(property) {
var _this = _super.call(this, property) || this;
_this.koTextValue = __WEBPACK_IMPORTED_MODULE_1_knockout__["observable"]();
var self = _this;
_this.koTextValue.subscribe(function (newValue) {
self.onkoTextValueChanged(newValue);
});
return _this;
}
Object.defineProperty(SurveyPropertyTextEditor.prototype, "editorType", {
get: function () {
return "text";
},
enumerable: true,
configurable: true
});
Object.defineProperty(SurveyPropertyTextEditor.prototype, "isEditable", {
get: function () {
return true;
},
enumerable: true,
configurable: true
});
SurveyPropertyTextEditor.prototype.getValueText = function (value) {
if (!value)
return null;
var str = value;
if (str.length > 20) {
str = str.substr(0, 20) + "...";
}
return str;
};
SurveyPropertyTextEditor.prototype.onkoTextValueChanged = function (newValue) { };
SurveyPropertyTextEditor.prototype.onValueChanged = function () {
this.koTextValue(this.editingValue);
};
SurveyPropertyTextEditor.proto