diff --git a/application/controllers/admin/questionedit.php b/application/controllers/admin/questionedit.php index 9df933c9b0b..ba1f98b7c5d 100644 --- a/application/controllers/admin/questionedit.php +++ b/application/controllers/admin/questionedit.php @@ -28,7 +28,6 @@ */ class questionedit extends Survey_Common_Action { - public function view($surveyid, $gid, $qid) { $aData = array(); @@ -89,30 +88,45 @@ public function view($surveyid, $gid, $qid) **** All called via ajax ****/ - public function getPossibleLanguages($iSurveyId){ + public function getPossibleLanguages($iSurveyId) + { $iSurveyId = (int) $iSurveyId; $aLanguages = Survey::model()->findByPk($iSurveyId)->allLanguages; $this->renderJSON($aLanguages); } - public function getQuestionData($iQuestionId){ + public function getQuestionData($iQuestionId) + { $iQuestionId = (int) $iQuestionId; $oQuestion = Question::model()->findByPk($iQuestionId); - - $this->renderJSON(['question' => $oQuestion, 'i10n' => $oQuestion->questionL10ns]); + $aLanguages = []; + $aAllLanguages = getLanguageData(false, Yii::app()->session['adminlang']); + $aSurveyLanguages = $oQuestion->survey->getAllLanguages(); + array_walk($aSurveyLanguages, function ($lngString) use (&$aLanguages, $aAllLanguages) { + $aLanguages[$lngString] = $aAllLanguages[$lngString]['description']; + }); + $this->renderJSON([ + 'question' => $oQuestion, + 'i10n' => $oQuestion->questionL10ns, + 'languages' => $aLanguages, + 'mainLanguage' => $oQuestion->survey->language + ]); } - public function getQuestionAttributeData($iQuestionId){ + public function getQuestionAttributeData($iQuestionId) + { $iQuestionId = (int) $iQuestionId; $aQuestionAttributes = QuestionAttribute::model()->getQuestionAttributes($iQuestionId); $this->renderJSON($aQuestionAttributes); } - public function getQuestionTypeList() { + public function getQuestionTypeList() + { $this->renderJSON(QuestionType::modelsAttributes()); } - public function getGeneralOptions($iQuestionId, $sQuestionType=null){ + public function getGeneralOptions($iQuestionId, $sQuestionType=null) + { $oQuestion = Question::model()->findByPk($iQuestionId); $this->renderJSON($oQuestion->getDataSetObject()->getGeneralSettingsArray(null, $sQuestionType)); } @@ -126,18 +140,19 @@ public function getGeneralOptions($iQuestionId, $sQuestionType=null){ * * @return void */ - public function getRenderedPreview($iQuestionId, $sLanguage, $root=false) { + public function getRenderedPreview($iQuestionId, $sLanguage, $root=false) + { $root = (bool) $root; $oQuestion = Question::model()->findByPk($iQuestionId); $changedText = App()->request->getPost('changedText', []); $changedType = App()->request->getPost('changedType', $oQuestion->type); - if($changedText !== []) { + if ($changedText !== []) { Yii::app()->session['edit_'.$iQuestionId.'_changedText'] = $changedText; } else { - $changedText = isset(Yii::app()->session['edit_'.$iQuestionId.'_changedText']) - ? Yii::app()->session['edit_'.$iQuestionId.'_changedText'] + $changedText = isset(Yii::app()->session['edit_'.$iQuestionId.'_changedText']) + ? Yii::app()->session['edit_'.$iQuestionId.'_changedText'] : []; } @@ -169,16 +184,16 @@ public function getRenderedPreview($iQuestionId, $sLanguage, $root=false) { 'number' => $oQuestion->question_order, 'code' => $oQuestion->title, 'text' => isset($changedText['question']) ? $changedText['question'] : $oQuestion->questionL10ns[$sLanguage]->question, - 'help' => [ - 'show' => true, - 'text' => ( isset($changedText['help']) ? $changedText['help'] : $oQuestion->questionL10ns[$sLanguage]->help ) + 'help' => [ + 'show' => true, + 'text' => (isset($changedText['help']) ? $changedText['help'] : $oQuestion->questionL10ns[$sLanguage]->help) ], ] ); $oTemplate = Template::model()->getInstance($oQuestion->survey->template); Yii::app()->twigRenderer->renderTemplateForQuestionEditPreview( - '/subviews/survey/question_container.twig', - ['aSurveyInfo' => $aSurveyInfo, 'aQuestion' => $aQuestion, 'session' => $_SESSION], + '/subviews/survey/question_container.twig', + ['aSurveyInfo' => $aSurveyInfo, 'aQuestion' => $aQuestion, 'session' => $_SESSION], $root ); @@ -188,13 +203,15 @@ public function getRenderedPreview($iQuestionId, $sLanguage, $root=false) { /** * Method to render an array as a json document - * + * * @param array $aData * @return void */ - protected function renderJSON($aData){ - if(Yii::app()->getConfig('debug') > 0) + protected function renderJSON($aData) + { + if (Yii::app()->getConfig('debug') > 0) { $aData['debug'] = [$_POST, $_GET]; + } echo Yii::app()->getController()->renderPartial('/admin/super/_renderJson', ['data' => $aData], true, false); return; @@ -211,5 +228,4 @@ protected function _renderWrappedTemplate($sAction = 'survey/Question2', $aViewU { parent::_renderWrappedTemplate($sAction, $aViewUrls, $aData, $sRenderFile); } - -} \ No newline at end of file +} diff --git a/application/models/QuestionBaseDataSet.php b/application/models/QuestionBaseDataSet.php index f45a592d68b..e9f7a228bbe 100644 --- a/application/models/QuestionBaseDataSet.php +++ b/application/models/QuestionBaseDataSet.php @@ -96,6 +96,7 @@ public function getQuestionThemeOption() 'formElementName' => false, //false means identical to id 'formElementHelp' => gT("Use a customized question theme for this question"), 'formElement' => 'select', + 'formElementValue' => isset($aQuestionTemplateAttributes['value']) ? $aQuestionTemplateAttributes['value'] : '', 'formElementOptions' => [ 'classes' => ['form-control'], 'options' => $aOptionsArray, @@ -134,6 +135,7 @@ function ($oQuestionGroup) { 'formElementName' => false, 'formElementHelp' => gT("If you want to change the question group this question is in."), 'formElement' => 'select', + 'formElementValue' => $this->oQuestion->gid, 'formElementOptions' => [ 'classes' => ['form-control'], 'options' => $aGroupOptions, @@ -150,14 +152,15 @@ public function getOtherSwitch() 'formElementId' => 'other', 'formElementName' => false, 'formElementHelp' => gT('Activate the "other" option for your question'), - 'formElement' => 'switcher', + 'formElement' => 'checkboxswitch', + 'formElementValue' => $this->oQuestion->other == 'Y', 'formElementOptions' => [ 'classes' => [], 'switchData' => [ - 'on-text' => "On", - 'off-text' => "Off", - 'on-color' => "primary", - 'off-color' => "warning", + 'onText' => gT("On"), + 'offText' => gT("Off"), + 'onColor' => "primary", + 'offColor' => "warning", 'size' => "small", ], ], @@ -173,14 +176,15 @@ public function getMandatorySwitch() 'formElementId' => 'mandatory', 'formElementName' => false, 'formElementHelp' => gT('Makes this question mandatory in your survey'), - 'formElement' => 'switcher', + 'formElement' => 'checkboxswitch', + 'formElementValue' => $this->oQuestion->mandatory == 'Y', 'formElementOptions' => [ 'classes' => [], 'switchData' => [ - 'on-text' => "On", - 'off-text' => "Off", - 'on-color' => "primary", - 'off-color' => "warning", + 'onText' => gT("On"), + 'offText' => gT("Off"), + 'onColor' => "primary", + 'offColor' => "warning", 'size' => "small", ], ], @@ -190,6 +194,7 @@ public function getMandatorySwitch() public function getRelevanceEquationInput() { + $inputType = 'textarea'; $relevanceIntputHtml = '' .'
{
@@ -200,6 +205,8 @@ public function getRelevanceEquationInput() .'
}
' .'
'; if (count($this->oQuestion->conditions) > 0) { + $inputType = 'text'; + $content = gT("Note: You can't edit the relevance equation because there are currently conditions set for this question."); $relevanceIntputHtml .= '
' . gT("Note: You can't edit the relevance equation because there are currently conditions set for this question.") .'
'; @@ -210,12 +217,11 @@ public function getRelevanceEquationInput() 'title' => gT('Relevance equation'), 'formElementId' => 'relevance', 'formElementName' => false, - 'formElementHelp' => (count($this->oQuestion->conditions)>0 - ? gT("Note: You can't edit the relevance equation because there are currently conditions set for this question.") - : gT("The relevance equation can be used to add branching logic. This is a rather advanced topic. If you are unsure, just leave it be.")), + 'formElementHelp' => (count($this->oQuestion->conditions)>0 ? '' :gT("The relevance equation can be used to add branching logic. This is a rather advanced topic. If you are unsure, just leave it be.")), 'formElement' => 'textarea', + 'formElementValue' => $this->oQuestion->relevance, 'formElementOptions' => [ - 'classes' => 'form-control', + 'classes' => ['form-control'], 'attributes' => [ 'rows' => 1, 'readonly' => count($this->oQuestion->conditions)>0 @@ -232,14 +238,15 @@ public function getRelevanceEquationInput() public function getValidationInput() { return [ - 'name' => 'RelevanceEquation', - 'title' => gT('Relevance equation'), + 'name' => 'Validation', + 'title' => gT('Input validation'), 'formElementId' => 'preg', 'formElementName' => false, 'formElementHelp' => gT('You can add any regular expression based validation in here'), - 'formElement' => 'input', + 'formElement' => 'textinput', + 'formElementValue' => $this->oQuestion->preg, 'formElementOptions' => [ - 'classes' => 'form-control', + 'classes' => ['form-control'], 'inputGroup' => [ 'prefix' => 'RegExp', ] diff --git a/assets/packages/questioneditor/build/lsquestioneditor.css b/assets/packages/questioneditor/build/lsquestioneditor.css index 5b8649621ed..6f6499d3d5d 100644 --- a/assets/packages/questioneditor/build/lsquestioneditor.css +++ b/assets/packages/questioneditor/build/lsquestioneditor.css @@ -14,3 +14,9 @@ #advancedQuestionEditor .ck.ck-content { min-height: 10rem; } + +#advancedQuestionEditor .question-option-general-container .question-option-general-setting-block { + margin: 0.25rem 0 0.5rem 0; } + #advancedQuestionEditor .question-option-general-container .question-option-general-setting-block .question-option-help { + margin: 0.5rem 0; + padding: .75rem; } diff --git a/assets/packages/questioneditor/build/lsquestioneditor.debug.js b/assets/packages/questioneditor/build/lsquestioneditor.debug.js index f9f904a5764..4538d6989e8 100644 --- a/assets/packages/questioneditor/build/lsquestioneditor.debug.js +++ b/assets/packages/questioneditor/build/lsquestioneditor.debug.js @@ -13,20 +13,131 @@ /******/__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=19);/******/})(/************************************************************************//******/[/* 0 *//***/function(module,exports,__webpack_require__){var freeGlobal=__webpack_require__(15);/** Detect free variable `self`. */var freeSelf=(typeof self==='undefined'?'undefined':_typeof(self))=='object'&&self&&self.Object===Object&&self;/** Used as a reference to the global object. */var root=freeGlobal||freeSelf||Function('return this')();module.exports=root;/***/},/* 1 *//***/function(module,exports,__webpack_require__){var baseIsNative=__webpack_require__(56),getValue=__webpack_require__(61);/** +/******/return __webpack_require__(__webpack_require__.s=47);/******/})(/************************************************************************//******/[/* 0 *//***/function(module,exports,__webpack_require__){var freeGlobal=__webpack_require__(27);/** Detect free variable `self`. */var freeSelf=(typeof self==='undefined'?'undefined':_typeof(self))=='object'&&self&&self.Object===Object&&self;/** Used as a reference to the global object. */var root=freeGlobal||freeSelf||Function('return this')();module.exports=root;/***/},/* 1 *//***/function(module,exports){/* globals __VUE_SSR_CONTEXT__ */// this module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle +module.exports=function normalizeComponent(rawScriptExports,compiledTemplate,injectStyles,scopeId,moduleIdentifier/* server only */){var esModule;var scriptExports=rawScriptExports=rawScriptExports||{};// ES6 modules interop +var type=_typeof(rawScriptExports.default);if(type==='object'||type==='function'){esModule=rawScriptExports;scriptExports=rawScriptExports.default;}// Vue.extend constructor export interop +var options=typeof scriptExports==='function'?scriptExports.options:scriptExports;// render functions +if(compiledTemplate){options.render=compiledTemplate.render;options.staticRenderFns=compiledTemplate.staticRenderFns;}// scopedId +if(scopeId){options._scopeId=scopeId;}var hook;if(moduleIdentifier){// server build +hook=function hook(context){// 2.3 injection +context=context||// cached call +this.$vnode&&this.$vnode.ssrContext||// stateful +this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext;// functional +// 2.2 with runInNewContext: true +if(!context&&typeof __VUE_SSR_CONTEXT__!=='undefined'){context=__VUE_SSR_CONTEXT__;}// inject component styles +if(injectStyles){injectStyles.call(this,context);}// register component module identifier for async chunk inferrence +if(context&&context._registeredComponents){context._registeredComponents.add(moduleIdentifier);}};// used by ssr in case component is cached and beforeCreate +// never gets called +options._ssrRegister=hook;}else if(injectStyles){hook=injectStyles;}if(hook){var functional=options.functional;var existing=functional?options.render:options.beforeCreate;if(!functional){// inject component registration as beforeCreate hook +options.beforeCreate=existing?[].concat(existing,hook):[hook];}else{// register for functioal component in vue file +options.render=function renderWithStyleInjection(h,context){hook.call(context);return existing(h,context);};}}return{esModule:esModule,exports:scriptExports,options:options};};/***/},/* 2 *//***/function(module,exports){/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */function isObject(value){var type=typeof value==='undefined'?'undefined':_typeof(value);return value!=null&&(type=='object'||type=='function');}module.exports=isObject;/***/},/* 3 *//***/function(module,exports){/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */function isObjectLike(value){return value!=null&&(typeof value==='undefined'?'undefined':_typeof(value))=='object';}module.exports=isObjectLike;/***/},/* 4 *//***/function(module,exports,__webpack_require__){var baseIsNative=__webpack_require__(79),getValue=__webpack_require__(82);/** * Gets the native function at `key` of `object`. * * @private * @param {Object} object The object to query. * @param {string} key The key of the method to get. * @returns {*} Returns the function if it's native, else `undefined`. - */function getNative(object,key){var value=getValue(object,key);return baseIsNative(value)?value:undefined;}module.exports=getNative;/***/},/* 2 *//***/function(module,exports){var g;// This works in non-strict mode -g=function(){return this;}();try{// This works if eval is allowed (see CSP) -g=g||Function("return this")()||(1,eval)("this");}catch(e){// This works if the window reference is available -if((typeof window==='undefined'?'undefined':_typeof(window))==="object")g=window;}// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} -module.exports=g;/***/},/* 3 *//***/function(module,exports){/* + */function getNative(object,key){var value=getValue(object,key);return baseIsNative(value)?value:undefined;}module.exports=getNative;/***/},/* 5 *//***/function(module,exports,__webpack_require__){var _Symbol=__webpack_require__(20),getRawTag=__webpack_require__(64),objectToString=__webpack_require__(65);/** `Object#toString` result references. */var nullTag='[object Null]',undefinedTag='[object Undefined]';/** Built-in value references. */var symToStringTag=_Symbol?_Symbol.toStringTag:undefined;/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */function baseGetTag(value){if(value==null){return value===undefined?undefinedTag:nullTag;}return symToStringTag&&symToStringTag in Object(value)?getRawTag(value):objectToString(value);}module.exports=baseGetTag;/***/},/* 6 *//***/function(module,exports){/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */var isArray=Array.isArray;module.exports=isArray;/***/},/* 7 *//***/function(module,exports,__webpack_require__){var isFunction=__webpack_require__(22),isLength=__webpack_require__(36);/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */function isArrayLike(value){return value!=null&&isLength(value.length)&&!isFunction(value);}module.exports=isArrayLike;/***/},/* 8 *//***/function(module,exports){/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */// css base code, injected by the css-loader @@ -38,11 +149,11 @@ list.i=function(modules,mediaQuery){if(typeof modules==="string")modules=[[null, // I hope this will never occur (Hey this way we have smaller bundles) if(typeof item[0]!=="number"||!alreadyImportedModules[item[0]]){if(mediaQuery&&!item[2]){item[2]=mediaQuery;}else if(mediaQuery){item[2]="("+item[2]+") and ("+mediaQuery+")";}list.push(item);}}};return list;};function cssWithMappingToString(item,useSourceMap){var content=item[1]||'';var cssMapping=item[3];if(!cssMapping){return content;}if(useSourceMap&&typeof btoa==='function'){var sourceMapping=toComment(cssMapping);var sourceURLs=cssMapping.sources.map(function(source){return'/*# sourceURL='+cssMapping.sourceRoot+source+' */';});return[content].concat(sourceURLs).concat([sourceMapping]).join('\n');}return[content].join('\n');}// Adapted from convert-source-map (MIT) function toComment(sourceMap){// eslint-disable-next-line no-undef -var base64=btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));var data='sourceMappingURL=data:application/json;charset=utf-8;base64,'+base64;return'/*# '+data+' */';}/***/},/* 4 *//***/function(module,exports,__webpack_require__){/* +var base64=btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));var data='sourceMappingURL=data:application/json;charset=utf-8;base64,'+base64;return'/*# '+data+' */';}/***/},/* 9 *//***/function(module,exports,__webpack_require__){/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra Modified by Evan You @yyx990803 -*/var hasDocument=typeof document!=='undefined';if(typeof DEBUG!=='undefined'&&DEBUG){if(!hasDocument){throw new Error('vue-style-loader cannot be used in a non-browser environment. '+"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");}}var listToStyles=__webpack_require__(25);/* +*/var hasDocument=typeof document!=='undefined';if(typeof DEBUG!=='undefined'&&DEBUG){if(!hasDocument){throw new Error('vue-style-loader cannot be used in a non-browser environment. '+"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");}}var listToStyles=__webpack_require__(53);/* type StyleObject = { id: number; parts: Array @@ -73,81 +184,188 @@ var styleIndex=singletonCounter++;styleElement=singletonElement||(singletonEleme styleElement=createStyleElement();update=applyToTag.bind(null,styleElement);remove=function remove(){styleElement.parentNode.removeChild(styleElement);};}update(obj);return function updateStyle(newObj/* StyleObjectPart */){if(newObj){if(newObj.css===obj.css&&newObj.media===obj.media&&newObj.sourceMap===obj.sourceMap){return;}update(obj=newObj);}else{remove();}};}var replaceText=function(){var textStore=[];return function(index,replacement){textStore[index]=replacement;return textStore.filter(Boolean).join('\n');};}();function applyToSingletonTag(styleElement,index,remove,obj){var css=remove?'':obj.css;if(styleElement.styleSheet){styleElement.styleSheet.cssText=replaceText(index,css);}else{var cssNode=document.createTextNode(css);var childNodes=styleElement.childNodes;if(childNodes[index])styleElement.removeChild(childNodes[index]);if(childNodes.length){styleElement.insertBefore(cssNode,childNodes[index]);}else{styleElement.appendChild(cssNode);}}}function applyToTag(styleElement,obj){var css=obj.css;var media=obj.media;var sourceMap=obj.sourceMap;if(media){styleElement.setAttribute('media',media);}if(sourceMap){// https://developer.chrome.com/devtools/docs/javascript-debugging // this makes source maps inside style tags work properly in Chrome css+='\n/*# sourceURL='+sourceMap.sources[0]+' */';// http://stackoverflow.com/a/26603875 -css+='\n/*# sourceMappingURL=data:application/json;base64,'+btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))))+' */';}if(styleElement.styleSheet){styleElement.styleSheet.cssText=css;}else{while(styleElement.firstChild){styleElement.removeChild(styleElement.firstChild);}styleElement.appendChild(document.createTextNode(css));}}/***/},/* 5 *//***/function(module,exports){/* globals __VUE_SSR_CONTEXT__ */// this module is a runtime utility for cleaner component module output and will -// be included in the final webpack user bundle -module.exports=function normalizeComponent(rawScriptExports,compiledTemplate,injectStyles,scopeId,moduleIdentifier/* server only */){var esModule;var scriptExports=rawScriptExports=rawScriptExports||{};// ES6 modules interop -var type=_typeof(rawScriptExports.default);if(type==='object'||type==='function'){esModule=rawScriptExports;scriptExports=rawScriptExports.default;}// Vue.extend constructor export interop -var options=typeof scriptExports==='function'?scriptExports.options:scriptExports;// render functions -if(compiledTemplate){options.render=compiledTemplate.render;options.staticRenderFns=compiledTemplate.staticRenderFns;}// scopedId -if(scopeId){options._scopeId=scopeId;}var hook;if(moduleIdentifier){// server build -hook=function hook(context){// 2.3 injection -context=context||// cached call -this.$vnode&&this.$vnode.ssrContext||// stateful -this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext;// functional -// 2.2 with runInNewContext: true -if(!context&&typeof __VUE_SSR_CONTEXT__!=='undefined'){context=__VUE_SSR_CONTEXT__;}// inject component styles -if(injectStyles){injectStyles.call(this,context);}// register component module identifier for async chunk inferrence -if(context&&context._registeredComponents){context._registeredComponents.add(moduleIdentifier);}};// used by ssr in case component is cached and beforeCreate -// never gets called -options._ssrRegister=hook;}else if(injectStyles){hook=injectStyles;}if(hook){var functional=options.functional;var existing=functional?options.render:options.beforeCreate;if(!functional){// inject component registration as beforeCreate hook -options.beforeCreate=existing?[].concat(existing,hook):[hook];}else{// register for functioal component in vue file -options.render=function renderWithStyleInjection(h,context){hook.call(context);return existing(h,context);};}}return{esModule:esModule,exports:scriptExports,options:options};};/***/},/* 6 *//***/function(module,exports){module.exports=function(module){if(!module.webpackPolyfill){module.deprecate=function(){};module.paths=[];// module.parent = undefined by default -if(!module.children)module.children=[];Object.defineProperty(module,"loaded",{enumerable:true,get:function get(){return module.l;}});Object.defineProperty(module,"id",{enumerable:true,get:function get(){return module.i;}});module.webpackPolyfill=1;}return module;};/***/},/* 7 *//***/function(module,exports,__webpack_require__){var _Symbol=__webpack_require__(14),getRawTag=__webpack_require__(57),objectToString=__webpack_require__(58);/** `Object#toString` result references. */var nullTag='[object Null]',undefinedTag='[object Undefined]';/** Built-in value references. */var symToStringTag=_Symbol?_Symbol.toStringTag:undefined;/** - * The base implementation of `getTag` without fallbacks for buggy environments. +css+='\n/*# sourceMappingURL=data:application/json;base64,'+btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))))+' */';}if(styleElement.styleSheet){styleElement.styleSheet.cssText=css;}else{while(styleElement.firstChild){styleElement.removeChild(styleElement.firstChild);}styleElement.appendChild(document.createTextNode(css));}}/***/},/* 10 *//***/function(module,exports){/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */function eq(value,other){return value===other||value!==value&&other!==other;}module.exports=eq;/***/},/* 11 *//***/function(module,exports){module.exports=function(module){if(!module.webpackPolyfill){module.deprecate=function(){};module.paths=[];// module.parent = undefined by default +if(!module.children)module.children=[];Object.defineProperty(module,"loaded",{enumerable:true,get:function get(){return module.l;}});Object.defineProperty(module,"id",{enumerable:true,get:function get(){return module.i;}});module.webpackPolyfill=1;}return module;};/***/},/* 12 *//***/function(module,exports){var g;// This works in non-strict mode +g=function(){return this;}();try{// This works if eval is allowed (see CSP) +g=g||Function("return this")()||(1,eval)("this");}catch(e){// This works if the window reference is available +if((typeof window==='undefined'?'undefined':_typeof(window))==="object")g=window;}// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} +module.exports=g;/***/},/* 13 *//***/function(module,exports,__webpack_require__){var listCacheClear=__webpack_require__(69),listCacheDelete=__webpack_require__(70),listCacheGet=__webpack_require__(71),listCacheHas=__webpack_require__(72),listCacheSet=__webpack_require__(73);/** + * Creates an list cache object. * * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */function baseGetTag(value){if(value==null){return value===undefined?undefinedTag:nullTag;}return symToStringTag&&symToStringTag in Object(value)?getRawTag(value):objectToString(value);}module.exports=baseGetTag;/***/},/* 8 *//***/function(module,exports){/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */function ListCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++index true * - * _.isObjectLike([1, 2, 3]); + * _.isBuffer(new Uint8Array(2)); + * // => false + */var isBuffer=nativeIsBuffer||stubFalse;module.exports=isBuffer;/* WEBPACK VAR INJECTION */}).call(exports,__webpack_require__(11)(module));/***/},/* 18 *//***/function(module,exports,__webpack_require__){var baseIsTypedArray=__webpack_require__(113),baseUnary=__webpack_require__(114),nodeUtil=__webpack_require__(115);/* Node.js helper references. */var nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray;/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); * // => true * - * _.isObjectLike(_.noop); + * _.isTypedArray([]); * // => false + */var isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;module.exports=isTypedArray;/***/},/* 19 *//***/function(module,exports){/** Used for built-in method references. */var objectProto=Object.prototype;/** + * Checks if `value` is likely a prototype object. * - * _.isObjectLike(null); + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */function isPrototype(value){var Ctor=value&&value.constructor,proto=typeof Ctor=='function'&&Ctor.prototype||objectProto;return value===proto;}module.exports=isPrototype;/***/},/* 20 *//***/function(module,exports,__webpack_require__){var root=__webpack_require__(0);/** Built-in value references. */var _Symbol2=root.Symbol;module.exports=_Symbol2;/***/},/* 21 *//***/function(module,exports,__webpack_require__){var getNative=__webpack_require__(4),root=__webpack_require__(0);/* Built-in method references that are verified to be native. */var Map=getNative(root,'Map');module.exports=Map;/***/},/* 22 *//***/function(module,exports,__webpack_require__){var baseGetTag=__webpack_require__(5),isObject=__webpack_require__(2);/** `Object#toString` result references. */var asyncTag='[object AsyncFunction]',funcTag='[object Function]',genTag='[object GeneratorFunction]',proxyTag='[object Proxy]';/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); * // => false - */function isObjectLike(value){return value!=null&&(typeof value==='undefined'?'undefined':_typeof(value))=='object';}module.exports=isObjectLike;/***/},/* 9 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";/* WEBPACK VAR INJECTION */(function(global){/*! - * Vue.js v2.3.4 - * (c) 2014-2017 Evan You - * Released under the MIT License. - *//* */// these helpers produces better vm code in JS engines due to their -// explicitness and function inlining -function isUndef(v){return v===undefined||v===null;}function isDef(v){return v!==undefined&&v!==null;}function isTrue(v){return v===true;}function isFalse(v){return v===false;}/** - * Check if value is primitive - */function isPrimitive(value){return typeof value==='string'||typeof value==='number';}/** - * Quick object check - this is primarily used to tell - * Objects from primitive values when we know the value - * is a JSON-compliant type. - */function isObject(obj){return obj!==null&&(typeof obj==='undefined'?'undefined':_typeof(obj))==='object';}var _toString=Object.prototype.toString;/** - * Strict object type check. Only returns true - * for plain JavaScript objects. - */function isPlainObject(obj){return _toString.call(obj)==='[object Object]';}function isRegExp(v){return _toString.call(v)==='[object RegExp]';}/** - * Convert a value to a string that is actually rendered. - */function toString(val){return val==null?'':(typeof val==='undefined'?'undefined':_typeof(val))==='object'?JSON.stringify(val,null,2):String(val);}/** - * Convert a input value to a number for persistence. - * If the conversion fails, return original string. - */function toNumber(val){var n=parseFloat(val);return isNaN(n)?val:n;}/** - * Make a map and return a function for checking if a key - * is in that map. - */function makeMap(str,expectsLowerCase){var map=Object.create(null);var list=str.split(',');for(var i=0;i true + * + * _.isArguments([1, 2, 3]); + * // => false + */var isArguments=baseIsArguments(function(){return arguments;}())?baseIsArguments:function(value){return isObjectLike(value)&&hasOwnProperty.call(value,'callee')&&!propertyIsEnumerable.call(value,'callee');};module.exports=isArguments;/***/},/* 24 *//***/function(module,exports){/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */function identity(value){return value;}module.exports=identity;/***/},/* 25 *//***/function(module,exports,__webpack_require__){var defineProperty=__webpack_require__(43);/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */function baseAssignValue(object,key,value){if(key=='__proto__'&&defineProperty){defineProperty(object,key,{'configurable':true,'enumerable':true,'value':value,'writable':true});}else{object[key]=value;}}module.exports=baseAssignValue;/***/},/* 26 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";/* WEBPACK VAR INJECTION */(function(global){/*! + * Vue.js v2.3.4 + * (c) 2014-2017 Evan You + * Released under the MIT License. + *//* */// these helpers produces better vm code in JS engines due to their +// explicitness and function inlining +function isUndef(v){return v===undefined||v===null;}function isDef(v){return v!==undefined&&v!==null;}function isTrue(v){return v===true;}function isFalse(v){return v===false;}/** + * Check if value is primitive + */function isPrimitive(value){return typeof value==='string'||typeof value==='number';}/** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + */function isObject(obj){return obj!==null&&(typeof obj==='undefined'?'undefined':_typeof(obj))==='object';}var _toString=Object.prototype.toString;/** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */function isPlainObject(obj){return _toString.call(obj)==='[object Object]';}function isRegExp(v){return _toString.call(v)==='[object RegExp]';}/** + * Convert a value to a string that is actually rendered. + */function toString(val){return val==null?'':(typeof val==='undefined'?'undefined':_typeof(val))==='object'?JSON.stringify(val,null,2):String(val);}/** + * Convert a input value to a number for persistence. + * If the conversion fails, return original string. + */function toNumber(val){var n=parseFloat(val);return isNaN(n)?val:n;}/** + * Make a map and return a function for checking if a key + * is in that map. + */function makeMap(str,expectsLowerCase){var map=Object.create(null);var list=str.split(',');for(var i=0;i-1){return arr.splice(index,1);}}}/** * Check whether the object has the property. */var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key);}/** @@ -1088,7 +1306,172 @@ var res={};var fnGenErrors=[];res.render=makeFunction(compiled.render,fnGenError if(!options.render){var template=options.template;if(template){if(typeof template==='string'){if(template.charAt(0)==='#'){template=idToTemplate(template);/* istanbul ignore if */if(false){warn("Template element not found or is empty: "+options.template,this);}}}else if(template.nodeType){template=template.innerHTML;}else{if(false){warn('invalid template option:'+template,this);}return this;}}else if(el){template=getOuterHTML(el);}if(template){/* istanbul ignore if */if(false){mark('compile');}var ref=compileToFunctions(template,{shouldDecodeNewlines:shouldDecodeNewlines,delimiters:options.delimiters},this);var render=ref.render;var staticRenderFns=ref.staticRenderFns;options.render=render;options.staticRenderFns=staticRenderFns;/* istanbul ignore if */if(false){mark('compile end');measure(this._name+" compile",'compile','compile end');}}}return mount.call(this,el,hydrating);};/** * Get outerHTML of elements, taking care * of SVG elements in IE as well. - */function getOuterHTML(el){if(el.outerHTML){return el.outerHTML;}else{var container=document.createElement('div');container.appendChild(el.cloneNode(true));return container.innerHTML;}}Vue$3.compile=compileToFunctions;/* harmony default export */__webpack_exports__["a"]=Vue$3;/* WEBPACK VAR INJECTION */}).call(__webpack_exports__,__webpack_require__(2));/***/},/* 10 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";/* harmony default export */__webpack_exports__["a"]={methods:{__runAjax:function __runAjax(uri){var data=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var method=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'get';var dataType=arguments.length>3&&arguments[3]!==undefined?arguments[3]:'json';return new Promise(function(resolve,reject){if($==undefined){reject('JQUERY NOT AVAILABLE!');}$.ajax({url:uri,method:method||'get',data:data,dataType:dataType,success:function success(response,status,xhr){resolve({success:true,data:response,transferStatus:status,xhr:xhr});},error:function error(xhr,status,_error){reject({success:false,error:_error,transferStatus:status,xhr:xhr});}});});},$_post:function $_post(uri,data){return this.__runAjax(uri,data,'post');},$_get:function $_get(uri,data){return this.__runAjax(uri,data,'get');},$_load:function $_load(uri,data){return this.__runAjax(uri,data,'get',"html");},$_delete:function $_delete(uri,data){return this.__runAjax(uri,data,'delete');},$_put:function $_put(uri,data){return this.__runAjax(uri,data,'put');}}};/***/},/* 11 *//***/function(module,exports,__webpack_require__){var baseKeys=__webpack_require__(51),getTag=__webpack_require__(54),isArguments=__webpack_require__(66),isArray=__webpack_require__(68),isArrayLike=__webpack_require__(69),isBuffer=__webpack_require__(70),isPrototype=__webpack_require__(12),isTypedArray=__webpack_require__(72);/** `Object#toString` result references. */var mapTag='[object Map]',setTag='[object Set]';/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** + */function getOuterHTML(el){if(el.outerHTML){return el.outerHTML;}else{var container=document.createElement('div');container.appendChild(el.cloneNode(true));return container.innerHTML;}}Vue$3.compile=compileToFunctions;/* harmony default export */__webpack_exports__["a"]=Vue$3;/* WEBPACK VAR INJECTION */}).call(__webpack_exports__,__webpack_require__(12));/***/},/* 27 *//***/function(module,exports,__webpack_require__){/* WEBPACK VAR INJECTION */(function(global){/** Detect free variable `global` from Node.js. */var freeGlobal=(typeof global==='undefined'?'undefined':_typeof(global))=='object'&&global&&global.Object===Object&&global;module.exports=freeGlobal;/* WEBPACK VAR INJECTION */}).call(exports,__webpack_require__(12));/***/},/* 28 *//***/function(module,exports,__webpack_require__){var ListCache=__webpack_require__(13),stackClear=__webpack_require__(74),stackDelete=__webpack_require__(75),stackGet=__webpack_require__(76),stackHas=__webpack_require__(77),stackSet=__webpack_require__(78);/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */function Stack(entries){var data=this.__data__=new ListCache(entries);this.size=data.size;}// Add methods to `Stack`. +Stack.prototype.clear=stackClear;Stack.prototype['delete']=stackDelete;Stack.prototype.get=stackGet;Stack.prototype.has=stackHas;Stack.prototype.set=stackSet;module.exports=Stack;/***/},/* 29 *//***/function(module,exports){/** Used for built-in method references. */var funcProto=Function.prototype;/** Used to resolve the decompiled source of functions. */var funcToString=funcProto.toString;/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */function toSource(func){if(func!=null){try{return funcToString.call(func);}catch(e){}try{return func+'';}catch(e){}}return'';}module.exports=toSource;/***/},/* 30 *//***/function(module,exports,__webpack_require__){var mapCacheClear=__webpack_require__(83),mapCacheDelete=__webpack_require__(90),mapCacheGet=__webpack_require__(92),mapCacheHas=__webpack_require__(93),mapCacheSet=__webpack_require__(94);/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */function MapCache(entries){var index=-1,length=entries==null?0:entries.length;this.clear();while(++indexarrLength)){return false;}// Assume cyclic values are equal. +var stacked=stack.get(array);if(stacked&&stack.get(other)){return stacked==other;}var index=-1,result=true,seen=bitmask&COMPARE_UNORDERED_FLAG?new SetCache():undefined;stack.set(array,other);stack.set(other,array);// Ignore non-index properties. +while(++index ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */function keys(object){return isArrayLike(object)?arrayLikeKeys(object):baseKeys(object);}module.exports=keys;/***/},/* 34 *//***/function(module,exports,__webpack_require__){var baseTimes=__webpack_require__(110),isArguments=__webpack_require__(23),isArray=__webpack_require__(6),isBuffer=__webpack_require__(17),isIndex=__webpack_require__(35),isTypedArray=__webpack_require__(18);/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */function arrayLikeKeys(value,inherited){var isArr=isArray(value),isArg=!isArr&&isArguments(value),isBuff=!isArr&&!isArg&&isBuffer(value),isType=!isArr&&!isArg&&!isBuff&&isTypedArray(value),skipIndexes=isArr||isArg||isBuff||isType,result=skipIndexes?baseTimes(value.length,String):[],length=result.length;for(var key in value){if((inherited||hasOwnProperty.call(value,key))&&!(skipIndexes&&(// Safari 9 has enumerable `arguments.length` in strict mode. +key=='length'||// Node.js 0.10 has enumerable non-index properties on buffers. +isBuff&&(key=='offset'||key=='parent')||// PhantomJS 2 has enumerable non-index properties on typed arrays. +isType&&(key=='buffer'||key=='byteLength'||key=='byteOffset')||// Skip index properties. +isIndex(key,length)))){result.push(key);}}return result;}module.exports=arrayLikeKeys;/***/},/* 35 *//***/function(module,exports){/** Used as references for various `Number` constants. */var MAX_SAFE_INTEGER=9007199254740991;/** Used to detect unsigned integer values. */var reIsUint=/^(?:0|[1-9]\d*)$/;/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */function isIndex(value,length){length=length==null?MAX_SAFE_INTEGER:length;return!!length&&(typeof value=='number'||reIsUint.test(value))&&value>-1&&value%1==0&&value true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */function isLength(value){return typeof value=='number'&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER;}module.exports=isLength;/***/},/* 37 *//***/function(module,exports,__webpack_require__){var isPrototype=__webpack_require__(19),nativeKeys=__webpack_require__(116);/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */function baseKeys(object){if(!isPrototype(object)){return nativeKeys(object);}var result=[];for(var key in Object(object)){if(hasOwnProperty.call(object,key)&&key!='constructor'){result.push(key);}}return result;}module.exports=baseKeys;/***/},/* 38 *//***/function(module,exports){/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */function overArg(func,transform){return function(arg){return func(transform(arg));};}module.exports=overArg;/***/},/* 39 *//***/function(module,exports,__webpack_require__){var DataView=__webpack_require__(117),Map=__webpack_require__(21),Promise=__webpack_require__(118),Set=__webpack_require__(119),WeakMap=__webpack_require__(120),baseGetTag=__webpack_require__(5),toSource=__webpack_require__(29);/** `Object#toString` result references. */var mapTag='[object Map]',objectTag='[object Object]',promiseTag='[object Promise]',setTag='[object Set]',weakMapTag='[object WeakMap]';var dataViewTag='[object DataView]';/** Used to detect maps, sets, and weakmaps. */var dataViewCtorString=toSource(DataView),mapCtorString=toSource(Map),promiseCtorString=toSource(Promise),setCtorString=toSource(Set),weakMapCtorString=toSource(WeakMap);/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */var getTag=baseGetTag;// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if(DataView&&getTag(new DataView(new ArrayBuffer(1)))!=dataViewTag||Map&&getTag(new Map())!=mapTag||Promise&&getTag(Promise.resolve())!=promiseTag||Set&&getTag(new Set())!=setTag||WeakMap&&getTag(new WeakMap())!=weakMapTag){getTag=function getTag(value){var result=baseGetTag(value),Ctor=result==objectTag?value.constructor:undefined,ctorString=Ctor?toSource(Ctor):'';if(ctorString){switch(ctorString){case dataViewCtorString:return dataViewTag;case mapCtorString:return mapTag;case promiseCtorString:return promiseTag;case setCtorString:return setTag;case weakMapCtorString:return weakMapTag;}}return result;};}module.exports=getTag;/***/},/* 40 *//***/function(module,exports,__webpack_require__){var createBaseFor=__webpack_require__(129);/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */var baseFor=createBaseFor();module.exports=baseFor;/***/},/* 41 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";/* harmony default export */__webpack_exports__["a"]={methods:{__runAjax:function __runAjax(uri){var data=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var method=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'get';var dataType=arguments.length>3&&arguments[3]!==undefined?arguments[3]:'json';var csrfObject={};csrfObject[LS.data.csrfTokenName]=LS.data.csrfToken;var sendData=$.merge(data,csrfObject);return new Promise(function(resolve,reject){if($==undefined){reject('JQUERY NOT AVAILABLE!');}$.ajax({url:uri,method:method||'get',data:sendData,dataType:dataType,success:function success(response,status,xhr){resolve({success:true,data:response,transferStatus:status,xhr:xhr});},error:function error(xhr,status,_error){reject({success:false,error:_error,transferStatus:status,xhr:xhr});}});});},$_post:function $_post(uri,data){return this.__runAjax(uri,data,'post');},$_get:function $_get(uri,data){return this.__runAjax(uri,data,'get');},$_load:function $_load(uri,data){var method=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'get';return this.__runAjax(uri,data,method,"html");},$_delete:function $_delete(uri,data){return this.__runAjax(uri,data,'delete');},$_put:function $_put(uri,data){return this.__runAjax(uri,data,'put');}}};/***/},/* 42 *//***/function(module,exports,__webpack_require__){var baseAssignValue=__webpack_require__(25),eq=__webpack_require__(10);/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */function assignMergeValue(object,key,value){if(value!==undefined&&!eq(object[key],value)||value===undefined&&!(key in object)){baseAssignValue(object,key,value);}}module.exports=assignMergeValue;/***/},/* 43 *//***/function(module,exports,__webpack_require__){var getNative=__webpack_require__(4);var defineProperty=function(){try{var func=getNative(Object,'defineProperty');func({},'',{});return func;}catch(e){}}();module.exports=defineProperty;/***/},/* 44 *//***/function(module,exports,__webpack_require__){var overArg=__webpack_require__(38);/** Built-in value references. */var getPrototype=overArg(Object.getPrototypeOf,Object);module.exports=getPrototype;/***/},/* 45 *//***/function(module,exports,__webpack_require__){var arrayLikeKeys=__webpack_require__(34),baseKeysIn=__webpack_require__(155),isArrayLike=__webpack_require__(7);/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */function keysIn(object){return isArrayLike(object)?arrayLikeKeys(object,true):baseKeysIn(object);}module.exports=keysIn;/***/},/* 46 *//***/function(module,exports,__webpack_require__){var baseKeys=__webpack_require__(37),getTag=__webpack_require__(39),isArguments=__webpack_require__(23),isArray=__webpack_require__(6),isArrayLike=__webpack_require__(7),isBuffer=__webpack_require__(17),isPrototype=__webpack_require__(19),isTypedArray=__webpack_require__(18);/** `Object#toString` result references. */var mapTag='[object Map]',setTag='[object Set]';/** Used for built-in method references. */var objectProto=Object.prototype;/** Used to check objects for own properties. */var hasOwnProperty=objectProto.hasOwnProperty;/** * Checks if `value` is an empty object, collection, map, or set. * * Objects are considered empty if they have no own enumerable string keyed @@ -1120,127 +1503,967 @@ if(!options.render){var template=options.template;if(template){if(typeof templat * * _.isEmpty({ 'a': 1 }); * // => false - */function isEmpty(value){if(value==null){return true;}if(isArrayLike(value)&&(isArray(value)||typeof value=='string'||typeof value.splice=='function'||isBuffer(value)||isTypedArray(value)||isArguments(value))){return!value.length;}var tag=getTag(value);if(tag==mapTag||tag==setTag){return!value.size;}if(isPrototype(value)){return!baseKeys(value).length;}for(var key in value){if(hasOwnProperty.call(value,key)){return false;}}return true;}module.exports=isEmpty;/***/},/* 12 *//***/function(module,exports){/** Used for built-in method references. */var objectProto=Object.prototype;/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */function isPrototype(value){var Ctor=value&&value.constructor,proto=typeof Ctor=='function'&&Ctor.prototype||objectProto;return value===proto;}module.exports=isPrototype;/***/},/* 13 *//***/function(module,exports,__webpack_require__){var baseGetTag=__webpack_require__(7),isObject=__webpack_require__(16);/** `Object#toString` result references. */var asyncTag='[object AsyncFunction]',funcTag='[object Function]',genTag='[object GeneratorFunction]',proxyTag='[object Proxy]';/** - * Checks if `value` is classified as a `Function` object. + */function isEmpty(value){if(value==null){return true;}if(isArrayLike(value)&&(isArray(value)||typeof value=='string'||typeof value.splice=='function'||isBuffer(value)||isTypedArray(value)||isArguments(value))){return!value.length;}var tag=getTag(value);if(tag==mapTag||tag==setTag){return!value.size;}if(isPrototype(value)){return!baseKeys(value).length;}for(var key in value){if(hasOwnProperty.call(value,key)){return false;}}return true;}module.exports=isEmpty;/***/},/* 47 *//***/function(module,exports,__webpack_require__){module.exports=__webpack_require__(48);/***/},/* 48 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";Object.defineProperty(__webpack_exports__,"__esModule",{value:true});/* harmony import */var __WEBPACK_IMPORTED_MODULE_0_vue__=__webpack_require__(26);/* harmony import */var __WEBPACK_IMPORTED_MODULE_1__ckeditor_ckeditor5_vue__=__webpack_require__(49);/* harmony import */var __WEBPACK_IMPORTED_MODULE_1__ckeditor_ckeditor5_vue___default=__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__ckeditor_ckeditor5_vue__);/* harmony import */var __WEBPACK_IMPORTED_MODULE_2__App_vue__=__webpack_require__(50);/* harmony import */var __WEBPACK_IMPORTED_MODULE_2__App_vue___default=__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__App_vue__);/* harmony import */var __WEBPACK_IMPORTED_MODULE_3__storage_store__=__webpack_require__(186);/* harmony import */var __WEBPACK_IMPORTED_MODULE_4__mixins_logSystem__=__webpack_require__(196);/* harmony import */var __WEBPACK_IMPORTED_MODULE_4__mixins_logSystem___default=__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__mixins_logSystem__);// import CKEditor from '@ckeditor/ckeditor5-vue'; +//Ignore phpunits testing tags +__WEBPACK_IMPORTED_MODULE_0_vue__["a"/* default */].config.ignoredElements=["x-test"];__WEBPACK_IMPORTED_MODULE_0_vue__["a"/* default */].use(__WEBPACK_IMPORTED_MODULE_4__mixins_logSystem___default.a);__WEBPACK_IMPORTED_MODULE_0_vue__["a"/* default */].use(__WEBPACK_IMPORTED_MODULE_1__ckeditor_ckeditor5_vue___default.a);__WEBPACK_IMPORTED_MODULE_0_vue__["a"/* default */].mixin({methods:{toggleLoading:function toggleLoading(){var forceState=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(forceState!==null){if(forceState){$('#questionEditLoader').fadeIn(200);}else{$('#questionEditLoader').fadeOut(400);}return;}if($('#questionEditLoader').css('display')=='none'){$('#questionEditLoader').fadeIn(200);return;}$('#questionEditLoader').fadeOut(400);}},filters:{translate:function translate(value){return window.QuestionEditData.i10N[value]||value;}}});var AppState=__WEBPACK_IMPORTED_MODULE_3__storage_store__["a"/* default */](window.LS.parameters.qid);var questionEditor=new __WEBPACK_IMPORTED_MODULE_0_vue__["a"/* default */]({el:'#advancedQuestionEditor',store:AppState,components:{App:__WEBPACK_IMPORTED_MODULE_2__App_vue___default.a}});/***/},/* 49 *//***/function(module,exports,__webpack_require__){/*! + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md. + */!function(t,e){true?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==(typeof exports==='undefined'?'undefined':_typeof(exports))?exports.CKEditor=e():t.CKEditor=e();}(window,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports;}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i});},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0});},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==(typeof t==='undefined'?'undefined':_typeof(t))&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t){n.d(i,o,function(e){return t[e];}.bind(null,o));}return i;},n.n=function(t){var e=t&&t.__esModule?function(){return t.default;}:function(){return t;};return n.d(e,"a",e),e;},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e);},n.p="",n(n.s=0);}([function(t,e,n){"use strict";n.r(e);var i={name:"ckeditor",render:function render(t){return t(this.tagName);},props:{editor:{type:Function,default:null},value:{type:String,default:""},config:{type:Object,default:function _default(){return{};}},tagName:{type:String,default:"div"},disabled:{type:Boolean,default:!1}},data:function data(){return{instance:null};},mounted:function mounted(){var _this2=this;this.editor.create(this.$el,this.config).then(function(t){_this2.instance=t,t.setData(_this2.value),t.isReadOnly=_this2.disabled,_this2.$_setUpEditorEvents(),_this2.$emit("ready",t);}).catch(function(t){console.error(t);});},beforeDestroy:function beforeDestroy(){this.instance&&(this.instance.destroy(),this.instance=null),this.$emit("destroy",this.instance);},watch:{value:function value(t){this.instance.getData()!==t&&this.instance.setData(t);},disabled:function disabled(t){this.instance.isReadOnly=t;}},methods:{$_setUpEditorEvents:function $_setUpEditorEvents(){var _this3=this;var t=this.instance;t.model.document.on("change:data",function(e){var n=t.getData();_this3.$emit("input",n,e,t);}),t.editing.view.document.on("focus",function(e){_this3.$emit("focus",e,t);}),t.editing.view.document.on("blur",function(e){_this3.$emit("blur",e,t);});}}};var o={install:function install(t){t.component("ckeditor",i);},component:i};e.default=o;}]).default;});//# sourceMappingURL=ckeditor.js.map +/***/},/* 50 *//***/function(module,exports,__webpack_require__){function injectStyle(ssrContext){__webpack_require__(51);}var Component=__webpack_require__(1)(/* script */__webpack_require__(54),/* template */__webpack_require__(185),/* styles */injectStyle,/* scopeId */"data-v-05c0cfb0",/* moduleIdentifier (server only) */null);module.exports=Component.exports;/***/},/* 51 *//***/function(module,exports,__webpack_require__){// style-loader: Adds some css to the DOM by adding a \r\n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 65 */ +/***/ (function(module, exports) { + +/** + * Translates the list format produced by css-loader into something + * easier to manipulate. + */ +module.exports = function listToStyles (parentId, list) { + var styles = [] + var newStyles = {} + for (var i = 0; i < list.length; i++) { + var item = list[i] + var id = item[0] + var css = item[1] + var media = item[2] + var sourceMap = item[3] + var part = { + id: parentId + ':' + i, + css: css, + media: media, + sourceMap: sourceMap + } + if (!newStyles[id]) { + styles.push(newStyles[id] = { id: id, parts: [part] }) + } else { + newStyles[id].parts.push(part) + } } + return styles } -var platformComponents = { - Transition: Transition, - TransitionGroup: TransitionGroup -}; -/* */ +/***/ }), +/* 66 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -// install platform specific utils -Vue$3.config.mustUseProp = mustUseProp; -Vue$3.config.isReservedTag = isReservedTag; -Vue$3.config.isReservedAttr = isReservedAttr; -Vue$3.config.getTagNamespace = getTagNamespace; -Vue$3.config.isUnknownElement = isUnknownElement; +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue__ = __webpack_require__(67); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue__ = __webpack_require__(153); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue__ = __webpack_require__(222); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue__); -// install platform runtime directives & components -extend(Vue$3.options.directives, platformDirectives); -extend(Vue$3.options.components, platformComponents); -// install platform patch function -Vue$3.prototype.__patch__ = inBrowser ? patch : noop; -// public mount method -Vue$3.prototype.$mount = function ( - el, - hydrating -) { - el = el && inBrowser ? query(el) : undefined; - return mountComponent(this, el, hydrating) -}; -// devtools global hook -/* istanbul ignore next */ -setTimeout(function () { - if (config.devtools) { - if (devtools) { - devtools.emit('init', Vue$3); - } else if ("developement" !== 'production' && isChrome) { - console[console.info ? 'info' : 'log']( - 'Download the Vue Devtools extension for a better development experience:\n' + - 'https://github.com/vuejs/vue-devtools' - ); - } - } - if ("developement" !== 'production' && - config.productionTip !== false && - inBrowser && typeof console !== 'undefined' - ) { - console[console.info ? 'info' : 'log']( - "You are running Vue in development mode.\n" + - "Make sure to turn on production mode when deploying for production.\n" + - "See more tips at https://vuejs.org/guide/deployment.html" - ); + +/* harmony default export */ __webpack_exports__["default"] = ({ + name: 'lsnextquestioneditor', + data() { + return { + event: null + }; + }, + components: { + 'maineditor': __WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue___default.a, + 'generalsettings': __WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue___default.a, + 'advancedsettings': __WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue___default.a + }, + mounted() { + this.toggleLoading(false); + $('#advancedQuestionEditor').on('jquery:trigger', this.jqueryTriggered); + }, + methods: { + jqueryTriggered(event, data) { + //this.$log.log('data', data); + this.event = JSON.parse(data.emitter); + }, + eventSet() { + this.event = null; + } + + }, + created() { + this.$store.dispatch('loadQuestion'); + this.$store.dispatch('getQuestionTypes'); + this.$store.dispatch('getQuestionGeneralSettings'); + } +}); + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(68) +} +var Component = __webpack_require__(1)( + /* script */ + __webpack_require__(70), + /* template */ + __webpack_require__(152), + /* styles */ + injectStyle, + /* scopeId */ + "data-v-33645a86", + /* moduleIdentifier (server only) */ + null +) +Component.options.__file = "C:\\IISPages\\LimeSurveyDevelop\\assets\\packages\\questioneditor\\src\\components\\mainEditor.vue" +if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} +if (Component.options.functional) {console.error("[vue-loader] mainEditor.vue: functional components are not supported with templates, they should use render functions.")} + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-33645a86", Component.options) + } else { + hotAPI.reload("data-v-33645a86", Component.options) } -}, 0); + module.hot.dispose(function (data) { + disposed = true + }) +})()} -/* */ +module.exports = Component.exports -// check whether current browser encodes a char inside attribute values -function shouldDecode (content, encoded) { - var div = document.createElement('div'); - div.innerHTML = "
"; - return div.innerHTML.indexOf(encoded) > 0 -} -// #3663 -// IE encodes newlines inside attribute values while other browsers don't -var shouldDecodeNewlines = inBrowser ? shouldDecode('\n', ' ') : false; +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { -/* */ +// style-loader: Adds some css to the DOM by adding a \r\n"],"sourceRoot":""}]); +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); -// exports +module.exports = Promise; /***/ }), -/* 41 */ -/***/ (function(module, exports) { - -/** - * Translates the list format produced by css-loader into something - * easier to manipulate. - */ -module.exports = function listToStyles (parentId, list) { - var styles = [] - var newStyles = {} - for (var i = 0; i < list.length; i++) { - var item = list[i] - var id = item[0] - var css = item[1] - var media = item[2] - var sourceMap = item[3] - var part = { - id: parentId + ':' + i, - css: css, - media: media, - sourceMap: sourceMap - } - if (!newStyles[id]) { - styles.push(newStyles[id] = { id: id, parts: [part] }) - } else { - newStyles[id].parts.push(part) - } - } - return styles -} +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { +var getNative = __webpack_require__(8), + root = __webpack_require__(2); -/***/ }), -/* 42 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue__ = __webpack_require__(43); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue__ = __webpack_require__(130); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue__ = __webpack_require__(135); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue__); +module.exports = Set; +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { +var getNative = __webpack_require__(8), + root = __webpack_require__(2); +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'lsnextquestioneditor', - data() { - return { - event: null - }; - }, - components: { - 'maineditor': __WEBPACK_IMPORTED_MODULE_0__components_mainEditor_vue___default.a, - 'generalsettings': __WEBPACK_IMPORTED_MODULE_1__components_generalSettings_vue___default.a, - 'advancedsettings': __WEBPACK_IMPORTED_MODULE_2__components_advancedSettings_vue___default.a - }, - mounted() { - this.toggleLoading(false); - $('#advancedQuestionEditor').on('jquery:trigger', this.jqueryTriggered); - }, - methods: { - jqueryTriggered(event, data) { - //this.$log.log('data', data); - this.event = JSON.parse(data.emitter); - }, - eventSet() { - this.event = null; - } +module.exports = WeakMap; - }, - created() { - this.$store.dispatch('loadQuestion'); - this.$store.dispatch('getQuestionTypes'); - this.$store.dispatch('getQuestionGeneralSettings'); - } -}); /***/ }), -/* 43 */ +/* 130 */ /***/ (function(module, exports, __webpack_require__) { var disposed = false function injectStyle (ssrContext) { if (disposed) return - __webpack_require__(44) + __webpack_require__(131) } -var Component = __webpack_require__(4)( +var Component = __webpack_require__(1)( /* script */ - __webpack_require__(46), + __webpack_require__(133), /* template */ - __webpack_require__(129), + __webpack_require__(139), /* styles */ injectStyle, /* scopeId */ - "data-v-33645a86", + "data-v-6b27a1ca", /* moduleIdentifier (server only) */ null ) -Component.options.__file = "C:\\IISPages\\LimeSurveyDevelop\\assets\\packages\\questioneditor\\src\\components\\mainEditor.vue" +Component.options.__file = "C:\\IISPages\\LimeSurveyDevelop\\assets\\packages\\questioneditor\\src\\components\\subcomponents\\_previewFrame.vue" if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} -if (Component.options.functional) {console.error("[vue-loader] mainEditor.vue: functional components are not supported with templates, they should use render functions.")} +if (Component.options.functional) {console.error("[vue-loader] _previewFrame.vue: functional components are not supported with templates, they should use render functions.")} /* hot reload */ if (false) {(function () { @@ -11560,9 +14448,9 @@ if (false) {(function () { if (!hotAPI.compatible) return module.hot.accept() if (!module.hot.data) { - hotAPI.createRecord("data-v-33645a86", Component.options) + hotAPI.createRecord("data-v-6b27a1ca", Component.options) } else { - hotAPI.reload("data-v-33645a86", Component.options) + hotAPI.reload("data-v-6b27a1ca", Component.options) } module.hot.dispose(function (data) { disposed = true @@ -11573,23 +14461,23 @@ module.exports = Component.exports /***/ }), -/* 44 */ +/* 131 */ /***/ (function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a \r\n"],"sourceRoot":""}]); -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); +// exports - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} -module.exports = listCacheDelete; +/***/ }), +/* 143 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_size__ = __webpack_require__(144); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_size___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_size__); +// +/* harmony default export */ __webpack_exports__["default"] = ({ + name: 'language-selector', + props: { + elId: { type: String, required: true }, + aLanguages: { type: [Array, Object], required: true }, + parentCurrentLanguage: { type: String, required: true } + }, + computed: { + currentLanguage: { + get() { + return this.parentCurrentLanguage; + }, + set(newValue) { + this.$emit('change', newValue); + } + }, + lessThanFour() { + return __WEBPACK_IMPORTED_MODULE_0_lodash_size___default.a(this.aLanguages) < 4; + } + }, + methods: { + setCurrentLanguage(newValue) { + this.$emit('change', newValue); + } + } +}); + /***/ }), -/* 60 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(11); +var baseKeys = __webpack_require__(34), + getTag = __webpack_require__(35), + isArrayLike = __webpack_require__(9), + isString = __webpack_require__(145), + stringSize = __webpack_require__(146); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; /** - * Gets the list cache value for `key`. + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; +function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; } -module.exports = listCacheGet; +module.exports = size; /***/ }), -/* 61 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(11); +var baseGetTag = __webpack_require__(7), + isArray = __webpack_require__(0), + isObjectLike = __webpack_require__(4); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; /** - * Checks if a list cache value for `key` exists. + * Checks if `value` is classified as a `String` primitive or object. * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); } -module.exports = listCacheHas; +module.exports = isString; /***/ }), -/* 62 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(11); +var asciiSize = __webpack_require__(147), + hasUnicode = __webpack_require__(148), + unicodeSize = __webpack_require__(149); /** - * Sets the list cache `key` to `value`. + * Gets the number of symbols in `string`. * * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; +function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); } -module.exports = listCacheSet; +module.exports = stringSize; /***/ }), -/* 63 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { -var ListCache = __webpack_require__(10); +var baseProperty = __webpack_require__(49); /** - * Removes all key-value entries from the stack. + * Gets the size of an ASCII `string`. * * @private - * @name clear - * @memberOf Stack + * @param {string} string The string inspect. + * @returns {number} Returns the string size. */ -function stackClear() { - this.__data__ = new ListCache; - this.size = 0; -} +var asciiSize = baseProperty('length'); -module.exports = stackClear; +module.exports = asciiSize; /***/ }), -/* 64 */ +/* 148 */ /***/ (function(module, exports) { -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; -} - -module.exports = stackDelete; +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; +/** Used to compose unicode capture groups. */ +var rsZWJ = '\\u200d'; -/***/ }), -/* 65 */ -/***/ (function(module, exports) { +/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ +var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); /** - * Gets the stack value for `key`. + * Checks if `string` contains Unicode symbols. * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. */ -function stackGet(key) { - return this.__data__.get(key); +function hasUnicode(string) { + return reHasUnicode.test(string); } -module.exports = stackGet; +module.exports = hasUnicode; /***/ }), -/* 66 */ +/* 149 */ /***/ (function(module, exports) { -/** - * Checks if a stack value for `key` exists. +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Gets the size of a Unicode `string`. * * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * @param {string} string The string inspect. + * @returns {number} Returns the string size. */ -function stackHas(key) { - return this.__data__.has(key); +function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; } -module.exports = stackHas; +module.exports = unicodeSize; /***/ }), -/* 67 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { -var ListCache = __webpack_require__(10), - Map = __webpack_require__(16), - MapCache = __webpack_require__(25); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; +module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; + return _c('div', { + staticClass: "col-xs-12" + }, [(_vm.lessThanFour) ? [_c('div', { + staticClass: "button-toolbar", + attrs: { + "id": _vm.elId + '-language-selector' } - data = this.__data__ = new MapCache(pairs); + }, _vm._l((_vm.aLanguages), function(languageTerm, language) { + return _c('div', { + key: language, + staticClass: "btn-group", + class: language == _vm.currentLanguage ? ' active' : '' + }, [_c('button', { + class: 'btn btn-' + (language == _vm.currentLanguage ? 'primary' : 'default'), + on: { + "click": function($event) { + $event.preventDefault(); + _vm.setCurrentLanguage(language) + } + } + }, [_vm._v("\n " + _vm._s(languageTerm) + "\n ")])]) + }))] : [_c('select', { + directives: [{ + name: "model", + rawName: "v-model", + value: (_vm.currentLanguage), + expression: "currentLanguage" + }], + staticClass: "form-control", + attrs: { + "id": _vm.elId + '-language-selector', + "name": _vm.elId + '-language-selector' + }, + on: { + "change": function($event) { + var $$selectedVal = Array.prototype.filter.call($event.target.options, function(o) { + return o.selected + }).map(function(o) { + var val = "_value" in o ? o._value : o.value; + return val + }); + _vm.currentLanguage = $event.target.multiple ? $$selectedVal : $$selectedVal[0] + } + } + }, _vm._l((_vm.aLanguages), function(languageTerm, language) { + return _c('option', { + key: language, + domProps: { + "value": language + } + }, [_vm._v("\n " + _vm._s(languageTerm) + "\n ")]) + }))]], 2) +},staticRenderFns: []} +module.exports.render._withStripped = true +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api").rerender("data-v-b9bdb026", module.exports) } - data.set(key, value); - this.size = data.size; - return this; } -module.exports = stackSet; +/***/ }), +/* 151 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* harmony default export */ __webpack_exports__["a"] = ({ + props: { + event : {type: Object, default: null} + }, + watch: { + event(newEvent, oldEvent) { + if(newEvent !== null) { + if(this.$options.name == newEvent.target) { + try{ + this[newEvent.method](newEvent.content); + this.$emit('eventSet'); + } catch (e) { + this.$log.error('EVENT HANDLING ERRORED', e); + } + return; + } + this.$log.log('EVENT SKIPPED', newEvent, this.name); + } + } + } +}); /***/ }), -/* 68 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { -var isFunction = __webpack_require__(23), - isMasked = __webpack_require__(69), - isObject = __webpack_require__(9), - toSource = __webpack_require__(24); - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; + return _c('div', { + staticClass: "col-sm-8 col-xs-12 ls-space padding all-5" + }, [_c('div', { + staticClass: "container-center" + }, [_c('div', { + staticClass: "row" + }, [_c('div', { + staticClass: "form-group col-sm-6" + }, [_c('label', { + attrs: { + "for": "questionCode" + } + }, [_vm._v(_vm._s(_vm._f("translate")('Code')))]), _vm._v(" "), _c('input', { + directives: [{ + name: "model", + rawName: "v-model", + value: (_vm.currentQuestionCode), + expression: "currentQuestionCode" + }], + staticClass: "form-control", + attrs: { + "type": "text", + "id": "questionCode" + }, + domProps: { + "value": (_vm.currentQuestionCode) + }, + on: { + "input": function($event) { + if ($event.target.composing) { return; } + _vm.currentQuestionCode = $event.target.value + } + } + })]), _vm._v(" "), _c('div', { + staticClass: "form-group col-sm-6 contains-question-selector" + }, [_c('label', { + attrs: { + "for": "questionCode" + } + }, [_vm._v(_vm._s(_vm._f("translate")('Question type')))]), _vm._v(" "), _c('div', { + domProps: { + "innerHTML": _vm._s(_vm.questionEditButton) + } + }), _vm._v(" "), _c('input', { + attrs: { + "type": "hidden", + "id": "question_type", + "name": "type" + }, + domProps: { + "value": _vm.$store.state.currentQuestion.type + }, + on: { + "change": _vm.questionTypeChangeTriggered + } + })])]), _vm._v(" "), _c('div', { + staticClass: "row" + }, [_c('language-selector', { + attrs: { + "elId": 'questioneditor', + "aLanguages": _vm.$store.state.languages, + "parentCurrentLanguage": _vm.$store.state.activeLanguage + }, + on: { + "change": _vm.selectLanguage + } + })], 1), _vm._v(" "), _c('div', { + staticClass: "row" + }, [_c('div', { + staticClass: "col-sm-12 ls-space margin top-5 bottom-5 scope-contains-ckeditor " + }, [_c('label', { + staticClass: "col-sm-12" + }, [_vm._v(_vm._s(_vm._f("translate")('Question')) + ":")]), _vm._v(" "), _c('ckeditor', { + attrs: { + "editor": _vm.editorQuestion, + "config": _vm.editorQuestionConfig + }, + on: { + "input": _vm.runDebouncedChange + }, + model: { + value: (_vm.currentQuestionQuestion), + callback: function($$v) { + _vm.currentQuestionQuestion = $$v + }, + expression: "currentQuestionQuestion" + } + })], 1), _vm._v(" "), _c('div', { + staticClass: "col-sm-12 ls-space margin top-5 bottom-5 scope-contains-ckeditor " + }, [_c('label', { + staticClass: "col-sm-12" + }, [_vm._v(_vm._s(_vm._f("translate")('Help')) + ":")]), _vm._v(" "), _c('ckeditor', { + attrs: { + "editor": _vm.editorHelp, + "config": _vm.editorHelpConfig + }, + on: { + "input": _vm.runDebouncedChange + }, + model: { + value: (_vm.currentQuestionHelp), + callback: function($$v) { + _vm.currentQuestionHelp = $$v + }, + expression: "currentQuestionHelp" + } + })], 1)]), _vm._v(" "), _vm._m(0), _vm._v(" "), _c('div', { + staticClass: "row" + }, [_c('div', { + staticClass: "col-sm-12 ls-space margin bottom-5" + }, [_c('button', { + staticClass: "btn btn-default pull-right", + on: { + "click": function($event) { + $event.preventDefault(); + _vm.triggerPreview($event) + } + } + }, [_vm._v("\n " + _vm._s(_vm.previewActive ? "Hide Preview" : "Show Preview") + "\n ")])]), _vm._v(" "), _c('div', { + staticClass: "col-sm-12 ls-space margin top-5 bottom-5" + }, [_c('div', { + directives: [{ + name: "show", + rawName: "v-show", + value: (_vm.previewActive), + expression: "previewActive" + }], + staticClass: "scope-preview" + }, [_c('PreviewFrame', { + attrs: { + "id": 'previewFrame', + "content": _vm.previewContent, + "root-url": _vm.previewRootUrl, + "loading": _vm.previewLoading + } + })], 1)])])])]) +},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; + return _c('div', { + staticClass: "row" + }, [_c('div', { + staticClass: "col-sm-12 ls-space margin top-5 bottom-5" + }, [_c('hr')])]) +}]} +module.exports.render._withStripped = true +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api").rerender("data-v-33645a86", module.exports) + } +} -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; +/***/ }), +/* 153 */ +/***/ (function(module, exports, __webpack_require__) { -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(154) +} +var Component = __webpack_require__(1)( + /* script */ + __webpack_require__(156), + /* template */ + __webpack_require__(221), + /* styles */ + injectStyle, + /* scopeId */ + "data-v-df131e4a", + /* moduleIdentifier (server only) */ + null +) +Component.options.__file = "C:\\IISPages\\LimeSurveyDevelop\\assets\\packages\\questioneditor\\src\\components\\generalSettings.vue" +if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")} +if (Component.options.functional) {console.error("[vue-loader] generalSettings.vue: functional components are not supported with templates, they should use render functions.")} -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-df131e4a", Component.options) + } else { + hotAPI.reload("data-v-df131e4a", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +module.exports = Component.exports -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} +/***/ }), +/* 154 */ +/***/ (function(module, exports, __webpack_require__) { -module.exports = baseIsNative; +// style-loader: Adds some css to the DOM by adding a diff --git a/assets/packages/questioneditor/src/components/_inputtypes/text.vue b/assets/packages/questioneditor/src/components/_inputtypes/text.vue new file mode 100644 index 00000000000..82e71d1f447 --- /dev/null +++ b/assets/packages/questioneditor/src/components/_inputtypes/text.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/assets/packages/questioneditor/src/components/_inputtypes/textarea.vue b/assets/packages/questioneditor/src/components/_inputtypes/textarea.vue new file mode 100644 index 00000000000..1eb70bd6a16 --- /dev/null +++ b/assets/packages/questioneditor/src/components/_inputtypes/textarea.vue @@ -0,0 +1,76 @@ + + + \ No newline at end of file diff --git a/assets/packages/questioneditor/src/components/_inputtypes/textinput.vue b/assets/packages/questioneditor/src/components/_inputtypes/textinput.vue new file mode 100644 index 00000000000..788c6401b11 --- /dev/null +++ b/assets/packages/questioneditor/src/components/_inputtypes/textinput.vue @@ -0,0 +1,71 @@ + + + \ No newline at end of file diff --git a/assets/packages/questioneditor/src/components/generalSettings.vue b/assets/packages/questioneditor/src/components/generalSettings.vue index 1b524f91044..c5e52a09361 100644 --- a/assets/packages/questioneditor/src/components/generalSettings.vue +++ b/assets/packages/questioneditor/src/components/generalSettings.vue @@ -1,21 +1,64 @@