cmsmon
Version:
1,360 lines (988 loc) • 212 kB
JavaScript
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function($) {'use strict';
var _angular = __webpack_require__(3);
var _angular2 = _interopRequireDefault(_angular);
__webpack_require__(4);
__webpack_require__(1);
var _printthis = __webpack_require__(5);
var _printthis2 = _interopRequireDefault(_printthis);
__webpack_require__(6);
var _unionWith = __webpack_require__(7);
var _unionWith2 = _interopRequireDefault(_unionWith);
var _pickBy = __webpack_require__(8);
var _pickBy2 = _interopRequireDefault(_pickBy);
var _moment2 = __webpack_require__(9);
var _moment3 = _interopRequireDefault(_moment2);
var _jsonFn = __webpack_require__(10);
var _jsonFn2 = _interopRequireDefault(_jsonFn);
__webpack_require__(11);
var _components = __webpack_require__(12);
var _components2 = _interopRequireDefault(_components);
var _common = __webpack_require__(100);
var _common2 = _interopRequireDefault(_common);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
window.angular = _angular2.default;
window.printthis = _printthis2.default;
$.fn.printthis = _printthis2.default;
_.unionWith = _unionWith2.default;
_.pickBy = _pickBy2.default;
window.moment = _moment3.default;
window.JsonFn = _jsonFn2.default;
_jsonFn2.default.stringify = function (obj) {
return JSON.stringify(obj, function (key, value) {
var fnBody;
if (value instanceof Function || typeof value == 'function') {
fnBody = value.toString();
if (fnBody.length < 8 || fnBody.substring(0, 8) !== 'function') {
//this is ES6 Arrow Function
return '_NuFrRa_' + fnBody;
}
return fnBody;
}
if (value instanceof RegExp) {
return '_PxEgEr_' + value;
}
if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
value = undefined;
}
if (key === '$order') {
value = undefined;
}
if (value && value.hasOwnProperty('isObjectId')) {
value = value._id;
}
return value;
});
};
_jsonFn2.default.parse = function (str, date2obj) {
var iso8061 = date2obj ? /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/ : false;
return JSON.parse(str, function (key, value) {
var prefix;
if (typeof value != 'string') {
return value;
}
if (value.length < 8) {
return value;
}
prefix = value.substring(0, 8);
if (iso8061 && value.match(iso8061)) {
return new Date(value);
}
if (prefix === 'function') {
try {
return eval('(' + value + ')');
} catch (e) {}
}
if (prefix === '_PxEgEr_') {
return eval(value.slice(8));
}
if (prefix === '_NuFrRa_') {
try {
return eval(value.slice(8));
} catch (e) {}
}
return value;
});
};
window._transform = {
transformResponse: function transformResponse(d) {
return JsonFn.parse(d);
}
};
_angular2.default.module('app', [_common2.default, _components2.default]).config(['$compileProvider', function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
}]).controller('appCtrl', function () {});
_angular2.default.element(document).ready(function () {
_angular2.default.bootstrap(document, ['app']);
});
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(1);
/***/ },
/* 2 */
/***/ function(module, exports) {
module.exports = lib_lib;
/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(2);
/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(44);
/***/ },
/* 5 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(334);
/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(60);
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(78);
/***/ },
/* 8 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(154);
/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(333);
/***/ },
/* 10 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(231);
/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(232);
/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _module = __webpack_require__(13);
var _module2 = _interopRequireDefault(_module);
var _module3 = __webpack_require__(114);
var _module4 = _interopRequireDefault(_module3);
var _module5 = __webpack_require__(117);
var _module6 = _interopRequireDefault(_module5);
var _module7 = __webpack_require__(133);
var _module8 = _interopRequireDefault(_module7);
var _module9 = __webpack_require__(135);
var _module10 = _interopRequireDefault(_module9);
var _module11 = __webpack_require__(137);
var _module12 = _interopRequireDefault(_module11);
var _module13 = __webpack_require__(145);
var _module14 = _interopRequireDefault(_module13);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var components = angular.module('components', [_module4.default, _module6.default, _module8.default, _module10.default, _module12.default, _module14.default]);
exports.default = components.name;
/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
__webpack_require__(14);
var _editableFormly = __webpack_require__(15);
var _editableFormly2 = _interopRequireDefault(_editableFormly);
var _module2 = __webpack_require__(16);
var _module3 = _interopRequireDefault(_module2);
var _tpl = __webpack_require__(99);
var _tpl2 = _interopRequireDefault(_tpl);
var _common = __webpack_require__(100);
var _common2 = _interopRequireDefault(_common);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _module = angular.module('components.cmsEditable', [_module3.default, 'ui.bootstrap', _common2.default]).directive('cmsEditable', directive).directive('cmsEditableTransclude', cmsEditableTransclude).directive('cmsDirectEditable', cmsDirectEditableDirective).run(run);
run.$inject = ['$templateCache'];
function run($templateCache) {
$templateCache.put('editable-formly.html', _editableFormly2.default);
}
directive.$inject = ['cms'];
function directive(cms) {
function link(scope, element, attrs, elementController) {
// resolve type and ref
var _elementController$ge = elementController.getElement();
var type = _elementController$ge.type;
var ref = _elementController$ge.ref;
var vm = scope.vm;
vm.showJson = function () {
return false;
};
prepareForm(cms, type, ref, scope);
scope.$watch('model', function (v) {
vm.value = _.get(scope, vm.property);
vm.isValueUndefined = _.isEmpty(vm.value) && isNaN(vm.value);
}, true);
}
return {
require: '^^?cmsElement',
restrict: 'A',
scope: {},
bindToController: {
property: '@cmsEditable'
},
template: _tpl2.default,
controllerAs: 'vm',
controller: function controller() {},
link: link
};
}
// inheritance
cmsDirectEditableDirective.$inject = ['cms', '$filter'];
function cmsDirectEditableDirective(cms, $filter, $timeout) {
function link(scope, element, attrs, elementController) {
var vm = scope.vm;
// resolve type and ref
var type = vm.type;
var ref = vm.ref;
var property = vm.property.replace('model.', '');
var refKey = Types[type].checkAndGetRef(property);
vm.showJson = function () {
return vm._value instanceof Object && !refKey && !(vm._value instanceof Date);
};
scope.$watch('vm._value', function (v) {
if (v instanceof Date) {
vm.value = $filter('date')(v, 'dd-MM-yyyy HH:mm');
} else {
vm.value = v && refKey ? v[refKey] : v;
}
vm.isValueUndefined = typeof vm.value === 'undefined';
}, true);
if (!ref) return;
prepareForm(cms, type, ref, scope);
}
return {
restrict: 'A',
scope: {},
bindToController: {
_value: '=cmsValue',
property: '@cmsDirectEditable',
type: '@cmsType',
ref: '@cmsRef'
},
template: _tpl2.default,
controllerAs: 'vm',
controller: function controller() {},
link: link
};
}
cmsEditableTransclude.$inject = ['cms', '$timeout'];
function cmsEditableTransclude(cms, $timeout) {
function link(scope, element, attrs, elementController) {
var vm = scope.vm;
// resolve type and ref
var _ref = vm.element ? vm.element : elementController.getElement();
var type = _ref.type;
var ref = _ref.ref;
vm.showJson = function () {
return false;
};
prepareForm(cms, type, ref, scope);
scope.$watch('model', function (v) {
vm.value = _.get(scope, vm.property);
vm.isValueUndefined = _.isEmpty(vm.value) && isNaN(vm.value);
}, true);
vm.hide = function () {
$timeout(function () {
return vm.show = false;
}, 1000);
};
}
return {
require: '^^?cmsElement',
restrict: 'A',
scope: {},
bindToController: {
property: '@cmsEditableTransclude',
withEditBtn: '@withEditBtn',
element: '=element'
},
transclude: true,
template: '\n<span class="cms">\n <span ng-if="vm.withEditBtn !== \'true\'"\n popover-placement="bottom"\n popover-is-open="vm.isOpen"\n uib-popover-template="\'editable-formly.html\'"\n popover-append-to-body="true"\n style="cursor: pointer">\n <ng-transclude></ng-transclude>\n <span ng-show="vm.isValueUndefined && !vm.element" class="cms-empty-value">\n empty\n </span> \n </span>\n <span ng-if="vm.withEditBtn === \'true\'" style="position: relative">\n <button ng-style="{opacity:vm.show? 1: 0.1}"\n class="btn btn-white btn-xs"\n popover-placement="bottom"\n popover-is-open="vm.isOpen"\n uib-popover-template="\'editable-formly.html\'"\n popover-append-to-body="true"\n style="position: absolute;z-index: 1000;top:-24px"\n ng-mouseover="vm.show = true" \n ng-mouseout="vm.hide();">\n Edit\n </button>\n <ng-transclude \n ng-mouseover="vm.show = true" \n ng-mouseout="vm.hide();"\n ></ng-transclude>\n <span ng-show="vm.isValueUndefined && !vm.element" class="cms-empty-value">\n empty\n </span> \n </span> \n</span>\n',
controllerAs: 'vm',
controller: function controller() {},
link: link
};
}
function prepareForm(cms, type, ref, scope) {
var vm = scope.vm;
cms.getType(type, ref, function (model) {
var form = Types[type].form;
scope.model = model;
vm.fields = [cms.findField(form, vm.property.split("\.")[1])];
vm.fields[0].templateOptions.focus = 'true';
vm.onSubmit = function () {
cms.updateElement(type, scope.model);
vm.isOpen = false;
};
vm.options = { formState: { path: '' } };
});
}
exports.default = _module.name;
/***/ },
/* 14 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(19);
/***/ },
/* 15 */
/***/ function(module, exports) {
module.exports = "<div class=\"cms\">\n <form ng-submit=\"vm.onSubmit()\" novalidate class=\"form-horizontal cms-field-form\">\n <div style=\"overflow: auto;max-height: 500px;padding-right: 20px;\">\n <formly-form model=\"model\" fields=\"vm.fields\" form=\"vm.form\" options=\"vm.options\">\n </formly-form>\n </div>\n <button type=\"submit\" class=\"btn btn-primary submit-button\" ng-disabled=\"vm.form.$invalid\">Submit</button>\n <button type=\"button\" class=\"btn btn-primary\" ng-click=\"vm.isOpen = false\">Cancel</button>\n </form>\n <br ng-if=\"adminList === 'true'\">\n</div>"
/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
__webpack_require__(17);
var _config = __webpack_require__(18);
var _config2 = _interopRequireDefault(_config);
var _apiCheck2 = __webpack_require__(52);
var _apiCheck3 = _interopRequireDefault(_apiCheck2);
__webpack_require__(53);
__webpack_require__(54);
__webpack_require__(58);
__webpack_require__(59);
__webpack_require__(60);
__webpack_require__(61);
__webpack_require__(62);
__webpack_require__(63);
__webpack_require__(64);
__webpack_require__(66);
var _selectize = __webpack_require__(67);
var _selectize2 = _interopRequireDefault(_selectize);
__webpack_require__(68);
var _tinycolor2 = __webpack_require__(69);
var _tinycolor3 = _interopRequireDefault(_tinycolor2);
__webpack_require__(70);
__webpack_require__(71);
__webpack_require__(72);
var _codemirror = __webpack_require__(73);
var _codemirror2 = _interopRequireDefault(_codemirror);
__webpack_require__(74);
__webpack_require__(75);
__webpack_require__(76);
__webpack_require__(77);
__webpack_require__(78);
__webpack_require__(79);
__webpack_require__(80);
__webpack_require__(81);
__webpack_require__(82);
__webpack_require__(83);
__webpack_require__(84);
__webpack_require__(85);
__webpack_require__(86);
__webpack_require__(87);
__webpack_require__(88);
var _tern2 = __webpack_require__(89);
var _tern3 = _interopRequireDefault(_tern2);
__webpack_require__(90);
__webpack_require__(91);
__webpack_require__(92);
__webpack_require__(93);
__webpack_require__(94);
__webpack_require__(95);
__webpack_require__(96);
__webpack_require__(97);
__webpack_require__(98);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
window.apiCheck = _apiCheck3.default;
apiCheck.globalConfig.disabled = true;
window.Selectize = _selectize2.default;
window.tinycolor = _tinycolor3.default;
window.CodeMirror = _codemirror2.default;
window.tern = _tern3.default;
var _module = angular.module('components.formly', ['formly', 'formlyBootstrap', 'ngJsTree', 'ui.select', 'ngSanitize', 'angular.filter', 'ui.codemirror', 'color.picker', 'dndLists', 'uiSwitch', 'selectize']).config(_config2.default).constant('size', { label: 'col-sm-2', input: 'col-sm-10' });
exports.default = _module.name;
/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {
module.exports = (__webpack_require__(2))(49);
/***/ },
/* 18 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _panel = __webpack_require__(19);
var _panel2 = _interopRequireDefault(_panel);
var _repeatSection = __webpack_require__(20);
var _repeatSection2 = _interopRequireDefault(_repeatSection);
var _repeatSection3 = __webpack_require__(21);
var _repeatSection4 = _interopRequireDefault(_repeatSection3);
var _treeTemplate = __webpack_require__(22);
var _treeTemplate2 = _interopRequireDefault(_treeTemplate);
var _tree = __webpack_require__(23);
var _tree2 = _interopRequireDefault(_tree);
var _refSelect = __webpack_require__(24);
var _refSelect2 = _interopRequireDefault(_refSelect);
var _ref = __webpack_require__(25);
var _ref2 = _interopRequireDefault(_ref);
var _code = __webpack_require__(27);
var _code2 = _interopRequireDefault(_code);
var _code3 = __webpack_require__(28);
var _code4 = _interopRequireDefault(_code3);
var _array = __webpack_require__(34);
var _array2 = _interopRequireDefault(_array);
var _arrayTemplate = __webpack_require__(35);
var _arrayTemplate2 = _interopRequireDefault(_arrayTemplate);
var _table = __webpack_require__(36);
var _table2 = _interopRequireDefault(_table);
var _tableTemplate = __webpack_require__(37);
var _tableTemplate2 = _interopRequireDefault(_tableTemplate);
var _selectType = __webpack_require__(38);
var _selectType2 = _interopRequireDefault(_selectType);
var _selectElement = __webpack_require__(39);
var _selectElement2 = _interopRequireDefault(_selectElement);
var _selectProperty = __webpack_require__(40);
var _selectProperty2 = _interopRequireDefault(_selectProperty);
var _selectChildProperty = __webpack_require__(41);
var _selectChildProperty2 = _interopRequireDefault(_selectChildProperty);
var _selectFn = __webpack_require__(42);
var _selectFn2 = _interopRequireDefault(_selectFn);
var _select = __webpack_require__(43);
var _select2 = _interopRequireDefault(_select);
var _selectWhole = __webpack_require__(44);
var _selectWhole2 = _interopRequireDefault(_selectWhole);
var _multiSelect = __webpack_require__(45);
var _multiSelect2 = _interopRequireDefault(_multiSelect);
var _bsGridSelect = __webpack_require__(46);
var _bsGridSelect2 = _interopRequireDefault(_bsGridSelect);
var _bsGridSelect3 = __webpack_require__(47);
var _bsGridSelect4 = _interopRequireDefault(_bsGridSelect3);
var _checkbox = __webpack_require__(48);
var _checkbox2 = _interopRequireDefault(_checkbox);
var _saveContainersController = __webpack_require__(49);
var _saveContainersController2 = _interopRequireDefault(_saveContainersController);
var _recursive = __webpack_require__(50);
var _recursive2 = _interopRequireDefault(_recursive);
var _recursive3 = __webpack_require__(51);
var _recursive4 = _interopRequireDefault(_recursive3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
config.$inject = ['formlyConfigProvider', 'size', '$rootScopeProvider'];
function config(formlyConfigProvider, size, $rootScopeProvider) {
$rootScopeProvider.digestTtl(20);
var config = formlyConfigProvider;
config.disableWarnings = true;
config.removeWrapperByName('bootstrapLabel');
config.setWrapper({
name: 'bootstrapLabel',
template: '\n <div>\n <label for="{{id}}" class="control-label {{!to.class ? \'' + size.label + '\' : \'\'}}"\n uib-tooltip-html=\'to.tooltip\'>\n {{to.label}} {{to.required ? \'*\' : \'\'}}\n </label>\n <div class="{{!to.class ? \'' + size.input + '\' : \'\'}}"><formly-transclude></formly-transclude></div>\n </div>\n '
});
config.removeWrapperByName('bootstrapHasError');
config.setWrapper({
name: 'bootstrapHasError',
template: '\n <div ng-if="!to.class" class="clearfix"></div>\n <div ng-if="!to.class" ng-class="[\'form-group\',\'\']" ng-class="{\'has-error\': showError}" >\n <formly-transclude></formly-transclude>\n </div>\n \n <div ng-if="to.class" ng-class="[to.class]" ng-class="{\'has-error\': showError}" style="margin-bottom: 15px;">\n <formly-transclude></formly-transclude>\n </div>\n '
});
// Replace formlyBootstrap input field type to implement read-only forms
config.setType({
name: 'input',
template: '\n <div>\n <input ng-if="!formState.readOnly" class="form-control" ng-model="model[options.key]" >\n <p ng-if="formState.readOnly" class="form-control-static">{{model[options.key]}}</p>\n </div>\n ',
wrapper: ['bootstrapLabel', 'bootstrapHasError'],
overwriteOk: true
});
config.setWrapper({
name: 'checkboxWrapper',
template: '\n <div ng-if="!to.class" class="form-group"><div class="col-sm-offset-2 col-sm-10"><formly-transclude></formly-transclude></div></div>\n <div ng-if="to.class" class="form-group"><div ng-class="[to.class]"><formly-transclude></formly-transclude></div></div>\n '
});
config.setType({
name: 'checkbox',
template: '\n <div class="checkbox">\n <label style="padding-left: 0px;">\n <switch ng-model="model[options.key]" class="green "></switch>\n </label>\n <span style="position: absolute">\n {{to.label}}\n {{to.required ? \'*\' : \'\'}}\n </span>\n </div>\n',
wrapper: ['checkboxWrapper'],
overwriteOk: true
});
config.setWrapper({
name: 'panel',
template: _panel2.default
});
config.setType({
name: 'repeatSection',
template: _repeatSection2.default,
controller: _repeatSection4.default
});
config.setType({
name: 'tree',
template: _treeTemplate2.default,
controller: _tree2.default,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'refSelect',
template: _refSelect2.default,
controller: _ref2.default,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'code',
template: _code2.default,
controller: _code4.default
});
config.setType({
name: 'image',
template: '\n <div class="row" style="padding-top:7px;">\n <div class="col-sm-7" style="padding-left: 0px;padding-right: 0px;">\n <div class="col-sm-6">\n <input type="text" class="form-control input-xs" ng-model="model[options.key]" placeholder="URL">\n </div>\n <div class="col-sm-6">\n <div class = "input-group">\n <input ng-model="filename" class="form-control input-xs"\n placeholder="filename">\n <span class = "input-group-btn">\n <button class="btn btn-white btn-sm" type="button" ng-click="download(filename)" style="margin: 0px;">\n Save\n </button>\n </span>\n </div>\n </div>\n </div>\n <div class="col-sm-5">\n <div class = "input-group">\n <input type="file" ngf-select ng-model="file"\n name="file" class="form-control input-xs"\n placeholder="file upload">\n <span class = "input-group-btn">\n <button class="btn btn-white btn-sm" type="button" ng-click="onFileUpload(file)" style="margin: 0px;">\n Up\n </button>\n </span>\n </div>\n \n \n </div>\n </div>\n \n <img ng-if="model[options.key]" ng-src="{{model[options.key]}}" width="40px" height="40px">\n ',
controller: function controller($scope, cms, $http) {
$scope.genName = true;
$scope.onFileUpload = function (file) {
//files: an array of files selected, each file has name, size, and type.
cms.uploadFile(file, '.image', function () {
$scope.model[$scope.options.key] = '.image/' + file.name;
if ($scope.w) $scope.model[$scope.options.key] = $scope.model[$scope.options.key] + '?w=' + $scope.w;
$scope.file = null;
console.log('upload successful');
});
};
$scope.download = function (filename) {
$http.post('api/saveimage', { url: $scope.model[$scope.options.key], filename: filename }).then(function () {
$scope.model[$scope.options.key] = '.image/' + filename;
if ($scope.w) $scope.model[$scope.options.key] = $scope.model[$scope.options.key] + '?w=' + $scope.w;
});
};
},
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
/*
<button class="btn btn-white"
type="button"
style="z-index: 10;position: fixed;margin-right: 33px;right: 0px;"
>
hex8</button>
*/
config.setType({
name: 'color',
template: '\n <color-picker\n ng-init=""\n ng-model="model[options.key]"\n color-picker-format="\'hex\'"\n color-picker-alpha="true"\n color-picker-case="\'lower\'"\n ></color-picker>\n ',
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'array',
template: _arrayTemplate2.default,
controller: _array2.default
});
config.setType({
name: 'tableSection',
template: _tableTemplate2.default,
controller: _table2.default,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select',
template: _select2.default,
controller: function controller($scope) {},
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select-ref-static',
template: _select2.default,
controller: function controller($scope, cms) {
var type = $scope.options.templateOptions.Type;
$scope.to.options = [];
cms.loadElements(type, function () {
var _$scope$to$options;
(_$scope$to$options = $scope.to.options).push.apply(_$scope$to$options, _toConsumableArray(_.map(Types[type].list, function (e) {
var value = cms.getTitle(type, e._id);
return {
value: value,
name: $scope.to.labelProp ? e[$scope.to.labelProp] : value
};
})));
});
},
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select-whole',
template: _selectWhole2.default,
controller: function controller() {},
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'recursive',
template: _recursive2.default,
controller: _recursive4.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select-type',
template: _select2.default,
controller: _selectType2.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select-element',
template: _selectWhole2.default,
controller: _selectElement2.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select-property',
template: _select2.default,
controller: _selectProperty2.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select-child-property',
template: _select2.default,
controller: _selectChildProperty2.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'select-fn',
template: _select2.default,
controller: _selectFn2.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'multi-select',
template: _multiSelect2.default,
controller: function controller() {},
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'bs-grid-select',
template: _bsGridSelect4.default,
controller: _bsGridSelect2.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
config.setType({
name: 'save-containers',
template: '\n <button class="btn btn-sm"\n type="button"\n ng-click="save()"\n ng-class="{\'btn-success\' : model[options.key],\'btn-white\' : !model[options.key]}"\n >save</button>\n <button class="btn btn-sm btn-danger"\n type="button"\n ng-click="restore()"\n ng-show="model[options.key]"\n >restore</button>\n ',
controller: _saveContainersController2.default,
overwriteOk: true,
wrapper: ['bootstrapLabel', 'bootstrapHasError']
});
}
exports.default = config;
/***/ },
/* 19 */
/***/ function(module, exports) {
module.exports = "<div class=\"clearfix\"></div>\n<div ng-if=\"!to.noPanel\"\n ng-show=\"!(model[options.key].null && to.null)\"\n class=\"cms-panel\" ng-init=\"state = {_show :true}\"\n style=\"position: relative;\">\n\n <button type=\"button\" class=\"btn btn-xs btn-white\" ng-if=\"to.null\"\n style=\"position: relative;right: 0px;margin-top: 15px;z-index: 1;\"\n ng-click=\"model[options.key].null = true;\">\n <i class=\"fa fa-trash-o\"></i>\n </button>\n\n <fieldset style=\"padding: 0 10px 10px 10px;position: relative;top:0px;\n border: 1px solid #eee;border-radius:4px;background-color: rgba(128, 128, 128, 0.03)\">\n <legend style=\"color: #337ab7;font-weight: 200;border: 0;margin-left: 10px;width: initial;padding: 0 5px;\"\n ng-if=\"to.label\"\n ng-style=\"{color:to.choice?'#8338b7':'#337ab7'}\">\n <span ng-show=\"to.choice\"\n uib-dropdown on-toggle=\"toggled(open)\">\n <span uib-dropdown-toggle\n uib-tooltip='{{to.tooltip}}'\n style=\"cursor: pointer\">\n {{options.templateOptions.label}}</span>\n <ul uib-dropdown-menu aria-labelledby=\"simple-dropdown\">\n <li ng-repeat=\"v in options.fieldGroup track by $index\"\n ng-show=\"v.key !== 'choice'\">\n <a ng-click=\"options.key && options.key !== ''? (model[options.key].choice = v.key): (model.choice = v.key);\">\n {{v.key}}</a>\n </li>\n </ul>\n\n </span>\n <span ng-if=\"!to.choice\"\n uib-tooltip='{{to.tooltip}}'>\n {{options.templateOptions.label}}\n </span>\n <button type=\"button\" ng-click=\"state._show = !state._show\"\n class=\"btn btn-white btn-xs\"\n style=\"border: none;background-color: transparent;\"\n ng-bind=\"state._show? '-': '+'\">\n </button>\n </legend>\n <div ng-show=\"state._show\">\n <formly-transclude></formly-transclude>\n </div>\n </fieldset>\n <br>\n</div>\n<div ng-if=\"to.noPanel\">\n <formly-transclude></formly-transclude>\n</div>\n<div ng-show=\"(model[options.key].null && to.null)\">\n <div class=\"form-group\">\n <div class=\"col-sm-offset-2 col-sm-10\">\n <button type=\"button\" class=\"btn btn-white btn-xs\"\n ng-click=\"model[options.key].null = false;\" style=\"z-index: 1;\"> add {{to.label}}\n </button>\n </div>\n </div>\n</div>\n"
/***/ },
/* 20 */
/***/ function(module, exports) {
module.exports = "<div class=\"clearfix\"></div>\n<div>\n <div dnd-list=\"model[options.key]\"\n class=\"cms-containers\" style=\"min-height: 0px\">\n <div class=\"repeatsection\"\n style=\"position: relative\"\n ng-repeat=\"element in model[options.key]\"\n dnd-draggable=\"element\"\n dnd-moved=\"model[options.key].splice($index, 1);\"\n dnd-effect-allowed=\"move\"\n ng-init=\"_fields = copyFields(to.fields)[0];_options = createFormOptions($index)\">\n\n\n\n <dnd-nodrag style=\"display: block\">\n <div style=\"position: absolute;right: 0px;z-index: 10;\" ng-style=\"{'margin-top': marginTop}\">\n <button type=\"button\" class=\"btn btn-xs btn-white\"\n ng-click=\"model[options.key].splice($index, 1)\">\n <i class=\"fa fa-trash-o\"></i>\n </button>\n <button type=\"button\" dnd-handle class=\"btn btn-xs btn-white\" style=\"cursor: move;\">:::</button>\n </div>\n\n <formly-field options=\"_fields\"\n form-options=\"{}\"\n form-state=\"_options.formState\"\n model=\"element\"\n form=\"form\">\n </formly-field>\n </dnd-nodrag>\n </div>\n </div>\n\n <div class=\"form-group\">\n <div class=\"col-sm-offset-2 col-sm-10\">\n <div ng-if=\"!choice\">\n <button type=\"button\" class=\"btn btn-white btn-xs\"\n ng-click=\"addNew()\">{{to.btnText}}\n </button>\n </div>\n <div ng-if=\"choice\">\n <div class=\"btn-group-xs\" uib-dropdown>\n <button type=\"button\" class=\"btn btn-white\" uib-dropdown-toggle>\n {{to.btnText}} <span class=\"caret\"></span>\n </button>\n <ul class=\"scrollable-menu\" uib-dropdown-menu role=\"menu\" aria-labelledby=\"btn-append-to-body\"\n style=\"z-index: 10000;\">\n <li style=\"padding: 0px 20px;\" ng-show=\"choice.length > 7\">\n <input type=\"text\" ng-model=\"_choice\" ng-click=\"$event.stopPropagation();\">\n </li>\n <li role=\"menuitem\" ng-repeat=\"c in choice | filter: _choice track by $index\">\n <a ng-click=\"addNewWithChoice(c); _choice = ''\">{{c}}</a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n\n</div>\n"
/***/ },
/* 21 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
controller.$inject = ['$scope'];
function controller($scope) {
$scope.choice = $scope.to.fields[0].templateOptions.choice;
$scope.marginTop = $scope.choice ? '0px' : '15px';
if ($scope.choice) $scope.to.fields[0].templateOptions.noPanel = true;
$scope.formOptions = { formState: $scope.formState };
$scope.addNew = function () {
$scope.model[$scope.options.key] = $scope.model[$scope.options.key] || [];
$scope.model[$scope.options.key].push({});
};
$scope.addNewWithChoice = function (choice) {
$scope.model[$scope.options.key] = $scope.model[$scope.options.key] || [];
$scope.model[$scope.options.key].push({ choice: choice });
};
$scope.copyFields = function (fields) {
return angular.copy(fields);
};
$scope.createFormOptions = function ($index) {
var path = $scope.formState.path + '.' + $scope.options.key + '[' + $index + ']';
if (_.startsWith(path, '.')) path = path.substring(1);
return {
formState: {
path: path,
model: $scope.formState.model || $scope.model
}
};
};
}
exports.default = controller;
/***/ },
/* 22 */
/***/ function(module, exports) {
module.exports = "<div js-tree=\"treeConfig\"\n ng-model=\"tree\"\n tree=\"data.treeInstance\"\n tree-events=\"check_node:check;uncheck_node:check;\"></div>\n"
/***/ },
/* 23 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
controller.$inject = ['$scope', '$timeout', 'size'];
/**
*
* @param {{treeInstance}} $scope
* @param $timeout
*/
function controller($scope, $timeout) {
$scope.tree = $scope.options.templateOptions.options;
$scope.treeConfig = {
core: {
themes: { name: 'proton', responsive: true },
animation: true,
check_callback: true
},
plugins: ["checkbox"],
checkbox: {
tie_selection: false
},
version: 1
};
$timeout(function () {
return $scope.treeConfig.version++;
});
$scope.data = {};
$scope.check = function () {
$timeout(function () {
var _arr = $scope.data.treeInstance.jstree(true).get_checked();
_arr = _arr.map(function (id) {
return $scope.data.treeInstance.jstree(true).get_node(id).text;
});
$scope.model[$scope.options.key] = _arr;
});
};
}
exports.default = controller;
/***/ },
/* 24 */
/***/ function(module, exports) {
module.exports = "<selectize config='config' options='models' ng-model=\"_model\"></selectize>"
/***/ },
/* 25 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _QueryBuilder = __webpack_require__(26);
var _QueryBuilder2 = _interopRequireDefault(_QueryBuilder);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
controller.$inject = ['$scope', 'cms', '$timeout'];
function controller($scope, cms, $timeout) {
// resolve
var type = $scope.options.templateOptions.Type;
$scope.models = [];
var labelProp = $scope.to.labelProp;
$scope.config = {
plugins: ['remove_button'],
dropdownParent: 'body',
valueField: '_id',
labelField: labelProp,
searchField: [labelProp],
onChange: function onChange(val) {
$timeout(function () {
if (!$scope.to.multiple) {
$scope.model[$scope.options.key] = _.find($scope.models, { _id: val });
} else {
$scope.model[$scope.options.key] = val.map(function (_id) {
return _.find($scope.models, { _id: _id });
});
}
});
},
onInitialize: function onInitialize(selectize) {
$scope.selectize = selectize;
}
};
if ($scope.to.async) {
$scope.config.load = function (query, callback) {
var queryBuilder = new _QueryBuilder2.default().limit(100).query({ _textIndex: $scope.to.makeRegex ? $scope.to.makeRegex(query) : new RegExp(query, 'i') });
cms.loadElements(type, function (list) {
// $scope.models = list;
callback(list);
}, queryBuilder);
};
} else if ($scope.to.showWithQuery) {
$scope.config.load = function (query, callback) {
if (!query || query === '') return callback([]);
callback(Types[type].list);
};
} else {
cms.loadElements(type, function () {
var _$scope$models;
(_$scope$models = $scope.models).push.apply(_$scope$models, _toConsumableArray(Types[type].list));
});
}
if (!$scope.to.multiple) $scope.config.maxItems = 1;
if ($scope.to.sortField) {
$scope.config.sortField = $scope.to.sortField;
$scope.config.score = function (search) {
return function (item) {
if (item[$scope.to.labelProp].toLowerCase().indexOf(search.toLowerCase()) === -1) return 0;
return 1000000 - item[$scope.to.sortField];
};
};
}
$scope.$watch('model[\'' + $scope.options.key + '\']', function () {
if ($scope.model[$scope.options.key] && $scope.model[$scope.options.key]._id) {
$scope._model = $scope.model[$scope.options.key]._id;
if (!_.includes($scope.models.map(function (obj) {
return obj._id;
}), $scope.model[$scope.options.key]._id)) {
$scope.models.push($scope.model[$scope.options.key]);
}
} else if (Array.isArray($scope.model[$scope.options.key]) && $scope.model[$scope.options.key][0]._id) {
$scope._model = $scope.model[$scope.options.key].map(function (m) {
return m._id;
});
} else if (!$scope.model[$scope.options.key]) {
$scope._model = '';
if ($scope.selectize) $scope.selectize.clear();
}
});
}
exports.default = controller;
/***/ },
/* 26 */
/***/ function(module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var QueryBuilder = function () {
function QueryBuilder() {
_classCallCheck(this, QueryBuilder);
this._part = false;
this._query = [];
}
_createClass(QueryBuilder, [{
key: "part",
value: function part(_part) {
this._part = _part;
return this;
}
}, {
key: "limit",
value: function limit(_limit) {
this._limit = _limit;
return this;
}
}, {
key: "page",
value: function page(_page) {
this._page = _page;
return this;
}
}, {
key: "sort",
value: function sort(_sort) {
if (_sort) this._sort = JSON.stringify(_sort);
return this;
}
}, {
key: "query",
value: function query(_query) {
if (_query) this._query.push(_query);
return this;
}
}, {
key: "search",
value: function search(_search) {
if (_search) this._search = _search;
return this;
}
}, {
key: "populate",
value: function populate(_populate) {
if (_populate) this._populate = _populate;
return this;
}
}, {
key: "lean",
value: function lean() {
this._lean = true;
}
}, {
key: "build",
value: function build() {
this._skip = (this._page - 1) * this._limit;
var params = '';
if (this._limit) params += "limit=" + this._limit;
if (this._skip) params += "&skip=" + this._skip;
if (this._query) params += "&query=" + JSON.stringify(this._query);
if (this._sort) params += "&sort=" + this._sort;
return params;
}
}, {
key: "buildJson",
value: function buildJson() {
this._skip = (this._page - 1) * this._limit;
var query = void 0;
if (this._search && this._query) {
query = { $and: [{ _textIndex: new RegExp(this._search, "i") }].concat(_toConsumableArray(this._query)) };
} else if (this._search) {
query = { _textIndex: new RegExp(this._search, "i") };
} else if (this._query.length > 0) {
query = { $and: [].concat(_toConsumableArray(this._query)) };
}
var result = {};
if (this._limit) result.limit = this._limit;
if (this._skip) result.skip = this._skip;
if (query) result.query = query;
if (this._sort) result.limit = this._sort;
if (this._part) result.limit = this._part;
if (this._populate) result.populate = this._populate;
if (this._lean) result.lean = true;
return result;
}
}]);
return QueryBuilder;
}();
exports.default = QueryBuilder;
/***/ },
/* 27 */
/***/ function(module, exports) {
module.exports = "<div class=\"form-group\">\n <label class=\"control-label {{size.label}}\" uib-tooltip='{{to.tooltip}}'>\n {{to.label}}\n </label>\n <div class=\"{{size.input}}\">\n\n <button type=\"button\"\n class=\"btn btn-white btn-xs\"\n style=\"margin-top: 7px;\"\n ng-click=\"showCode(); selectTab();\">\n {{!show? 'show code': 'hide code'}}\n </button>\n <span class=\"label label-danger\" ng-show=\"hasError\">The code has error</span>\n </div>\n\n</div>\n<ui-codemirror ng-show=\"show\"\n ng-model=\"_model\"\n ui-codemirror-opts=\"editorOptions\"\n ui-codemirror=\"{ onLoad : codemirrorLoaded }\"\n ui-refresh='refresh'>\n</ui-codemirror>\n<br>"
/***/ },
/* 28 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function($) {'use strict';
Object.defineProperty(exports, "