This commit is contained in:
GGJ
2025-01-09 19:02:44 +08:00
commit 92e7a7a5eb
2943 changed files with 1152283 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
<template>
<span class="avater">
{{ avater }}
</span>
</template>
<script>
export default {
props: {
name: {
type: String,
required: true
}
},
computed: {
avater() {
const length = this.name.length
if (length >= 3) {
return this.name.substring(length - 2)
} else {
return this.name
}
}
}
}
</script>
<style lang="scss" scoped>
.avater {
display: inline-block;
width: 30px;
height: 30px;
padding: 0;
overflow: hidden;
font-size: 12px;
line-height: 30px;
color: #fff;
text-align: center;
text-shadow: transparent 0 0 0;
vertical-align: middle;
background: $themeColor;
border-radius: 30px;
zoom: 1;
flex: none;
}
</style>

View File

@@ -0,0 +1,60 @@
<template>
<div :style="{height:height,width:width}" />
</template>
<script>
import echarts from 'echarts'
import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event'
export default {
name: 'charts',
props: {
options: {
type: Object,
required: true
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '100%'
}
},
watch: {
options: {
handler(options) {
this.chart.setOption(this.options)
window.echartsArr.push(this.chart)
},
deep: true
}
},
mounted() {
this.initChart()
},
beforeDestroy() {
if (!this.chart) {
return
}
this.chart.dispose()
this.chart = null
removeResizeListener(this.$el, this.doResize)
},
methods: {
initChart() {
this.chart = echarts.init(this.$el)
this.chart.setOption(this.options)
window.echartsArr.push(this.chart)
addResizeListener(this.$el, this.doResize)
},
doResize() {
this.chart && this.chart.resize()
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,155 @@
<template>
<div>
<div>
<svg-icon class="map" icon-class="map" @click="open" />
<span v-if="value">经度{{ value.lng }} 纬度{{ value.lat }}</span>
</div>
<el-dialog
:close-on-click-modal="false"
v-el-drag-dialog
title="位置标注"
:visible.sync="visible"
append-to-body
custom-class="coordinate-map-dialog"
>
<div
id="coordinate-map"
v-loading="$loadingPlugin.initMap"
class="map-content"
/>
<div slot="footer">
<el-button @click="visible = false"> 取消 </el-button>
<el-button type="primary" @click="success"> 确定 </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
name: "coordinate",
props: {
center: {
type: Object,
// 北京
default: () => ({ lng: 116.404, lat: 39.915 }),
},
value: {
required: true,
},
ak: {
type: String,
default: "tBPMcunBdcz7bgG26l7LydiV",
},
},
data() {
return {
visible: false,
position: null,
};
},
methods: {
open() {
this.visible = true;
this.position = this.value;
this.initMap(this.position);
},
success() {
if (this.position) {
this.$emit("input", this.position);
}
this.visible = false;
},
async initMap(position) {
const BMap = await this.getMapScript();
const map = new BMap.Map("coordinate-map");
const center = new BMap.Point(this.center.lng, this.center.lat);
map.centerAndZoom(center, 15);
map.enableScrollWheelZoom();
map.enableInertialDragging();
map.enableContinuousZoom();
const control = new BMap.ScaleControl({
anchor: window.BMAP_ANCHOR_TOP_RIGHT,
}); // 右上角,添加比例尺控件
const navigation = new BMap.NavigationControl({
anchor: window.BMAP_ANCHOR_TOP_RIGHT,
}); // 右上角,添加缩放平移控件
const city = new BMap.CityListControl({
anchor: window.BMAP_ANCHOR_TOP_LEFT,
offset: new BMap.Size(10, 20),
}); // 左上角,添加城市选择控件
const geolocationControl = new BMap.GeolocationControl(); // 左下角添加定位控件
map.addControl(control);
map.addControl(navigation);
map.addControl(city);
map.addControl(geolocationControl);
// 定位失败事件
geolocationControl.addEventListener("locationError", (e) => {
this.$message.error("定位失败:" + e.message);
});
let marker;
if (position) {
const point = new BMap.Point(position.lng, position.lat);
marker = new BMap.Marker(point);
map.addOverlay(marker);
marker.enableDragging();
map.panTo(point);
}
map.addEventListener("click", (e) => {
if (marker) {
map.removeOverlay(marker);
marker = null;
}
const point = new BMap.Point(e.point.lng, e.point.lat);
marker = new BMap.Marker(point);
map.addOverlay(marker);
marker.enableDragging();
map.panTo(point);
this.position = { lng: e.point.lng, lat: e.point.lat };
});
},
getMapScript() {
if (!window.BMap) {
return new Promise((resolve, reject) => {
const $script = document.createElement("script");
global.document.body.appendChild($script);
$script.src = `https://api.map.baidu.com/api?v=2.0&ak=${this.ak}&callback=_initBaiduMap`;
window._initBaiduMap = () => {
resolve(window.BMap);
global.document.body.removeChild($script);
};
$script.onerror = (e) => {
reject();
this.$message.error("百度地图控件加载失败,请检查网络并重试!");
};
});
} else {
return Promise.resolve(window.BMap);
}
},
},
};
</script>
<style lang="scss" scoped>
.map {
margin-right: 10px;
font-size: 20px;
cursor: pointer;
&:hover {
color: $themeColor;
}
}
</style>
<style lang="scss">
.coordinate-map-dialog {
min-width: 700px;
.el-dialog__body {
height: 70vh;
padding: 0;
.map-content {
width: 100%;
height: 100%;
}
}
}
</style>

View File

@@ -0,0 +1,7 @@
import Coordinate from './coordinate'
/* istanbul ignore next */
Coordinate.install = function(Vue) {
Vue.component(Coordinate.name, Coordinate)
}
export default Coordinate

View File

@@ -0,0 +1,156 @@
<script>
import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event'
export default {
name: 'el-table-form',
props: {
maxCols: { // 大屏下一行最多显示几列,遵循24栅格布局
type: Number,
default: 6
},
defaultOpen: {
type: Boolean,
default: false
}
},
data() {
return {
inline: true,
open: this.defaultOpen,
span: 6,
cols: 4
}
},
watch: {
maxCols: {
handler(val) {
if (24 % val) {
throw new Error('遵循24栅格布局请保证maxCols能被24整除')
}
this.$nextTick(this.resize)
},
immediate: true
}
},
mounted() {
addResizeListener(this.$el, this.resize)
// window.addEventListener('resize',this.resize)
},
beforeDestroy() {
removeResizeListener(this.$el, this.resize)
// window.removeEventListener('resize',this.resize)
},
methods: {
resize() {
const { maxCols } = this
const width = this.$el.offsetWidth
let cols
if (width > 1400) {
cols = maxCols
} else if (width >= 996) {
cols = maxCols < 4 ? maxCols : 4
} else if (width >= 768) {
cols = maxCols < 3 ? maxCols : 3
} else if (width >= 660) {
cols = maxCols < 2 ? maxCols : 2
} else {
cols = 1
}
this.cols = cols
this.span = 24 / cols
},
// 支持el-from的方法
validate(...arg) {
this.$refs.elForm.resetFields(...arg)
},
validateField(...arg) {
this.$refs.elForm.resetFields(...arg)
},
resetFields() {
this.$refs.elForm.resetFields()
},
clearValidate() {
this.$refs.elForm.clearValidate()
}
},
render(h) {
const childrens = this.$slots.default.filter(item => item.tag)
const getMerge = (vnode) => {
let merge = 1
if (vnode.data && vnode.data.attrs && vnode.data.attrs['table-form-merge']) {
merge = vnode.data.attrs['table-form-merge']
}
return merge ? Number(merge) : 1
}
let idx = 0
const vnodes = childrens.map(item => {
idx += getMerge(item)
const newVnode = {
...item,
span: getMerge(item) * this.span > 24 ? 24 : getMerge(item) * this.span,
idx: idx
}
return newVnode
})
return (
<div>
<el-form ref='elForm' class='el-table-form' inline={this.inline} on={this.$listeners} attrs={this.$attrs}>
<el-row type='flex'>
{
vnodes.map((item, index) => (
<el-col class='item' key={index} span={item.span} v-show={this.open || item.idx < this.cols}>
{item}
</el-col>
))
}
<el-col span={this.span}>
<el-form-item class='right'>
{this.$slots.btns}
<el-link v-show={vnodes[vnodes.length - 1] && vnodes[vnodes.length - 1].idx >= this.cols} style='margin-left: 10px;' type='primary' underline={false} onClick={() => this.open = !this.open}>
{this.open ? '收起' : '展开'} <i class={this.open ? 'el-icon-arrow-up' : 'el-icon-arrow-down'}/>
</el-link>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
)
}
}
</script>
<style lang="scss" scoped>
.el-table-form {
& ::v-deep .el-row {
flex-wrap: wrap;
}
.item ::v-deep .el-form-item {
display: flex;
.el-form-item__label {
flex-shrink: 0;
&,
& > label {
font-size: 14px;
font-weight: normal;
color: #333;
}
}
.el-form-item__content {
flex: 1;
& > *:not(.el-col) {
width: 100%;
}
}
}
}
.right {
& ::v-deep .el-form-item__content {
display: flex;
.el-link {
flex-shrink: 0;
}
}
}
</style>

View File

@@ -0,0 +1,7 @@
import ElTableForm from './el-table-form'
/* istanbul ignore next */
ElTableForm.install = function(Vue) {
Vue.component(ElTableForm.name, ElTableForm)
}
export default ElTableForm

View File

@@ -0,0 +1,430 @@
<!--
* @moduleName: 下拉树组件
-->
<template>
<div class="el-tree-select">
<!-- 下拉文本 -->
<el-select :clearable="clearable" style="width:100%" :style="styles" class="el-tree-select-input" v-model="labels" :disabled="disabled" popper-class="select-option" ref="select" v-bind="selectParams" :popper-append-to-body="false" :filterable="false" v-popover:popover @remove-tag="_selectRemoveTag" @clear="_selectClearFun" @focus="_popoverShowFun"></el-select>
<!-- 弹出框 -->
<el-popover :disabled="disabled" ref="popover" :placement="placement" popper-class="el-tree-select-popper" :width="width" v-model="visible" trigger="click">
<!-- 是否显示搜索框 -->
<el-input v-if="treeParams.filterable" v-model="keywords" size="mini" class="input-with-select mb10" @change="_searchFun">
<el-button slot="append" icon="el-icon-search"></el-button>
</el-input>
<el-scrollbar tag="div" wrap-class="el-select-dropdown__wrap" view-class="el-select-dropdown__list" class="is-empty">
<!-- 树列表 -->
<el-tree ref="tree" v-show="data.length>0" v-bind="treeParams" :data="data" :node-key="propsValue" :draggable="false" :current-node-key="ids.length>0?ids[0]:''" :show-checkbox="selectParams.multiple" :filter-node-method="_filterFun" @node-click="_treeNodeClickFun" @check="_treeCheckFun"></el-tree>
<!-- 暂无数据 -->
<div v-if="data.length===0" class="no-data">暂无数据</div>
</el-scrollbar>
</el-popover>
</div>
</template>
<style>
.el-tree-select .select-option {
display: none !important;
}
.el-tree-select-popper {
max-height: 400px;
overflow: auto;
}
.el-tree-select-popper .el-button--small {
width: 25px !important;
min-width: 25px !important;
}
.el-tree-select-popper[x-placement^='bottom-start'] {
margin-top: 5px;
}
.mb10 {
margin-bottom: 10px;
}
.no-data {
height: 32px;
line-height: 32px;
font-size: 14px;
color: #cccccc;
text-align: center;
}
</style>
<script>
import { on, off } from './utils/dom';
import { each } from './utils/utils';
// @group api
export default {
name: 'ElTreeSelect',
props: {
// v-model,存储的是treeParams.data里面的id
value: {
// `String` / `Array`
type: [String, Number, Array],
// `''`
default() {
return '';
}
},
// el-select样式
styles: {
type: Object,
// {}
default() {
return {};
}
},
// 是否禁用文本框
disabled: {
type: Boolean,
// false
default() {
return false;
}
},
clearable: {
type: Boolean,
// false
default() {
return true;
}
},
// 弹出框位置
placement: {
type: String,
// bottom
default() {
return 'bottom-start';
}
},
popoverWidth: {
type: [String, Number],
default: ''
},
/*
文本框参数几乎支持el-select所有的API<br>
取消参数:<br>
设定下拉框的弹出框隐藏:<br>
`:popper-append-to-body="false"` <br>
搜索从弹出框里面执行: <br>
`:filterable="false"`
*/
selectParams: {
type: Object,
/*
Object默认参数<br><br>
是否多选:<br>
`multiple: true`<br><br>
是否可以清空选项:<br>
`clearable: true,`<br><br>
是否禁用:<br>
`disabled: false,`<br><br>
搜索框placeholder文字<br>
`placeholder: '请选择',`<br><br>
*/
default() {
return {
multiple: true,
clearable: true,
disabled: false,
placeholder: '请选择'
};
}
},
/*
下拉树参数几乎支持el-tree所有的API<br>
取消参数:<br>
`:show-checkbox="selectParams.multiple"`<br>
使用下拉框参数multiple判断是否对树进行多选<br>
取消对el-tree的人为传参show-checkbox<br>
`:node-key="propsValue"` 自动获取treeParams.props.value<br>
`:draggable="false"` 屏蔽拖动
*/
treeParams: {
type: Object,
/*
Object默认参数<br><br>
在有子级的情况下是否点击父级关闭弹出框,false 只能点击子级关闭弹出框:`clickParent: false`<br><br>
是否显示搜索框:<br>
`filterable: false`<br><br>
下拉树的数据:<br>
`data:[]`<br><br>
下拉树的props<br>
`props: {`<br>
`children: 'children',`<br>
`label: 'name',`<br>
`value: 'flowId',`<br>
`disabled: 'disabled'`<br>
`}`
*/
default() {
return {
clickParent: false,
filterable: false,
data: [],
props: {
children: 'children',
label: 'name',
value: 'flowId',
disabled: 'disabled'
}
};
}
}
},
data() {
return {
propsValue: 'flowId',
propsLabel: 'name',
propsDisabled: 'disabled',
propsChildren: 'children',
data: [],
keywords: '',
labels: '', // 存储名称,用于下拉框显示内容
ids: [''], // 存储id
selectNodes: [''], // 选中数据
visible: false, // popover v-model
width: 150
};
},
watch: {
ids: function(val) {
if (val !== undefined) {
this._setSelectNodeFun(val)
}
},
value: function(val) {
if (this.ids !== val) {
if (this.selectParams.multiple) {
this.ids = val;
} else {
this.ids = val === '' ? [] : [val];
}
}
},
treeParams: {
handler(val) {
const { props, data } = val;
this.propsValue = props.value;
this.propsLabel = props.label;
this.propsDisabled = props.disabled;
this.propsChildren = props.children;
this.data = data.length > 0 ? [...data] : [];
if (props.defaultValue === 'orgSN' && data.length > 0) {
this.ids.push(data[0].orgSN)
}
},
deep: true,
immediate: true
}
},
created() {
const { multiple } = this.selectParams;
if (multiple) {
this.labels = [];
this.ids = this.value;
} else {
this.labels = '';
this.ids = this.value instanceof Array ? this.value : [this.value];
}
},
mounted() {
this._updateH();
this.$nextTick(() => {
on(document, 'mouseup', this._popoverHideFun);
});
},
methods: {
// 输入文本框输入内容抛出
_searchFun() {
/*
对外抛出搜索方法,自行判断是走后台查询,还是前端过滤<br>
前端过滤this.$refs.treeSelect.$refs.tree.filter(value);<br>
后台查询this.$refs.treeSelect.treeDataUpdateFun(data);
*/
this.$emit('searchFun', this.keywords);
},
// 根据id筛选当前树名称以及选中树列表
_setSelectNodeFun(ids) {
const el = this.$refs.tree;
if (!el) {
throw new Error('找不到tree dom');
}
const { multiple } = this.selectParams;
// 长度为0清空选择
if (ids.length === 0 || this.data.length === 0) {
this.labels = multiple ? [] : '';
if (multiple) {
el.setCheckedKeys([]);
} else {
el.setCurrentKey('');
}
return;
}
if (multiple) {
el.setCheckedKeys(ids);
this.labels = el.getCheckedNodes().map(item => item[this.propsLabel]) || [];
} else {
el.setCurrentKey(ids[0]);
if (el.getCurrentNode()) {
this.labels = el.getCurrentNode()[this.propsLabel];
} else {
this.labels = '';
}
}
this._updatePopoverLocationFun();
},
// 更新popover位置
_updatePopoverLocationFun() {
// dom高度还没有更新做一个延迟
setTimeout(() => {
this.$refs.popover.updatePopper();
}, 50);
},
// 树过滤
_filterFun(value, data, node) {
if (!value) return true;
return data[this.propsLabel].indexOf(value) !== -1;
},
// 树点击
_treeNodeClickFun(data, node, vm) {
const { multiple } = this.selectParams;
const { clickParent } = this.treeParams;
const { propsValue, propsChildren, propsDisabled } = this;
if (data[propsDisabled]) {
// 禁用
return;
}
if (node.checked) {
const value = data[this.propsValue];
this.ids = this.ids.filter(id => id !== value);
} else {
if (!multiple) {
// 多选,不关闭,单选,判断是否允许点击父级关闭弹出框
if (!clickParent) {
const children = data[propsChildren];
// 如果不允许点击父级,自身为末级,允许点击之后关闭
if (!children || children.length === 0) {
this.ids = [data[propsValue]];
this.visible = false;
} else {
// 不允许父级,阻止继续派发
return false;
}
} else {
this.ids = [data[propsValue]];
this.visible = false;
}
} else {
this.ids.push(data[propsValue]);
}
}
this._emitFun();
/*
点击节点,对外抛出 `data, node, vm`<br>
`data:` 当前点击的节点数据<br>
`node:` 当前点击的node<br>
`vm:` 当前组件的vm
*/
this.$emit('node-click', data, node, vm);
},
// 树勾选
_treeCheckFun(data, node, vm) {
this.ids = [];
const { propsValue } = this;
node.checkedNodes.forEach(item => {
this.ids.push(item[propsValue]);
});
/*
点击复选框,对外抛出 `data, node, vm`<br>
`data:` 当前点击的节点数据<br>
`node:` 当前点击的node<br>
`vm:` 当前组件的vm
*/
this.$emit('check', data, node, vm);
this._emitFun();
},
// 下拉框移除tag时触发
_selectRemoveTag(tag) {
const { data, propsValue, propsLabel, propsChildren } = this;
each(
data,
item => {
if (item[propsLabel] === tag) {
const value = item[propsValue];
this.ids = this.ids.filter(id => id !== value);
}
},
propsChildren
);
this.$refs.tree.setCheckedKeys(this.ids);
this._emitFun();
},
// 下拉框清空数据
_selectClearFun() {
this.ids = [];
const { multiple } = this.selectParams;
// 下拉框清空,对外抛出``this.$emit('input', multiple ? [] : '');`
this.$emit('input', multiple ? [] : '');
// 下拉框清空,对外抛出``this.$emit('select-clear');`
this.$emit('select-clear');
this._updatePopoverLocationFun();
},
// 判断类型抛出当前选中id
_emitFun() {
const { multiple } = this.selectParams;
this.$emit('input', multiple ? this.ids : this.ids.length > 0 ? this.ids[0] : '');
this._updatePopoverLocationFun();
},
// 更新宽度
_updateH() {
this.$nextTick(() => {
if (this.popoverWidth) {
this.width = this.popoverWidth
} else {
this.width = this.$refs.select.$el.getBoundingClientRect().width;
}
});
},
// 显示弹出框的时候容错查看是否和el宽度一致
_popoverShowFun() {
this._updateH();
},
// 判断是否隐藏弹出框
_popoverHideFun(e) {
let isInter = e.path.some(list => {
return list.className && list.className.indexOf('el-tree-select') !== -1;
});
if (!isInter) {
this.visible = false;
}
},
/**
* @vuese
* 树列表更新数据
* @arg Array
*/
treeDataUpdateFun(data) {
this.data = data;
// 数据更新完成之后,判断是否回显内容
setTimeout(() => {
this._setSelectNodeFun(this.ids);
}, 300);
},
/**
* @vuese
* 本地过滤方法
* @arg String
*/
filterFun(val) {
this.$refs.tree.filter(val);
}
},
components: {},
beforeDestroy() {
off(document, 'mouseup', this._popoverHideFun);
}
};
</script>

View File

@@ -0,0 +1,13 @@
/*
* @moduleName:
* @Author: dawdler
* @LastModifiedBy: dawdler
* @Date: 2019-03-22 14:57:21
* @LastEditTime: 2019-03-25 14:48:43
*/
import ElTreeSelect from './ElTreeSelect.vue';
// 为组件添加 install 方法,用于按需引入
ElTreeSelect.install = function(Vue) {
Vue.component(ElTreeSelect.name, ElTreeSelect);
};
export default ElTreeSelect;

View File

@@ -0,0 +1,37 @@
/*
* @moduleName:
* @Author: dawdler
* @LastModifiedBy: dawdler
* @Date: 2019-03-22 14:47:35
* @LastEditTime: 2019-03-22 16:31:38
*/
export const on = (function() {
if (document.addEventListener) {
return function(element, event, handler) {
if (element && event && handler) {
element.addEventListener(event, handler, false);
}
};
} else {
return function(element, event, handler) {
if (element && event && handler) {
element.attachEvent('on' + event, handler);
}
};
}
})();
export const off = (function() {
if (document.removeEventListener) {
return function(element, event, handler) {
if (element && event) {
element.removeEventListener(event, handler, false);
}
};
} else {
return function(element, event, handler) {
if (element && event) {
element.detachEvent('on' + event, handler);
}
};
}
})();

View File

@@ -0,0 +1,78 @@
/*
* @moduleName:通用工具类
* @Author: dawdler
* @Date: 2019-01-09 15:30:18
* @LastModifiedBy: dawdler
* @LastEditTime: 2019-03-22 16:31:42
*/
export default {
getTreeData,
each
};
/*
each(arr, (item, children) => {
item.value = xx;
// 该item 包含children因此直接赋值,不需要单独处理children里面的值
});
* [_each description] 倒查、展平、数据回调返回回当前一条数据和子集
* @param {[Array]} data [description]
* @param {Function} callback [description]
* @param {String} childName[description]
* @return {[Array]} [description]
* 默认使用副本,在callback处理数据如果不使用副本那么需要重新对treeData赋值
treeData = each(treeData, (item, children) => {
item.value = xx;
});
*/
export function each(data, callback, childName = 'children') {
let current;
let children;
for (let i = 0, len = data.length; i < len; i++) {
current = data[i];
children = [];
if (current[childName] && current[childName].length > 0) {
children = current[childName];
}
callback && callback(current, children);
if (children.length > 0) {
each(children, callback, childName);
}
}
}
/**
* @Author yihuang",
* @param data 数据
* @param id 要比对的名称
* @param val 要比对的值
* @param name 要返回的名称
* @param children 子集名称
* @param isRow 是否返回这一行的数据
* @注 迭代判断多层
* //=======================
* 返回这一条数据的中文名
* let name=utils.getTreeData(arr, 'flowId', item.decategoryId, 'name');
* //=======================
* 返回所有匹配的数据
* let arr=utils.getTreeData(arr, 'flowId', item.decategoryId, 'name','children',true);
*/
export function getTreeData(
data,
id = 'id',
val = '',
name = 'name',
children = 'children',
isRow = false
) {
let arr = [];
each(
data,
item => {
if (item[id] === val) {
arr.push(item);
}
},
children
);
return arr.length > 0 ? (isRow ? arr : arr[0][name]) : null;
}

126
src/components/Editor.vue Normal file
View File

@@ -0,0 +1,126 @@
<template>
<div>
<editor
:value="content"
@input="handleInput"
@init="editorInit"
:lang="aceConfig.selectLang"
:theme="aceConfig.selectTheme"
:options="aceConfig.options"
width="100%"
height="400px"/>
</div>
</template>
<script>
// 编辑器主题
const themes = [
'xcode',
'eclipse',
'monokai',
'cobalt'
]
// 编辑器语言
const langs = [
'c_cpp',
'java',
'javascript',
'golang'
]
// tabs
const tabs = [2, 4, 8]
// 字体大小
const fontSizes = [14, 15, 16, 17, 18, 19, 20, 21, 22]
// 编辑器选项
const options = {
tabSize: 4, // tab默认大小
showPrintMargin: false, // 去除编辑器里的竖线
fontSize: 20, // 字体大小
highlightActiveLine: true, // 高亮配置
enableBasicAutocompletion: true, //启用基本自动完成
enableSnippets: true, // 启用代码段
enableLiveAutocompletion: true, // 启用实时自动完成
}
export default {
name: "CodeEdit",
components: {
editor: require('vue2-ace-editor'),
},
data() {
return {
visible: false, // 模态窗口显示控制
aceConfig: { // 代码块配置
langs, // 语言
themes, // 主题
tabs, // tab空格
fontSizes,
options, // 编辑器属性设置
selectTheme: 'xcode', // 默认选择的主题
selectLang: 'c_cpp', // 默认选择的语言
readOnly: false, // 是否只读
},
}
},
// 接收父组件v-model传来的值
model: {
prop: 'content',
event: 'change'
},
props: {
content: String // content就是上面prop中声明的值要保持一致
},
methods: {
// 当该组件中的值改变时,通过该方法将该组件值传给父组件,实现组件间双向绑定
handleInput(e) {
this.$emit('change', e) // 这里e是每次子组件修改的值change就是上面event中声明的不要变
},
// 显示'编辑器设置'模态窗口
showSettingModal() {
this.visible = true
},
// '编辑器设置'模态窗口确认按钮回调
handleOk() {
this.visible = false
// this.editorInit()
},
// 代码块主题切换
handleThemeChange(value) {
this.aceConfig.selectTheme = value
this.editorInit()
},
// 代码块语言切换
handleLangChange(value) {
this.aceConfig.selectLang = value
this.editorInit()
},
// tab切换
handleTabChange(value) {
this.aceConfig.options.tabSize = value
this.editorInit()
},
// 字体大小切换
handleFontChange(value) {
this.aceConfig.options.tabSize = value
this.editorInit()
},
// 代码块初始化
editorInit () {
require('brace/ext/language_tools') // language extension prerequsite...
require(`brace/mode/${this.aceConfig.selectLang}`) // 语言
require(`brace/theme/${this.aceConfig.selectTheme}`) // 主题
},
}
}
</script>
<style scoped>
.settingTitle{
font-size: larger;
}
.settingDescription{
font-size: small;
color: #a8a8af
}
</style>

View File

@@ -0,0 +1,63 @@
<template>
<div class="fu-el-input-group">
<div class="fu-el-input-flex">
<slot />
</div>
</div>
</template>
<script>
export default {
name: 'el-input-group'
}
</script>
<style lang="scss">
.fu-el-input-group {
display: inline-block;
width: 100%;
vertical-align: bottom;
.fu-el-input-flex {
display: flex;
align-items: center;
justify-content: space-around;
& > div {
position: relative;
input,
&.el-range-editor {
border-right: none;
border-radius: 0;
&:focus {
border: 1px solid #409EFF;
}
}
&.el-range-editor.is-active {
border: 1px solid #409EFF;
}
&:first-child {
input,
&.el-range-editor {
border-radius: 4px 0 0 4px;
}
}
&:last-child {
input,
&.el-range-editor {
border: 1px solid #DCDFE6;
border-radius: 0 4px 4px 0;
}
// 支持input append
&.el-input-group--append input {
border-radius: 0;
}
.el-input-group__append > *:active {
border-color: transparent;
}
}
// 日期选择框
input.el-range-input {
border: none !important;
}
}
}
}
</style>

View File

@@ -0,0 +1,7 @@
import ElInputGroup from './el-input-group'
/* istanbul ignore next */
ElInputGroup.install = function(Vue) {
Vue.component(ElInputGroup.name, ElInputGroup)
}
export default ElInputGroup

View File

@@ -0,0 +1,13 @@
import ElMenu from './src/menu';
import ElMenuItem from './src/menu-item';
import ElMenuItemGroup from './src/menu-item-group';
import ElSubmenu from './src/submenu';
/* istanbul ignore next */
ElMenu.install = function(Vue) {
Vue.component(ElMenu.name, ElMenu);
Vue.component(ElMenuItem.name, ElMenuItem);
Vue.component(ElMenuItemGroup.name, ElMenuItemGroup);
Vue.component(ElSubmenu.name, ElSubmenu);
};
export default ElMenu

View File

@@ -0,0 +1,33 @@
function broadcast(componentName, eventName, params) {
this.$children.forEach(child => {
var name = child.$options.componentName;
if (name === componentName) {
child.$emit.apply(child, [eventName].concat(params));
} else {
broadcast.apply(child, [componentName, eventName].concat([params]));
}
});
}
export default {
methods: {
dispatch(componentName, eventName, params) {
var parent = this.$parent || this.$root;
var name = parent.$options.componentName;
while (parent && (!name || name !== componentName)) {
parent = parent.$parent;
if (parent) {
name = parent.$options.componentName;
}
}
if (parent) {
parent.$emit.apply(parent, [eventName].concat(params));
}
},
broadcast(componentName, eventName, params) {
broadcast.call(this, componentName, eventName, params);
}
}
};

View File

@@ -0,0 +1,9 @@
export default function(ref) {
return {
methods: {
focus() {
this.$refs[ref].focus();
}
}
};
};

View File

@@ -0,0 +1,9 @@
import { t } from 'element-ui/src/locale';
export default {
methods: {
t(...args) {
return t.apply(this, args);
}
}
};

View File

@@ -0,0 +1,54 @@
import { kebabCase } from '../utils/util';
/**
* Show migrating guide in browser console.
*
* Usage:
* import Migrating from 'element-ui/src/mixins/migrating';
*
* mixins: [Migrating]
*
* add getMigratingConfig method for your component.
* getMigratingConfig() {
* return {
* props: {
* 'allow-no-selection': 'allow-no-selection is removed.',
* 'selection-mode': 'selection-mode is removed.'
* },
* events: {
* selectionchange: 'selectionchange is renamed to selection-change.'
* }
* };
* },
*/
export default {
mounted() {
if (process.env.NODE_ENV === 'production') return;
if (!this.$vnode) return;
const { props = {}, events = {} } = this.getMigratingConfig();
const { data, componentOptions } = this.$vnode;
const definedProps = data.attrs || {};
const definedEvents = componentOptions.listeners || {};
for (let propName in definedProps) {
propName = kebabCase(propName); // compatible with camel case
if (props[propName]) {
console.warn(`[Element Migrating][${this.$options.name}][Attribute]: ${props[propName]}`);
}
}
for (let eventName in definedEvents) {
eventName = kebabCase(eventName); // compatible with camel case
if (events[eventName]) {
console.warn(`[Element Migrating][${this.$options.name}][Event]: ${events[eventName]}`);
}
}
},
methods: {
getMigratingConfig() {
return {
props: {},
events: {}
};
}
}
};

View File

@@ -0,0 +1,45 @@
<template>
<li class="el-menu-item-group">
<div class="el-menu-item-group__title" :style="{paddingLeft: levelPadding + 'px'}">
<template v-if="!$slots.title">{{title}}</template>
<slot v-else name="title"></slot>
</div>
<ul>
<slot></slot>
</ul>
</li>
</template>
<script>
export default {
name: 'ElMenuItemGroup',
componentName: 'ElMenuItemGroup',
inject: ['rootMenu'],
props: {
title: {
type: String
}
},
data() {
return {
paddingLeft: 20
};
},
computed: {
levelPadding() {
let padding = 20;
let parent = this.$parent;
if (this.rootMenu.collapse) return 20;
while (parent && parent.$options.componentName !== 'ElMenu') {
if (parent.$options.componentName === 'ElSubmenu') {
padding += 20;
}
parent = parent.$parent;
}
return padding;
}
}
};
</script>

View File

@@ -0,0 +1,112 @@
<template>
<li class="el-menu-item"
role="menuitem"
tabindex="-1"
:style="[paddingStyle, itemStyle, { backgroundColor }]"
:class="{
'is-active': active,
'is-disabled': disabled
}"
@click="handleClick"
@mouseenter="onMouseEnter"
@focus="onMouseEnter"
@blur="onMouseLeave"
@mouseleave="onMouseLeave"
>
<el-tooltip
v-if="parentMenu.$options.componentName === 'ElMenu' && rootMenu.collapse && $slots.title"
effect="dark"
placement="right">
<div slot="content"><slot name="title"></slot></div>
<div style="position: absolute;left: 0;top: 0;height: 100%;width: 100%;display: inline-block;box-sizing: border-box;padding: 0 20px;">
<slot></slot>
</div>
</el-tooltip>
<template v-else>
<slot></slot>
<slot name="title"></slot>
</template>
</li>
</template>
<script>
import Menu from './menu-mixin';
import ElTooltip from '../tooltip';
import Emitter from '../mixins/emitter';
export default {
name: 'ElMenuItem',
componentName: 'ElMenuItem',
mixins: [Menu, Emitter],
components: { ElTooltip },
props: {
index: {
default: null,
validator: val => typeof val === 'string' || val === null
},
route: [String, Object],
disabled: Boolean
},
computed: {
active() {
return this.index === this.rootMenu.activeIndex;
},
hoverBackground() {
return this.rootMenu.hoverBackground;
},
backgroundColor() {
return this.rootMenu.backgroundColor || '';
},
activeTextColor() {
return this.rootMenu.activeTextColor || '';
},
textColor() {
return this.rootMenu.textColor || '';
},
mode() {
return this.rootMenu.mode;
},
itemStyle() {
const style = {
color: this.active ? this.activeTextColor : this.textColor
};
if (this.mode === 'horizontal' && !this.isNested) {
style.borderBottomColor = this.active
? (this.rootMenu.activeTextColor ? this.activeTextColor : '')
: 'transparent';
}
return style;
},
isNested() {
return this.parentMenu !== this.rootMenu;
}
},
methods: {
onMouseEnter() {
if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;
this.$el.style.backgroundColor = this.hoverBackground;
},
onMouseLeave() {
if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;
this.$el.style.backgroundColor = this.backgroundColor;
},
handleClick() {
if (!this.disabled) {
this.dispatch('ElMenu', 'item-click', this);
this.$emit('click', this);
}
}
},
mounted() {
this.parentMenu.addItem(this);
this.rootMenu.addItem(this);
},
beforeDestroy() {
this.parentMenu.removeItem(this);
this.rootMenu.removeItem(this);
}
};
</script>

View File

@@ -0,0 +1,44 @@
export default {
inject: ['rootMenu'],
computed: {
indexPath() {
const path = [this.index];
let parent = this.$parent;
while (parent.$options.componentName !== 'ElMenu') {
if (parent.index) {
path.unshift(parent.index);
}
parent = parent.$parent;
}
return path;
},
parentMenu() {
let parent = this.$parent;
while (
parent &&
['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1
) {
parent = parent.$parent;
}
return parent;
},
paddingStyle() {
if (this.rootMenu.mode !== 'vertical') return {};
let padding = 20;
let parent = this.$parent;
if (this.rootMenu.collapse) {
padding = 20;
} else {
while (parent && parent.$options.componentName !== 'ElMenu') {
if (parent.$options.componentName === 'ElSubmenu') {
padding += 20;
}
parent = parent.$parent;
}
}
return {paddingLeft: padding + 'px'};
}
}
};

View File

@@ -0,0 +1,320 @@
<script type="text/jsx">
import emitter from '../mixins/emitter';
import Migrating from '../mixins/migrating';
import Menubar from '../utils/menu/aria-menubar';
import { addClass, removeClass, hasClass } from '../utils/dom';
export default {
name: 'ElMenu',
render (h) {
const component = (
<ul
role="menubar"
key={ +this.collapse }
style={{ backgroundColor: this.backgroundColor || '' }}
class={{
'el-menu--horizontal': this.mode === 'horizontal',
'el-menu--collapse': this.collapse,
"el-menu": true
}}
>
{ this.$slots.default }
</ul>
);
if (this.collapseTransition) {
return (
<el-menu-collapse-transition>
{ component }
</el-menu-collapse-transition>
);
} else {
return component;
}
},
componentName: 'ElMenu',
mixins: [emitter, Migrating],
provide() {
return {
rootMenu: this
};
},
components: {
'el-menu-collapse-transition': {
functional: true,
render(createElement, context) {
const data = {
props: {
mode: 'out-in'
},
on: {
beforeEnter(el) {
el.style.opacity = 0.2;
},
enter(el) {
addClass(el, 'el-opacity-transition');
el.style.opacity = 1;
},
afterEnter(el) {
removeClass(el, 'el-opacity-transition');
el.style.opacity = '';
},
beforeLeave(el) {
if (!el.dataset) el.dataset = {};
if (hasClass(el, 'el-menu--collapse')) {
removeClass(el, 'el-menu--collapse');
el.dataset.oldOverflow = el.style.overflow;
el.dataset.scrollWidth = el.clientWidth;
addClass(el, 'el-menu--collapse');
} else {
addClass(el, 'el-menu--collapse');
el.dataset.oldOverflow = el.style.overflow;
el.dataset.scrollWidth = el.clientWidth;
removeClass(el, 'el-menu--collapse');
}
el.style.width = el.scrollWidth + 'px';
el.style.overflow = 'hidden';
},
leave(el) {
addClass(el, 'horizontal-collapse-transition');
el.style.width = el.dataset.scrollWidth + 'px';
}
}
};
return createElement('transition', data, context.children);
}
}
},
props: {
mode: {
type: String,
default: 'vertical'
},
defaultActive: {
type: String,
default: ''
},
defaultOpeneds: Array,
uniqueOpened: Boolean,
router: Boolean,
menuTrigger: {
type: String,
default: 'hover'
},
collapse: Boolean,
backgroundColor: String,
textColor: String,
activeTextColor: String,
collapseTransition: {
type: Boolean,
default: true
}
},
data() {
return {
activeIndex: this.defaultActive,
openedMenus: (this.defaultOpeneds && !this.collapse) ? this.defaultOpeneds.slice(0) : [],
items: {},
submenus: {}
};
},
computed: {
hoverBackground() {
return this.backgroundColor ? this.mixColor(this.backgroundColor, 0.2) : '';
},
isMenuPopup() {
return this.mode === 'horizontal' || (this.mode === 'vertical' && this.collapse);
}
},
watch: {
defaultActive(value){
if(!this.items[value]){
this.activeIndex = null
}
this.updateActiveIndex(value)
},
defaultOpeneds(value) {
if (!this.collapse) {
this.openedMenus = value;
}
},
collapse(value) {
if (value) this.openedMenus = [];
this.broadcast('ElSubmenu', 'toggle-collapse', value);
}
},
methods: {
updateActiveIndex(val) {
const item = this.items[val] || this.items[this.activeIndex] || this.items[this.defaultActive];
if (item) {
this.activeIndex = item.index;
this.initOpenedMenu();
} else {
this.activeIndex = null;
}
},
getMigratingConfig() {
return {
props: {
'theme': 'theme is removed.'
}
};
},
getColorChannels(color) {
color = color.replace('#', '');
if (/^[0-9a-fA-F]{3}$/.test(color)) {
color = color.split('');
for (let i = 2; i >= 0; i--) {
color.splice(i, 0, color[i]);
}
color = color.join('');
}
if (/^[0-9a-fA-F]{6}$/.test(color)) {
return {
red: parseInt(color.slice(0, 2), 16),
green: parseInt(color.slice(2, 4), 16),
blue: parseInt(color.slice(4, 6), 16)
};
} else {
return {
red: 255,
green: 255,
blue: 255
};
}
},
mixColor(color, percent) {
let { red, green, blue } = this.getColorChannels(color);
if (percent > 0) { // shade given color
red *= 1 - percent;
green *= 1 - percent;
blue *= 1 - percent;
} else { // tint given color
red += (255 - red) * percent;
green += (255 - green) * percent;
blue += (255 - blue) * percent;
}
return `rgb(${ Math.round(red) }, ${ Math.round(green) }, ${ Math.round(blue) })`;
},
addItem(item) {
this.$set(this.items, item.index, item);
},
removeItem(item) {
delete this.items[item.index];
},
addSubmenu(item) {
this.$set(this.submenus, item.index, item);
},
removeSubmenu(item) {
delete this.submenus[item.index];
},
openMenu(index, indexPath) {
let openedMenus = this.openedMenus;
if (openedMenus.indexOf(index) !== -1) return;
// 将不在该菜单路径下的其余菜单收起
// collapse all menu that are not under current menu item
if (this.uniqueOpened) {
this.openedMenus = openedMenus.filter(index => {
return indexPath.indexOf(index) !== -1;
});
}
this.openedMenus.push(index);
},
closeMenu(index) {
const i = this.openedMenus.indexOf(index);
if (i !== -1) {
this.openedMenus.splice(i, 1);
}
},
handleSubmenuClick(submenu) {
const { index, indexPath } = submenu;
let isOpened = this.openedMenus.indexOf(index) !== -1;
if (isOpened) {
this.closeMenu(index);
this.$emit('close', index, indexPath);
} else {
this.openMenu(index, indexPath);
this.$emit('open', index, indexPath);
}
},
handleItemClick(item) {
const { index, indexPath } = item;
const oldActiveIndex = this.activeIndex;
const hasIndex = item.index !== null;
if (hasIndex) {
this.activeIndex = item.index;
}
this.$emit('select', index, indexPath, item);
if (this.mode === 'horizontal' || this.collapse) {
this.openedMenus = [];
}
if (this.router && hasIndex) {
this.routeToItem(item, (error) => {
this.activeIndex = oldActiveIndex;
//if (error) console.error(error);
});
}
},
// 初始化展开菜单
// initialize opened menu
initOpenedMenu() {
const index = this.activeIndex;
const activeItem = this.items[index];
if (!activeItem || this.mode === 'horizontal' || this.collapse) return;
let indexPath = activeItem.indexPath;
// 展开该菜单项的路径上所有子菜单
// expand all submenus of the menu item
indexPath.forEach(index => {
let submenu = this.submenus[index];
submenu && this.openMenu(index, submenu.indexPath);
});
},
routeToItem(item, onError) {
let route = item.route || item.index;
try {
this.$router.push(route, () => {}, onError);
} catch (e) {
// console.error(e);
}
},
open(index) {
const { indexPath } = this.submenus[index.toString()];
indexPath.forEach(i => this.openMenu(i, indexPath));
},
close(index) {
this.closeMenu(index);
}
},
mounted() {
this.initOpenedMenu();
this.$on('item-click', this.handleItemClick);
this.$on('submenu-click', this.handleSubmenuClick);
if (this.mode === 'horizontal') {
new Menubar(this.$el); // eslint-disable-line
}
this.$watch('items', this.updateActiveIndex);
}
};
</script>

View File

@@ -0,0 +1,349 @@
<script>
import ElCollapseTransition from '../transitions/collapse-transition';
import menuMixin from './menu-mixin';
import Emitter from '../mixins/emitter';
import Popper from '../utils/vue-popper';
const poperMixins = {
props: {
transformOrigin: {
type: [Boolean, String],
default: false
},
offset: Popper.props.offset,
boundariesPadding: Popper.props.boundariesPadding,
popperOptions: Popper.props.popperOptions
},
data: Popper.data,
methods: Popper.methods,
beforeDestroy: Popper.beforeDestroy,
deactivated: Popper.deactivated
};
export default {
name: 'ElSubmenu',
componentName: 'ElSubmenu',
mixins: [menuMixin, Emitter, poperMixins],
components: { ElCollapseTransition },
props: {
index: {
type: String,
required: true
},
showTimeout: {
type: Number,
default: 300
},
hideTimeout: {
type: Number,
default: 300
},
popperClass: String,
disabled: Boolean,
popperAppendToBody: {
type: Boolean,
default: undefined
}
},
data() {
return {
popperJS: null,
timeout: null,
items: {},
submenus: {},
mouseInChild: false
};
},
watch: {
opened(val) {
if (this.isMenuPopup) {
this.$nextTick(_ => {
this.updatePopper();
});
}
}
},
computed: {
// popper option
appendToBody() {
return this.popperAppendToBody === undefined
? this.isFirstLevel
: this.popperAppendToBody;
},
menuTransitionName() {
return this.rootMenu.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top';
},
opened() {
return this.rootMenu.openedMenus.indexOf(this.index) > -1;
},
active() {
let isActive = false;
const submenus = this.submenus;
const items = this.items;
Object.keys(items).forEach(index => {
if (items[index].active) {
isActive = true;
}
});
Object.keys(submenus).forEach(index => {
if (submenus[index].active) {
isActive = true;
}
});
return isActive;
},
hoverBackground() {
return this.rootMenu.hoverBackground;
},
backgroundColor() {
return this.rootMenu.backgroundColor || '';
},
activeTextColor() {
return this.rootMenu.activeTextColor || '';
},
textColor() {
return this.rootMenu.textColor || '';
},
mode() {
return this.rootMenu.mode;
},
isMenuPopup() {
return this.rootMenu.isMenuPopup;
},
titleStyle() {
if (this.mode !== 'horizontal') {
return {
color: this.textColor
};
}
return {
borderBottomColor: this.active
? (this.rootMenu.activeTextColor ? this.activeTextColor : '')
: 'transparent',
color: this.active
? this.activeTextColor
: this.textColor
};
},
isFirstLevel() {
let isFirstLevel = true;
let parent = this.$parent;
while (parent && parent !== this.rootMenu) {
if (['ElSubmenu', 'ElMenuItemGroup'].indexOf(parent.$options.componentName) > -1) {
isFirstLevel = false;
break;
} else {
parent = parent.$parent;
}
}
return isFirstLevel;
}
},
methods: {
handleCollapseToggle(value) {
if (value) {
this.initPopper();
} else {
this.doDestroy();
}
},
addItem(item) {
this.$set(this.items, item.index, item);
},
removeItem(item) {
delete this.items[item.index];
},
addSubmenu(item) {
this.$set(this.submenus, item.index, item);
},
removeSubmenu(item) {
delete this.submenus[item.index];
},
handleClick() {
const { rootMenu, disabled } = this;
if (
(rootMenu.menuTrigger === 'hover' && rootMenu.mode === 'horizontal') ||
(rootMenu.collapse && rootMenu.mode === 'vertical') ||
disabled
) {
return;
}
this.dispatch('ElMenu', 'submenu-click', this);
},
handleMouseenter(event, showTimeout = this.showTimeout) {
if (!('ActiveXObject' in window) && event.type === 'focus' && !event.relatedTarget) {
return;
}
const { rootMenu, disabled } = this;
if (
(rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal') ||
(!rootMenu.collapse && rootMenu.mode === 'vertical') ||
disabled
) {
return;
}
// TODO: 更下一级菜单显示问题暂时无法解决
const windowWidth = document.documentElement.clientWidth
const { width, right } = this.$el.getBoundingClientRect()
if (right + width + 40 > windowWidth) {
this.$refs.menu.style.transform = 'translateX(-410px)'
}
this.dispatch('ElSubmenu', 'mouse-enter-child');
clearTimeout(this.timeout);
this.timeout = setTimeout(() => {
this.rootMenu.openMenu(this.index, this.indexPath);
}, showTimeout);
},
handleMouseleave() {
const {rootMenu} = this;
if (
(rootMenu.menuTrigger === 'click' && rootMenu.mode === 'horizontal') ||
(!rootMenu.collapse && rootMenu.mode === 'vertical')
) {
return;
}
this.dispatch('ElSubmenu', 'mouse-leave-child');
clearTimeout(this.timeout);
this.timeout = setTimeout(() => {
if (this.appendToBody) {
this.rootMenu.openedMenus = [];
}
!this.mouseInChild && this.rootMenu.closeMenu(this.index);
}, this.hideTimeout);
},
handleTitleMouseenter() {
if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;
const title = this.$refs['submenu-title'];
title && (title.style.backgroundColor = this.rootMenu.hoverBackground);
},
handleTitleMouseleave() {
if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;
const title = this.$refs['submenu-title'];
title && (title.style.backgroundColor = this.rootMenu.backgroundColor || '');
},
updatePlacement() {
this.currentPlacement = this.mode === 'horizontal' && this.isFirstLevel
? 'bottom-start'
: 'right-start';
},
initPopper() {
this.referenceElm = this.$el;
this.popperElm = this.$refs.menu;
this.updatePlacement();
}
},
created() {
this.$on('toggle-collapse', this.handleCollapseToggle);
this.$on('mouse-enter-child', () => {
this.mouseInChild = true;
clearTimeout(this.timeout);
});
this.$on('mouse-leave-child', () => {
this.mouseInChild = false;
clearTimeout(this.timeout);
});
},
mounted() {
this.parentMenu.addSubmenu(this);
this.rootMenu.addSubmenu(this);
this.initPopper();
},
beforeDestroy() {
this.parentMenu.removeSubmenu(this);
this.rootMenu.removeSubmenu(this);
},
render(h) {
const {
active,
opened,
paddingStyle,
titleStyle,
backgroundColor,
rootMenu,
currentPlacement,
menuTransitionName,
mode,
disabled,
popperClass,
$slots,
isFirstLevel
} = this;
const popupMenu = (
<transition name={menuTransitionName}>
<div
ref="menu"
v-show={opened}
class={[`el-menu--${mode}`, popperClass]}
on-mouseenter={($event) => this.handleMouseenter($event, 100)}
on-mouseleave={this.handleMouseleave}
on-focus={($event) => this.handleMouseenter($event, 100)}>
<ul
role="menu"
class={['el-menu el-menu--popup', `el-menu--popup-${currentPlacement}`]}
style={{ backgroundColor: rootMenu.backgroundColor || '' }}>
{$slots.default}
</ul>
</div>
</transition>
);
const inlineMenu = (
<el-collapse-transition>
<ul
role="menu"
class="el-menu el-menu--inline"
v-show={opened}
style={{ backgroundColor: rootMenu.backgroundColor || '' }}>
{$slots.default}
</ul>
</el-collapse-transition>
);
const submenuTitleIcon = (
rootMenu.mode === 'horizontal' && isFirstLevel ||
rootMenu.mode === 'vertical' && !rootMenu.collapse
) ? 'el-icon-arrow-down' : 'el-icon-arrow-right';
return (
<li
class={{
'el-submenu': true,
'is-active': active,
'is-opened': opened,
'is-disabled': disabled
}}
role="menuitem"
aria-haspopup="true"
aria-expanded={opened}
on-mouseenter={this.handleMouseenter}
on-mouseleave={this.handleMouseleave}
on-focus={this.handleMouseenter}
>
<div
class="el-submenu__title"
ref="submenu-title"
on-click={this.handleClick}
on-mouseenter={this.handleTitleMouseenter}
on-mouseleave={this.handleTitleMouseleave}
style={[paddingStyle, titleStyle, { backgroundColor }]}
>
{$slots.title}
<i class={[ 'el-submenu__icon-arrow', submenuTitleIcon ]}></i>
</div>
{this.isMenuPopup ? popupMenu : inlineMenu}
</li>
);
}
};
</script>

View File

@@ -0,0 +1,8 @@
import Tooltip from './src/main';
/* istanbul ignore next */
Tooltip.install = function(Vue) {
Vue.component(Tooltip.name, Tooltip);
};
export default Tooltip;

View File

@@ -0,0 +1,241 @@
import Popper from '../../utils/vue-popper';
import debounce from './throttle-debounce/debounce';
import { addClass, removeClass, on, off } from '../../utils/dom';
import { generateId } from '../../utils/util';
import Vue from 'vue';
export default {
name: 'ElTooltip',
mixins: [Popper],
props: {
openDelay: {
type: Number,
default: 0
},
disabled: Boolean,
manual: Boolean,
effect: {
type: String,
default: 'dark'
},
arrowOffset: {
type: Number,
default: 0
},
popperClass: String,
content: String,
visibleArrow: {
default: true
},
transition: {
type: String,
default: 'el-fade-in-linear'
},
popperOptions: {
default() {
return {
boundariesPadding: 10,
gpuAcceleration: false
};
}
},
enterable: {
type: Boolean,
default: true
},
hideAfter: {
type: Number,
default: 0
},
tabindex: {
type: Number,
default: 0
}
},
data() {
return {
tooltipId: `el-tooltip-${generateId()}`,
timeoutPending: null,
focusing: false
};
},
beforeCreate() {
if (this.$isServer) return;
this.popperVM = new Vue({
data: { node: '' },
render(h) {
return this.node;
}
}).$mount();
this.debounceClose = debounce(200, () => this.handleClosePopper());
},
render(h) {
if (this.popperVM) {
this.popperVM.node = (
<transition
name={ this.transition }
onAfterLeave={ this.doDestroy }>
<div
onMouseleave={ () => { this.setExpectedState(false); this.debounceClose(); } }
onMouseenter= { () => { this.setExpectedState(true); } }
ref="popper"
role="tooltip"
id={this.tooltipId}
aria-hidden={ (this.disabled || !this.showPopper) ? 'true' : 'false' }
v-show={!this.disabled && this.showPopper}
class={
['el-tooltip__popper', 'is-' + this.effect, this.popperClass]
}>
{ this.$slots.content || this.content }
</div>
</transition>);
}
const firstElement = this.getFirstElement();
if (!firstElement) return null;
const data = firstElement.data = firstElement.data || {};
data.staticClass = this.addTooltipClass(data.staticClass);
return firstElement;
},
mounted() {
this.referenceElm = this.$el;
if (this.$el.nodeType === 1) {
this.$el.setAttribute('aria-describedby', this.tooltipId);
this.$el.setAttribute('tabindex', this.tabindex);
on(this.referenceElm, 'mouseenter', this.show);
on(this.referenceElm, 'mouseleave', this.hide);
on(this.referenceElm, 'focus', () => {
if (!this.$slots.default || !this.$slots.default.length) {
this.handleFocus();
return;
}
const instance = this.$slots.default[0].componentInstance;
if (instance && instance.focus) {
instance.focus();
} else {
this.handleFocus();
}
});
on(this.referenceElm, 'blur', this.handleBlur);
on(this.referenceElm, 'click', this.removeFocusing);
}
// fix issue https://github.com/ElemeFE/element/issues/14424
if (this.value && this.popperVM) {
this.popperVM.$nextTick(() => {
if (this.value) {
this.updatePopper();
}
});
}
},
watch: {
focusing(val) {
if (val) {
addClass(this.referenceElm, 'focusing');
} else {
removeClass(this.referenceElm, 'focusing');
}
}
},
methods: {
show() {
this.setExpectedState(true);
this.handleShowPopper();
},
hide() {
this.setExpectedState(false);
this.debounceClose();
},
handleFocus() {
this.focusing = true;
this.show();
},
handleBlur() {
this.focusing = false;
this.hide();
},
removeFocusing() {
this.focusing = false;
},
addTooltipClass(prev) {
if (!prev) {
return 'el-tooltip';
} else {
return 'el-tooltip ' + prev.replace('el-tooltip', '');
}
},
handleShowPopper() {
if (!this.expectedState || this.manual) return;
clearTimeout(this.timeout);
this.timeout = setTimeout(() => {
this.showPopper = true;
}, this.openDelay);
if (this.hideAfter > 0) {
this.timeoutPending = setTimeout(() => {
this.showPopper = false;
}, this.hideAfter);
}
},
handleClosePopper() {
if (this.enterable && this.expectedState || this.manual) return;
clearTimeout(this.timeout);
if (this.timeoutPending) {
clearTimeout(this.timeoutPending);
}
this.showPopper = false;
if (this.disabled) {
this.doDestroy();
}
},
setExpectedState(expectedState) {
if (expectedState === false) {
clearTimeout(this.timeoutPending);
}
this.expectedState = expectedState;
},
getFirstElement() {
const slots = this.$slots.default;
if (!Array.isArray(slots)) return null;
let element = null;
for (let index = 0; index < slots.length; index++) {
if (slots[index] && slots[index].tag) {
element = slots[index];
};
}
return element;
}
},
beforeDestroy() {
this.popperVM && this.popperVM.$destroy();
},
destroyed() {
const reference = this.referenceElm;
if (reference.nodeType === 1) {
off(reference, 'mouseenter', this.show);
off(reference, 'mouseleave', this.hide);
off(reference, 'focus', this.handleFocus);
off(reference, 'blur', this.handleBlur);
off(reference, 'click', this.removeFocusing);
}
}
};

View File

@@ -0,0 +1,16 @@
root = true
[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[package.json]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false

View File

@@ -0,0 +1,5 @@
{
"extends": [
"niksy"
]
}

View File

@@ -0,0 +1,3 @@
language: node_js
node_js:
- '4'

View File

@@ -0,0 +1,325 @@
Copyright (c) Ivan Nikolić <http://ivannikolic.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
---
Copyright (c) 2010 "Cowboy" Ben Alman
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
---
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

View File

@@ -0,0 +1,102 @@
# throttle-debounce
[![Build Status][ci-img]][ci]
Throttle/debounce your functions.
This module is the same as [jquery-throttle-debounce][jquery-throttle-debounce] ([with some differences](#differences-with-original-module)), but its transferred to CommonJS so it can be easily used with tools like Browserify or Webpack.
## Install
```sh
npm install throttle-debounce --save
```
## Usage
```js
var throttle = require('throttle-debounce/throttle');
var debounce = require('throttle-debounce/debounce');
throttle(300, function () {
// Throttled function
});
debounce(300, function () {
// Debounced function
});
```
## API
### throttle(delay, noTrailing, callback, debounceMode)
Returns: `Function`
Throttle execution of a function. Especially useful for rate limiting execution of handlers on events like resize and scroll.
#### delay
Type: `Number`
A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
#### noTrailing
Type: `Boolean`
Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset)
#### callback
Type: `Function`
A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is, to `callback` when the throttled-function is executed.
#### debounceMode
Type: `Boolean`
If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end), schedule `callback` to execute after `delay` ms.
### debounce(delay, atBegin, callback)
Returns: `Function`
Debounce execution of a function. Debouncing, unlike throttling, guarantees that a function is only executed a single time, either at the very beginning of a series of calls, or at the very end.
#### delay
Type: `Number`
A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
#### atBegin
Type: `Boolean`
Optional, defaults to false. If `atBegin` is false or unspecified, callback will only be executed `delay` milliseconds after the last debounced-function call. If `atBegin` is true, callback will be executed only at the first debounced-function call. (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
#### callback
Type: `Function`
A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is, to `callback` when the debounced-function is executed.
## Differences with original module
* Dependancy on jQuery is removed, so if you rely on GUIDs set by jQuery, plan accordingly
* There is no standalone version available, so dont rely on `$.throttle` and `$.debounce` to be available
## Browser support
Tested in IE8+ and all modern browsers.
## License
**Original module license:** Copyright (c) 2010 "Cowboy" Ben Alman (Dual licensed under the MIT and GPL licenses. http://benalman.com/about/license/)
**This module license:** MIT © [Ivan Nikolić](http://ivannikolic.com)
[ci]: https://travis-ci.org/niksy/throttle-debounce
[ci-img]: https://img.shields.io/travis/niksy/throttle-debounce/master.svg
[jquery-throttle-debounce]: https://github.com/cowboy/jquery-throttle-debounce

View File

@@ -0,0 +1,21 @@
/* eslint-disable no-undefined */
var throttle = require('./throttle');
/**
* Debounce execution of a function. Debouncing, unlike throttling,
* guarantees that a function is only executed a single time, either at the
* very beginning of a series of calls, or at the very end.
*
* @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
* @param {Boolean} [atBegin] Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
* after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
* (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
* @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
* to `callback` when the debounced-function is executed.
*
* @return {Function} A new, debounced function.
*/
module.exports = function ( delay, atBegin, callback ) {
return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);
};

View File

@@ -0,0 +1,17 @@
declare module 'throttle-debounce' {
type throttleFn = (
delay: number,
noTrailing: boolean,
callback?: Function,
debounceMode?: boolean
) => Function;
type debounceFn = (
delay: number,
atBegin: boolean,
callback?: Function
) => Function;
const throttle: throttleFn;
const debounce: debounceFn;
}

View File

@@ -0,0 +1,7 @@
var throttle = require('./throttle');
var debounce = require('./debounce');
module.exports = {
throttle: throttle,
debounce: debounce
};

View File

@@ -0,0 +1,70 @@
// Karma configuration
// Generated on Sun May 01 2016 16:50:20 GMT+0200 (CEST)
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['browserify', 'qunit'],
// list of files / patterns to load in the browser
files: [
'test/**/*.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'test/**/*.js': 'browserify'
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['mocha'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome', 'Firefox'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
}

View File

@@ -0,0 +1,54 @@
{
"name": "throttle-debounce",
"version": "1.1.0",
"description": "Throttle/debounce your functions.",
"main": "index.js",
"typings": "index.d.ts",
"author": "Ivan Nikolić <niksy5@gmail.com> (http://ivannikolic.com/)",
"contributors": [
"Ben Alman (http://benalman.com)"
],
"license": "MIT",
"engines": {
"node": ">=4"
},
"directories": {
"test": "test"
},
"scripts": {
"test": "eslint {index,test/*}.js && karma start --single-run --browsers PhantomJS"
},
"dependencies": {},
"devDependencies": {
"browserify": "^13.0.0",
"eslint": "^1.10.3",
"eslint-config-niksy": "^1.0.6",
"karma": "^0.13.22",
"karma-browserify": "^5.0.4",
"karma-chrome-launcher": "^0.2.3",
"karma-firefox-launcher": "^0.1.7",
"karma-mocha-reporter": "^2.0.2",
"karma-phantomjs-launcher": "^1.0.0",
"karma-qunit": "^0.1.9",
"mocha": "^2.4.5",
"phantomjs-prebuilt": "^2.1.7",
"qunitjs": "^1.23.1",
"watchify": "^3.7.0"
},
"keywords": [
"throttle",
"debounce",
"browserify"
],
"repository": {
"type": "git",
"url": "git+https://github.com/niksy/throttle-debounce.git"
},
"bugs": {
"url": "https://github.com/niksy/throttle-debounce/issues"
},
"homepage": "https://github.com/niksy/throttle-debounce#readme",
"__npminstall_done": "Fri Mar 20 2020 20:34:55 GMT+0800 (GMT+08:00)",
"_from": "throttle-debounce@1.1.0",
"_resolved": "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz"
}

View File

@@ -0,0 +1,271 @@
/* jshint ignore:start */
/* eslint-disable */
/* Original QUnit test: https://github.com/cowboy/jquery-throttle-debounce/blob/master/unit/unit.js */
var module = require('qunitjs').module;
var test = require('qunitjs').test;
var expect = require('qunitjs').expect;
var ok = require('qunitjs').ok;
var equals = require('qunitjs').equal;
var start = require('qunitjs').start;
var stop = require('qunitjs').stop;
var throttle = require('../throttle');
var debounce = require('../debounce');
QUnit.config.autostart = false;
var pause = 500,
delay = 100;
function exec_many_times(each, complete) {
var i = 0,
repeated,
id;
function start() {
id = setInterval(function() {
each();
if (++i === 50) {
clearInterval(id);
complete(repeated ? null : function() {
i = 0;
repeated = true;
setTimeout(start, pause);
});
}
}, 20);
}
setTimeout(start, pause);
};
module('throttle');
test('delay, callback', function() {
expect(7);
stop();
var start_time,
i = 0,
arr = [],
fn = function(now) {
arr.push(now - this)
},
throttled = throttle(delay, fn);
equals(throttled.guid, fn.guid, 'throttled-callback and callback should have the same .guid');
exec_many_times(function() {
var now = +new Date();
start_time = start_time || now;
i++;
throttled.call(start_time, now);
}, function(callback) {
var len = arr.length;
setTimeout(function() {
////console.log( arr, arr.length, len, i );
ok(arr.length < i, 'callback should be executed less # of times than throttled-callback');
equals(arr[0], 0, 'callback should be executed immediately');
equals(arr.length - len, 1, 'callback should be executed one more time after finish');
start_time = null;
arr = [];
i = 0;
callback ? callback() : start();
}, delay * 2);
})
});
test('delay, false, callback', function() {
expect(7);
stop();
var start_time,
i = 0,
arr = [],
fn = function(now) {
arr.push(now - this)
},
throttled = throttle(delay, false, fn);
equals(throttled.guid, fn.guid, 'throttled-callback and callback should have the same .guid');
exec_many_times(function() {
var now = +new Date();
start_time = start_time || now;
i++;
throttled.call(start_time, now);
}, function(callback) {
var len = arr.length;
setTimeout(function() {
////console.log( arr, arr.length, len, i );
ok(arr.length < i, 'callback should be executed less # of times than throttled-callback');
equals(arr[0], 0, 'callback should be executed immediately');
equals(arr.length - len, 1, 'callback should be executed one more time after finish');
start_time = null;
arr = [];
i = 0;
callback ? callback() : start();
}, delay * 2);
})
});
test('delay, true, callback', function() {
expect(7);
stop();
var start_time,
i = 0,
arr = [],
fn = function(now) {
arr.push(now - this)
},
throttled = throttle(delay, true, fn);
equals(throttled.guid, fn.guid, 'throttled-callback and callback should have the same .guid');
exec_many_times(function() {
var now = +new Date();
start_time = start_time || now;
i++;
throttled.call(start_time, now);
}, function(callback) {
var len = arr.length;
setTimeout(function() {
////console.log( arr, arr.length, len, i );
ok(arr.length < i, 'callback should be executed less # of times than throttled-callback');
equals(arr[0], 0, 'callback should be executed immediately');
equals(arr.length - len, 0, 'callback should NOT be executed one more time after finish');
start_time = null;
arr = [];
i = 0;
callback ? callback() : start();
}, delay * 2);
})
});
module('debounce');
test('delay, callback', function() {
expect(5);
stop();
var start_time,
i = 0,
arr = [],
fn = function() {
arr.push(+new Date())
},
debounced = debounce(delay, fn);
equals(debounced.guid, fn.guid, 'throttled-callback and callback should have the same .guid');
exec_many_times(function() {
start_time = start_time || +new Date();
i++;
debounced.call();
}, function(callback) {
var len = arr.length,
done_time = +new Date();
setTimeout(function() {
////console.log( arr[0] - done_time );
equals(arr.length, 1, 'callback was executed once');
ok(arr[0] >= done_time, 'callback should be executed after the finish');
start_time = null;
arr = [];
i = 0;
callback ? callback() : start();
}, delay * 2);
})
});
test('delay, false, callback', function() {
expect(5);
stop();
var start_time,
i = 0,
arr = [],
fn = function() {
arr.push(+new Date())
},
debounced = debounce(delay, false, fn);
equals(debounced.guid, fn.guid, 'throttled-callback and callback should have the same .guid');
exec_many_times(function() {
start_time = start_time || +new Date();
i++;
debounced.call();
}, function(callback) {
var len = arr.length,
done_time = +new Date();
setTimeout(function() {
////console.log( arr[0] - done_time );
equals(arr.length, 1, 'callback was executed once');
ok(arr[0] >= done_time, 'callback should be executed after the finish');
start_time = null;
arr = [];
i = 0;
callback ? callback() : start();
}, delay * 2);
})
});
test('delay, true, callback', function() {
expect(5);
stop();
var start_time,
i = 0,
arr = [],
fn = function() {
arr.push(+new Date())
},
debounced = debounce(delay, true, fn);
equals(debounced.guid, fn.guid, 'throttled-callback and callback should have the same .guid');
exec_many_times(function() {
start_time = start_time || +new Date();
i++;
debounced.call();
}, function(callback) {
var len = arr.length;
setTimeout(function() {
////console.log( arr[0] - start_time );
equals(arr.length, 1, 'callback was executed once');
ok(arr[0] - start_time <= 5, 'callback should be executed at the start');
start_time = null;
arr = [];
i = 0;
callback ? callback() : start();
}, delay * 2);
})
});

View File

@@ -0,0 +1,91 @@
/* eslint-disable no-undefined,no-param-reassign,no-shadow */
/**
* Throttle execution of a function. Especially useful for rate limiting
* execution of handlers on events like resize and scroll.
*
* @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
* @param {Boolean} [noTrailing] Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the
* throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time
* after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,
* the internal counter is reset)
* @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
* to `callback` when the throttled-function is executed.
* @param {Boolean} [debounceMode] If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),
* schedule `callback` to execute after `delay` ms.
*
* @return {Function} A new, throttled, function.
*/
module.exports = function ( delay, noTrailing, callback, debounceMode ) {
// After wrapper has stopped being called, this timeout ensures that
// `callback` is executed at the proper times in `throttle` and `end`
// debounce modes.
var timeoutID;
// Keep track of the last time `callback` was executed.
var lastExec = 0;
// `noTrailing` defaults to falsy.
if ( typeof noTrailing !== 'boolean' ) {
debounceMode = callback;
callback = noTrailing;
noTrailing = undefined;
}
// The `wrapper` function encapsulates all of the throttling / debouncing
// functionality and when executed will limit the rate at which `callback`
// is executed.
function wrapper () {
var self = this;
var elapsed = Number(new Date()) - lastExec;
var args = arguments;
// Execute `callback` and update the `lastExec` timestamp.
function exec () {
lastExec = Number(new Date());
callback.apply(self, args);
}
// If `debounceMode` is true (at begin) this is used to clear the flag
// to allow future `callback` executions.
function clear () {
timeoutID = undefined;
}
if ( debounceMode && !timeoutID ) {
// Since `wrapper` is being called for the first time and
// `debounceMode` is true (at begin), execute `callback`.
exec();
}
// Clear any existing timeout.
if ( timeoutID ) {
clearTimeout(timeoutID);
}
if ( debounceMode === undefined && elapsed > delay ) {
// In throttle mode, if `delay` time has been exceeded, execute
// `callback`.
exec();
} else if ( noTrailing !== true ) {
// In trailing throttle mode, since `delay` time has not been
// exceeded, schedule `callback` to execute `delay` ms after most
// recent execution.
//
// If `debounceMode` is true (at begin), schedule `clear` to execute
// after `delay` ms.
//
// If `debounceMode` is false (at end), schedule `callback` to
// execute after `delay` ms.
timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
}
}
// Return the wrapper function.
return wrapper;
};

View File

@@ -0,0 +1,76 @@
import { addClass, removeClass } from '../utils/dom';
const Transition = ()=> ({
beforeEnter(el) {
addClass(el, 'collapse-transition');
if (!el.dataset) el.dataset = {};
el.dataset.oldPaddingTop = el.style.paddingTop;
el.dataset.oldPaddingBottom = el.style.paddingBottom;
el.style.height = '0';
el.style.paddingTop = 0;
el.style.paddingBottom = 0;
},
enter(el) {
el.dataset.oldOverflow = el.style.overflow;
if (el.scrollHeight !== 0) {
el.style.height = el.scrollHeight + 'px';
el.style.paddingTop = el.dataset.oldPaddingTop;
el.style.paddingBottom = el.dataset.oldPaddingBottom;
} else {
el.style.height = '';
el.style.paddingTop = el.dataset.oldPaddingTop;
el.style.paddingBottom = el.dataset.oldPaddingBottom;
}
el.style.overflow = 'hidden';
},
afterEnter(el) {
// for safari: remove class then reset height is necessary
removeClass(el, 'collapse-transition');
el.style.height = '';
el.style.overflow = el.dataset.oldOverflow;
},
beforeLeave(el) {
if (!el.dataset) el.dataset = {};
el.dataset.oldPaddingTop = el.style.paddingTop;
el.dataset.oldPaddingBottom = el.style.paddingBottom;
el.dataset.oldOverflow = el.style.overflow;
el.style.height = el.scrollHeight + 'px';
el.style.overflow = 'hidden';
},
leave(el) {
if (el.scrollHeight !== 0) {
// for safari: add class after set height, or it will jump to zero height suddenly, weired
addClass(el, 'collapse-transition');
el.style.height = 0;
el.style.paddingTop = 0;
el.style.paddingBottom = 0;
}
},
afterLeave(el) {
removeClass(el, 'collapse-transition');
el.style.height = '';
el.style.overflow = el.dataset.oldOverflow;
el.style.paddingTop = el.dataset.oldPaddingTop;
el.style.paddingBottom = el.dataset.oldPaddingBottom;
}
})
export default {
name: 'ElCollapseTransition',
functional: true,
render(h, { children }) {
const data = {
on: Transition()
};
return h('transition', data, children);
}
};

View File

@@ -0,0 +1,27 @@
/**
* Bind after-leave event for vue instance. Make sure after-leave is called in any browsers.
*
* @param {Vue} instance Vue instance.
* @param {Function} callback callback of after-leave event
* @param {Number} speed the speed of transition, default value is 300ms
* @param {Boolean} once weather bind after-leave once. default value is false.
*/
export default function(instance, callback, speed = 300, once = false) {
if (!instance || !callback) throw new Error('instance & callback is required');
let called = false;
const afterLeaveCallback = function() {
if (called) return;
called = true;
if (callback) {
callback.apply(null, arguments);
}
};
if (once) {
instance.$once('after-leave', afterLeaveCallback);
} else {
instance.$on('after-leave', afterLeaveCallback);
}
setTimeout(() => {
afterLeaveCallback();
}, speed + 100);
};

View File

@@ -0,0 +1,90 @@
import Utils from './aria-utils';
/**
* @constructor
* @desc Dialog object providing modal focus management.
*
* Assumptions: The element serving as the dialog container is present in the
* DOM and hidden. The dialog container has role='dialog'.
*
* @param dialogId
* The ID of the element serving as the dialog container.
* @param focusAfterClosed
* Either the DOM node or the ID of the DOM node to focus when the
* dialog closes.
* @param focusFirst
* Optional parameter containing either the DOM node or the ID of the
* DOM node to focus when the dialog opens. If not specified, the
* first focusable element in the dialog will receive focus.
*/
var aria = aria || {};
var tabEvent;
aria.Dialog = function(dialog, focusAfterClosed, focusFirst) {
this.dialogNode = dialog;
if (this.dialogNode === null || this.dialogNode.getAttribute('role') !== 'dialog') {
throw new Error('Dialog() requires a DOM element with ARIA role of dialog.');
}
if (typeof focusAfterClosed === 'string') {
this.focusAfterClosed = document.getElementById(focusAfterClosed);
} else if (typeof focusAfterClosed === 'object') {
this.focusAfterClosed = focusAfterClosed;
} else {
this.focusAfterClosed = null;
}
if (typeof focusFirst === 'string') {
this.focusFirst = document.getElementById(focusFirst);
} else if (typeof focusFirst === 'object') {
this.focusFirst = focusFirst;
} else {
this.focusFirst = null;
}
if (this.focusFirst) {
this.focusFirst.focus();
} else {
Utils.focusFirstDescendant(this.dialogNode);
}
this.lastFocus = document.activeElement;
tabEvent = (e) => {
this.trapFocus(e);
};
this.addListeners();
};
aria.Dialog.prototype.addListeners = function() {
document.addEventListener('focus', tabEvent, true);
};
aria.Dialog.prototype.removeListeners = function() {
document.removeEventListener('focus', tabEvent, true);
};
aria.Dialog.prototype.closeDialog = function() {
this.removeListeners();
if (this.focusAfterClosed) {
setTimeout(() => {
this.focusAfterClosed.focus();
});
}
};
aria.Dialog.prototype.trapFocus = function(event) {
if (Utils.IgnoreUtilFocusChanges) {
return;
}
if (this.dialogNode.contains(event.target)) {
this.lastFocus = event.target;
} else {
Utils.focusFirstDescendant(this.dialogNode);
if (this.lastFocus === document.activeElement) {
Utils.focusLastDescendant(this.dialogNode);
}
this.lastFocus = document.activeElement;
}
};
export default aria.Dialog;

View File

@@ -0,0 +1,122 @@
var aria = aria || {};
aria.Utils = aria.Utils || {};
/**
* @desc Set focus on descendant nodes until the first focusable element is
* found.
* @param element
* DOM node for which to find the first focusable descendant.
* @returns
* true if a focusable element is found and focus is set.
*/
aria.Utils.focusFirstDescendant = function(element) {
for (var i = 0; i < element.childNodes.length; i++) {
var child = element.childNodes[i];
if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {
return true;
}
}
return false;
};
/**
* @desc Find the last descendant node that is focusable.
* @param element
* DOM node for which to find the last focusable descendant.
* @returns
* true if a focusable element is found and focus is set.
*/
aria.Utils.focusLastDescendant = function(element) {
for (var i = element.childNodes.length - 1; i >= 0; i--) {
var child = element.childNodes[i];
if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {
return true;
}
}
return false;
};
/**
* @desc Set Attempt to set focus on the current node.
* @param element
* The node to attempt to focus on.
* @returns
* true if element is focused.
*/
aria.Utils.attemptFocus = function(element) {
if (!aria.Utils.isFocusable(element)) {
return false;
}
aria.Utils.IgnoreUtilFocusChanges = true;
try {
element.focus();
} catch (e) {
}
aria.Utils.IgnoreUtilFocusChanges = false;
return (document.activeElement === element);
};
aria.Utils.isFocusable = function(element) {
if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {
return true;
}
if (element.disabled) {
return false;
}
switch (element.nodeName) {
case 'A':
return !!element.href && element.rel !== 'ignore';
case 'INPUT':
return element.type !== 'hidden' && element.type !== 'file';
case 'BUTTON':
case 'SELECT':
case 'TEXTAREA':
return true;
default:
return false;
}
};
/**
* 触发一个事件
* mouseenter, mouseleave, mouseover, keyup, change, click 等
* @param {Element} elm
* @param {String} name
* @param {*} opts
*/
aria.Utils.triggerEvent = function(elm, name, ...opts) {
let eventName;
if (/^mouse|click/.test(name)) {
eventName = 'MouseEvents';
} else if (/^key/.test(name)) {
eventName = 'KeyboardEvent';
} else {
eventName = 'HTMLEvents';
}
const evt = document.createEvent(eventName);
evt.initEvent(name, ...opts);
elm.dispatchEvent
? elm.dispatchEvent(evt)
: elm.fireEvent('on' + name, evt);
return elm;
};
aria.Utils.keys = {
tab: 9,
enter: 13,
space: 32,
left: 37,
up: 38,
right: 39,
down: 40,
esc: 27
};
export default aria.Utils;

View File

@@ -0,0 +1,76 @@
import Vue from 'vue';
import { on } from 'element-ui/src/utils/dom';
const nodeList = [];
const ctx = '@@clickoutsideContext';
let startClick;
let seed = 0;
!Vue.prototype.$isServer && on(document, 'mousedown', e => (startClick = e));
!Vue.prototype.$isServer && on(document, 'mouseup', e => {
nodeList.forEach(node => node[ctx].documentHandler(e, startClick));
});
function createDocumentHandler(el, binding, vnode) {
return function(mouseup = {}, mousedown = {}) {
if (!vnode ||
!vnode.context ||
!mouseup.target ||
!mousedown.target ||
el.contains(mouseup.target) ||
el.contains(mousedown.target) ||
el === mouseup.target ||
(vnode.context.popperElm &&
(vnode.context.popperElm.contains(mouseup.target) ||
vnode.context.popperElm.contains(mousedown.target)))) return;
if (binding.expression &&
el[ctx].methodName &&
vnode.context[el[ctx].methodName]) {
vnode.context[el[ctx].methodName]();
} else {
el[ctx].bindingFn && el[ctx].bindingFn();
}
};
}
/**
* v-clickoutside
* @desc 点击元素外面才会触发的事件
* @example
* ```vue
* <div v-element-clickoutside="handleClose">
* ```
*/
export default {
bind(el, binding, vnode) {
nodeList.push(el);
const id = seed++;
el[ctx] = {
id,
documentHandler: createDocumentHandler(el, binding, vnode),
methodName: binding.expression,
bindingFn: binding.value
};
},
update(el, binding, vnode) {
el[ctx].documentHandler = createDocumentHandler(el, binding, vnode);
el[ctx].methodName = binding.expression;
el[ctx].bindingFn = binding.value;
},
unbind(el) {
let len = nodeList.length;
for (let i = 0; i < len; i++) {
if (nodeList[i][ctx].id === el[ctx].id) {
nodeList.splice(i, 1);
break;
}
}
delete el[ctx];
}
};

View File

@@ -0,0 +1,292 @@
import fecha from 'element-ui/src/utils/date';
import { t } from 'element-ui/src/locale';
const weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
const months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
const newArray = function(start, end) {
let result = [];
for (let i = start; i <= end; i++) {
result.push(i);
}
return result;
};
export const getI18nSettings = () => {
return {
dayNamesShort: weeks.map(week => t(`el.datepicker.weeks.${ week }`)),
dayNames: weeks.map(week => t(`el.datepicker.weeks.${ week }`)),
monthNamesShort: months.map(month => t(`el.datepicker.months.${ month }`)),
monthNames: months.map((month, index) => t(`el.datepicker.month${ index + 1 }`)),
amPm: ['am', 'pm']
};
};
export const toDate = function(date) {
return isDate(date) ? new Date(date) : null;
};
export const isDate = function(date) {
if (date === null || date === undefined) return false;
if (isNaN(new Date(date).getTime())) return false;
if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`
return true;
};
export const isDateObject = function(val) {
return val instanceof Date;
};
export const formatDate = function(date, format) {
date = toDate(date);
if (!date) return '';
return fecha.format(date, format || 'yyyy-MM-dd', getI18nSettings());
};
export const parseDate = function(string, format) {
return fecha.parse(string, format || 'yyyy-MM-dd', getI18nSettings());
};
export const getDayCountOfMonth = function(year, month) {
if (month === 3 || month === 5 || month === 8 || month === 10) {
return 30;
}
if (month === 1) {
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
return 29;
} else {
return 28;
}
}
return 31;
};
export const getDayCountOfYear = function(year) {
const isLeapYear = year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);
return isLeapYear ? 366 : 365;
};
export const getFirstDayOfMonth = function(date) {
const temp = new Date(date.getTime());
temp.setDate(1);
return temp.getDay();
};
// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript
// {prev, next} Date should work for Daylight Saving Time
// Adding 24 * 60 * 60 * 1000 does not work in the above scenario
export const prevDate = function(date, amount = 1) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
};
export const nextDate = function(date, amount = 1) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
};
export const getStartDateOfMonth = function(year, month) {
const result = new Date(year, month, 1);
const day = result.getDay();
if (day === 0) {
return prevDate(result, 7);
} else {
return prevDate(result, day);
}
};
export const getWeekNumber = function(src) {
if (!isDate(src)) return null;
const date = new Date(src.getTime());
date.setHours(0, 0, 0, 0);
// Thursday in current week decides the year.
date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
// January 4 is always in week 1.
const week1 = new Date(date.getFullYear(), 0, 4);
// Adjust to Thursday in week 1 and count number of weeks from date to week 1.
// Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.
return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
};
export const getRangeHours = function(ranges) {
const hours = [];
let disabledHours = [];
(ranges || []).forEach(range => {
const value = range.map(date => date.getHours());
disabledHours = disabledHours.concat(newArray(value[0], value[1]));
});
if (disabledHours.length) {
for (let i = 0; i < 24; i++) {
hours[i] = disabledHours.indexOf(i) === -1;
}
} else {
for (let i = 0; i < 24; i++) {
hours[i] = false;
}
}
return hours;
};
export const getPrevMonthLastDays = (date, amount) => {
if (amount <= 0) return [];
const temp = new Date(date.getTime());
temp.setDate(0);
const lastDay = temp.getDate();
return range(amount).map((_, index) => lastDay - (amount - index - 1));
};
export const getMonthDays = (date) => {
const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);
const days = temp.getDate();
return range(days).map((_, index) => index + 1);
};
function setRangeData(arr, start, end, value) {
for (let i = start; i < end; i++) {
arr[i] = value;
}
}
export const getRangeMinutes = function(ranges, hour) {
const minutes = new Array(60);
if (ranges.length > 0) {
ranges.forEach(range => {
const start = range[0];
const end = range[1];
const startHour = start.getHours();
const startMinute = start.getMinutes();
const endHour = end.getHours();
const endMinute = end.getMinutes();
if (startHour === hour && endHour !== hour) {
setRangeData(minutes, startMinute, 60, true);
} else if (startHour === hour && endHour === hour) {
setRangeData(minutes, startMinute, endMinute + 1, true);
} else if (startHour !== hour && endHour === hour) {
setRangeData(minutes, 0, endMinute + 1, true);
} else if (startHour < hour && endHour > hour) {
setRangeData(minutes, 0, 60, true);
}
});
} else {
setRangeData(minutes, 0, 60, true);
}
return minutes;
};
export const range = function(n) {
// see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n
return Array.apply(null, {length: n}).map((_, n) => n);
};
export const modifyDate = function(date, y, m, d) {
return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
};
export const modifyTime = function(date, h, m, s) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());
};
export const modifyWithTimeString = (date, time) => {
if (date == null || !time) {
return date;
}
time = parseDate(time, 'HH:mm:ss');
return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());
};
export const clearTime = function(date) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
};
export const clearMilliseconds = function(date) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);
};
export const limitTimeRange = function(date, ranges, format = 'HH:mm:ss') {
// TODO: refactory a more elegant solution
if (ranges.length === 0) return date;
const normalizeDate = date => fecha.parse(fecha.format(date, format), format);
const ndate = normalizeDate(date);
const nranges = ranges.map(range => range.map(normalizeDate));
if (nranges.some(nrange => ndate >= nrange[0] && ndate <= nrange[1])) return date;
let minDate = nranges[0][0];
let maxDate = nranges[0][0];
nranges.forEach(nrange => {
minDate = new Date(Math.min(nrange[0], minDate));
maxDate = new Date(Math.max(nrange[1], minDate));
});
const ret = ndate < minDate ? minDate : maxDate;
// preserve Year/Month/Date
return modifyDate(
ret,
date.getFullYear(),
date.getMonth(),
date.getDate()
);
};
export const timeWithinRange = function(date, selectableRange, format) {
const limitedDate = limitTimeRange(date, selectableRange, format);
return limitedDate.getTime() === date.getTime();
};
export const changeYearMonthAndClampDate = function(date, year, month) {
// clamp date to the number of days in `year`, `month`
// eg: (2010-1-31, 2010, 2) => 2010-2-28
const monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));
return modifyDate(date, year, month, monthDate);
};
export const prevMonth = function(date) {
const year = date.getFullYear();
const month = date.getMonth();
return month === 0
? changeYearMonthAndClampDate(date, year - 1, 11)
: changeYearMonthAndClampDate(date, year, month - 1);
};
export const nextMonth = function(date) {
const year = date.getFullYear();
const month = date.getMonth();
return month === 11
? changeYearMonthAndClampDate(date, year + 1, 0)
: changeYearMonthAndClampDate(date, year, month + 1);
};
export const prevYear = function(date, amount = 1) {
const year = date.getFullYear();
const month = date.getMonth();
return changeYearMonthAndClampDate(date, year - amount, month);
};
export const nextYear = function(date, amount = 1) {
const year = date.getFullYear();
const month = date.getMonth();
return changeYearMonthAndClampDate(date, year + amount, month);
};
export const extractDateFormat = function(format) {
return format
.replace(/\W?m{1,2}|\W?ZZ/g, '')
.replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '')
.trim();
};
export const extractTimeFormat = function(format) {
return format
.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '')
.trim();
};
export const validateRangeInOneMonth = function(start, end) {
return (start.getMonth() === end.getMonth()) && (start.getFullYear() === end.getFullYear());
};

View File

@@ -0,0 +1,368 @@
/* Modified from https://github.com/taylorhakes/fecha
*
* The MIT License (MIT)
*
* Copyright (c) 2015 Taylor Hakes
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/*eslint-disable*/
// 把 YYYY-MM-DD 改成了 yyyy-MM-dd
(function (main) {
'use strict';
/**
* Parse or format dates
* @class fecha
*/
var fecha = {};
var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g;
var twoDigits = '\\d\\d?';
var threeDigits = '\\d{3}';
var fourDigits = '\\d{4}';
var word = '[^\\s]+';
var literal = /\[([^]*?)\]/gm;
var noop = function () {
};
function regexEscape(str) {
return str.replace( /[|\\{()[^$+*?.-]/g, '\\$&');
}
function shorten(arr, sLen) {
var newArr = [];
for (var i = 0, len = arr.length; i < len; i++) {
newArr.push(arr[i].substr(0, sLen));
}
return newArr;
}
function monthUpdate(arrName) {
return function (d, v, i18n) {
var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());
if (~index) {
d.month = index;
}
};
}
function pad(val, len) {
val = String(val);
len = len || 2;
while (val.length < len) {
val = '0' + val;
}
return val;
}
var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var monthNamesShort = shorten(monthNames, 3);
var dayNamesShort = shorten(dayNames, 3);
fecha.i18n = {
dayNamesShort: dayNamesShort,
dayNames: dayNames,
monthNamesShort: monthNamesShort,
monthNames: monthNames,
amPm: ['am', 'pm'],
DoFn: function DoFn(D) {
return D + ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10];
}
};
var formatFlags = {
D: function(dateObj) {
return dateObj.getDay();
},
DD: function(dateObj) {
return pad(dateObj.getDay());
},
Do: function(dateObj, i18n) {
return i18n.DoFn(dateObj.getDate());
},
d: function(dateObj) {
return dateObj.getDate();
},
dd: function(dateObj) {
return pad(dateObj.getDate());
},
ddd: function(dateObj, i18n) {
return i18n.dayNamesShort[dateObj.getDay()];
},
dddd: function(dateObj, i18n) {
return i18n.dayNames[dateObj.getDay()];
},
M: function(dateObj) {
return dateObj.getMonth() + 1;
},
MM: function(dateObj) {
return pad(dateObj.getMonth() + 1);
},
MMM: function(dateObj, i18n) {
return i18n.monthNamesShort[dateObj.getMonth()];
},
MMMM: function(dateObj, i18n) {
return i18n.monthNames[dateObj.getMonth()];
},
yy: function(dateObj) {
return pad(String(dateObj.getFullYear()), 4).substr(2);
},
yyyy: function(dateObj) {
return pad(dateObj.getFullYear(), 4);
},
h: function(dateObj) {
return dateObj.getHours() % 12 || 12;
},
hh: function(dateObj) {
return pad(dateObj.getHours() % 12 || 12);
},
H: function(dateObj) {
return dateObj.getHours();
},
HH: function(dateObj) {
return pad(dateObj.getHours());
},
m: function(dateObj) {
return dateObj.getMinutes();
},
mm: function(dateObj) {
return pad(dateObj.getMinutes());
},
s: function(dateObj) {
return dateObj.getSeconds();
},
ss: function(dateObj) {
return pad(dateObj.getSeconds());
},
S: function(dateObj) {
return Math.round(dateObj.getMilliseconds() / 100);
},
SS: function(dateObj) {
return pad(Math.round(dateObj.getMilliseconds() / 10), 2);
},
SSS: function(dateObj) {
return pad(dateObj.getMilliseconds(), 3);
},
a: function(dateObj, i18n) {
return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];
},
A: function(dateObj, i18n) {
return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();
},
ZZ: function(dateObj) {
var o = dateObj.getTimezoneOffset();
return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);
}
};
var parseFlags = {
d: [twoDigits, function (d, v) {
d.day = v;
}],
Do: [twoDigits + word, function (d, v) {
d.day = parseInt(v, 10);
}],
M: [twoDigits, function (d, v) {
d.month = v - 1;
}],
yy: [twoDigits, function (d, v) {
var da = new Date(), cent = +('' + da.getFullYear()).substr(0, 2);
d.year = '' + (v > 68 ? cent - 1 : cent) + v;
}],
h: [twoDigits, function (d, v) {
d.hour = v;
}],
m: [twoDigits, function (d, v) {
d.minute = v;
}],
s: [twoDigits, function (d, v) {
d.second = v;
}],
yyyy: [fourDigits, function (d, v) {
d.year = v;
}],
S: ['\\d', function (d, v) {
d.millisecond = v * 100;
}],
SS: ['\\d{2}', function (d, v) {
d.millisecond = v * 10;
}],
SSS: [threeDigits, function (d, v) {
d.millisecond = v;
}],
D: [twoDigits, noop],
ddd: [word, noop],
MMM: [word, monthUpdate('monthNamesShort')],
MMMM: [word, monthUpdate('monthNames')],
a: [word, function (d, v, i18n) {
var val = v.toLowerCase();
if (val === i18n.amPm[0]) {
d.isPm = false;
} else if (val === i18n.amPm[1]) {
d.isPm = true;
}
}],
ZZ: ['[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z', function (d, v) {
var parts = (v + '').match(/([+-]|\d\d)/gi), minutes;
if (parts) {
minutes = +(parts[1] * 60) + parseInt(parts[2], 10);
d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;
}
}]
};
parseFlags.dd = parseFlags.d;
parseFlags.dddd = parseFlags.ddd;
parseFlags.DD = parseFlags.D;
parseFlags.mm = parseFlags.m;
parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;
parseFlags.MM = parseFlags.M;
parseFlags.ss = parseFlags.s;
parseFlags.A = parseFlags.a;
// Some common format strings
fecha.masks = {
default: 'ddd MMM dd yyyy HH:mm:ss',
shortDate: 'M/D/yy',
mediumDate: 'MMM d, yyyy',
longDate: 'MMMM d, yyyy',
fullDate: 'dddd, MMMM d, yyyy',
shortTime: 'HH:mm',
mediumTime: 'HH:mm:ss',
longTime: 'HH:mm:ss.SSS'
};
/***
* Format a date
* @method format
* @param {Date|number} dateObj
* @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'
*/
fecha.format = function (dateObj, mask, i18nSettings) {
var i18n = i18nSettings || fecha.i18n;
if (typeof dateObj === 'number') {
dateObj = new Date(dateObj);
}
if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {
throw new Error('Invalid Date in fecha.format');
}
mask = fecha.masks[mask] || mask || fecha.masks['default'];
var literals = [];
// Make literals inactive by replacing them with ??
mask = mask.replace(literal, function($0, $1) {
literals.push($1);
return '@@@';
});
// Apply formatting rules
mask = mask.replace(token, function ($0) {
return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);
});
// Inline literal values back into the formatted value
return mask.replace(/@@@/g, function() {
return literals.shift();
});
};
/**
* Parse a date string into an object, changes - into /
* @method parse
* @param {string} dateStr Date string
* @param {string} format Date parse format
* @returns {Date|boolean}
*/
fecha.parse = function (dateStr, format, i18nSettings) {
var i18n = i18nSettings || fecha.i18n;
if (typeof format !== 'string') {
throw new Error('Invalid format in fecha.parse');
}
format = fecha.masks[format] || format;
// Avoid regular expression denial of service, fail early for really long strings
// https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS
if (dateStr.length > 1000) {
return null;
}
var dateInfo = {};
var parseInfo = [];
var literals = [];
format = format.replace(literal, function($0, $1) {
literals.push($1);
return '@@@';
});
var newFormat = regexEscape(format).replace(token, function ($0) {
if (parseFlags[$0]) {
var info = parseFlags[$0];
parseInfo.push(info[1]);
return '(' + info[0] + ')';
}
return $0;
});
newFormat = newFormat.replace(/@@@/g, function() {
return literals.shift();
});
var matches = dateStr.match(new RegExp(newFormat, 'i'));
if (!matches) {
return null;
}
for (var i = 1; i < matches.length; i++) {
parseInfo[i - 1](dateInfo, matches[i], i18n);
}
var today = new Date();
if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {
dateInfo.hour = +dateInfo.hour + 12;
} else if (dateInfo.isPm === false && +dateInfo.hour === 12) {
dateInfo.hour = 0;
}
var date;
if (dateInfo.timezoneOffset != null) {
dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;
date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));
} else {
date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);
}
return date;
};
/* istanbul ignore next */
if (typeof module !== 'undefined' && module.exports) {
module.exports = fecha;
} else if (typeof define === 'function' && define.amd) {
define(function () {
return fecha;
});
} else {
main.fecha = fecha;
}
})(this);

View File

@@ -0,0 +1,227 @@
/* istanbul ignore next */
import Vue from 'vue';
const isServer = Vue.prototype.$isServer;
const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
const MOZ_HACK_REGEXP = /^moz([A-Z])/;
const ieVersion = isServer ? 0 : Number(document.documentMode);
/* istanbul ignore next */
const trim = function(string) {
return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
};
/* istanbul ignore next */
const camelCase = function(name) {
return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
return offset ? letter.toUpperCase() : letter;
}).replace(MOZ_HACK_REGEXP, 'Moz$1');
};
/* istanbul ignore next */
export const on = (function() {
if (!isServer && document.addEventListener) {
return function(element, event, handler) {
if (element && event && handler) {
element.addEventListener(event, handler, false);
}
};
} else {
return function(element, event, handler) {
if (element && event && handler) {
element.attachEvent('on' + event, handler);
}
};
}
})();
/* istanbul ignore next */
export const off = (function() {
if (!isServer && document.removeEventListener) {
return function(element, event, handler) {
if (element && event) {
element.removeEventListener(event, handler, false);
}
};
} else {
return function(element, event, handler) {
if (element && event) {
element.detachEvent('on' + event, handler);
}
};
}
})();
/* istanbul ignore next */
export const once = function(el, event, fn) {
var listener = function() {
if (fn) {
fn.apply(this, arguments);
}
off(el, event, listener);
};
on(el, event, listener);
};
/* istanbul ignore next */
export function hasClass(el, cls) {
if (!el || !cls) return false;
if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');
if (el.classList) {
return el.classList.contains(cls);
} else {
return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
};
/* istanbul ignore next */
export function addClass(el, cls) {
if (!el) return;
var curClass = el.className;
var classes = (cls || '').split(' ');
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.add(clsName);
} else if (!hasClass(el, clsName)) {
curClass += ' ' + clsName;
}
}
if (!el.classList) {
el.className = curClass;
}
};
/* istanbul ignore next */
export function removeClass(el, cls) {
if (!el || !cls) return;
var classes = cls.split(' ');
var curClass = ' ' + el.className + ' ';
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.remove(clsName);
} else if (hasClass(el, clsName)) {
curClass = curClass.replace(' ' + clsName + ' ', ' ');
}
}
if (!el.classList) {
el.className = trim(curClass);
}
};
/* istanbul ignore next */
export const getStyle = ieVersion < 9 ? function(element, styleName) {
if (isServer) return;
if (!element || !styleName) return null;
styleName = camelCase(styleName);
if (styleName === 'float') {
styleName = 'styleFloat';
}
try {
switch (styleName) {
case 'opacity':
try {
return element.filters.item('alpha').opacity / 100;
} catch (e) {
return 1.0;
}
default:
return (element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null);
}
} catch (e) {
return element.style[styleName];
}
} : function(element, styleName) {
if (isServer) return;
if (!element || !styleName) return null;
styleName = camelCase(styleName);
if (styleName === 'float') {
styleName = 'cssFloat';
}
try {
var computed = document.defaultView.getComputedStyle(element, '');
return element.style[styleName] || computed ? computed[styleName] : null;
} catch (e) {
return element.style[styleName];
}
};
/* istanbul ignore next */
export function setStyle(element, styleName, value) {
if (!element || !styleName) return;
if (typeof styleName === 'object') {
for (var prop in styleName) {
if (styleName.hasOwnProperty(prop)) {
setStyle(element, prop, styleName[prop]);
}
}
} else {
styleName = camelCase(styleName);
if (styleName === 'opacity' && ieVersion < 9) {
element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';
} else {
element.style[styleName] = value;
}
}
};
export const isScroll = (el, vertical) => {
if (isServer) return;
const determinedDirection = vertical !== null || vertical !== undefined;
const overflow = determinedDirection
? vertical
? getStyle(el, 'overflow-y')
: getStyle(el, 'overflow-x')
: getStyle(el, 'overflow');
return overflow.match(/(scroll|auto)/);
};
export const getScrollContainer = (el, vertical) => {
if (isServer) return;
let parent = el;
while (parent) {
if ([window, document, document.documentElement].includes(parent)) {
return window;
}
if (isScroll(parent, vertical)) {
return parent;
}
parent = parent.parentNode;
}
return parent;
};
export const isInContainer = (el, container) => {
if (isServer || !el || !container) return false;
const elRect = el.getBoundingClientRect();
let containerRect;
if ([window, document, document.documentElement, null, undefined].includes(container)) {
containerRect = {
top: 0,
right: window.innerWidth,
bottom: window.innerHeight,
left: 0
};
} else {
containerRect = container.getBoundingClientRect();
}
return elRect.top < containerRect.bottom &&
elRect.bottom > containerRect.top &&
elRect.right > containerRect.left &&
elRect.left < containerRect.right;
};

View File

@@ -0,0 +1,14 @@
import MenuItem from './aria-menuitem';
const Menu = function(domNode) {
this.domNode = domNode;
this.init();
};
Menu.prototype.init = function() {
let menuChildren = this.domNode.childNodes;
[].filter.call(menuChildren, child => child.nodeType === 1).forEach(child => {
new MenuItem(child); // eslint-disable-line
});
};
export default Menu;

View File

@@ -0,0 +1,49 @@
import Utils from '../aria-utils';
import SubMenu from './aria-submenu';
const MenuItem = function(domNode) {
this.domNode = domNode;
this.submenu = null;
this.init();
};
MenuItem.prototype.init = function() {
this.domNode.setAttribute('tabindex', '0');
let menuChild = this.domNode.querySelector('.el-menu');
if (menuChild) {
this.submenu = new SubMenu(this, menuChild);
}
this.addListeners();
};
MenuItem.prototype.addListeners = function() {
const keys = Utils.keys;
this.domNode.addEventListener('keydown', event => {
let prevDef = false;
switch (event.keyCode) {
case keys.down:
Utils.triggerEvent(event.currentTarget, 'mouseenter');
this.submenu && this.submenu.gotoSubIndex(0);
prevDef = true;
break;
case keys.up:
Utils.triggerEvent(event.currentTarget, 'mouseenter');
this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1);
prevDef = true;
break;
case keys.tab:
Utils.triggerEvent(event.currentTarget, 'mouseleave');
break;
case keys.enter:
case keys.space:
prevDef = true;
event.currentTarget.click();
break;
}
if (prevDef) {
event.preventDefault();
}
});
};
export default MenuItem;

View File

@@ -0,0 +1,59 @@
import Utils from '../aria-utils';
const SubMenu = function(parent, domNode) {
this.domNode = domNode;
this.parent = parent;
this.subMenuItems = [];
this.subIndex = 0;
this.init();
};
SubMenu.prototype.init = function() {
this.subMenuItems = this.domNode.querySelectorAll('li');
this.addListeners();
};
SubMenu.prototype.gotoSubIndex = function(idx) {
if (idx === this.subMenuItems.length) {
idx = 0;
} else if (idx < 0) {
idx = this.subMenuItems.length - 1;
}
this.subMenuItems[idx].focus();
this.subIndex = idx;
};
SubMenu.prototype.addListeners = function() {
const keys = Utils.keys;
const parentNode = this.parent.domNode;
Array.prototype.forEach.call(this.subMenuItems, el => {
el.addEventListener('keydown', event => {
let prevDef = false;
switch (event.keyCode) {
case keys.down:
this.gotoSubIndex(this.subIndex + 1);
prevDef = true;
break;
case keys.up:
this.gotoSubIndex(this.subIndex - 1);
prevDef = true;
break;
case keys.tab:
Utils.triggerEvent(parentNode, 'mouseleave');
break;
case keys.enter:
case keys.space:
prevDef = true;
event.currentTarget.click();
break;
}
if (prevDef) {
event.preventDefault();
event.stopPropagation();
}
return false;
});
});
};
export default SubMenu;

View File

@@ -0,0 +1,15 @@
export default function(target) {
for (let i = 1, j = arguments.length; i < j; i++) {
let source = arguments[i] || {};
for (let prop in source) {
if (source.hasOwnProperty(prop)) {
let value = source[prop];
if (value !== undefined) {
target[prop] = value;
}
}
}
}
return target;
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,218 @@
import Vue from 'vue';
import merge from '../merge';
import PopupManager from './popup-manager';
import getScrollBarWidth from '../scrollbar-width';
import { getStyle, addClass, removeClass, hasClass } from '../dom';
let idSeed = 1;
let scrollBarWidth;
export default {
props: {
visible: {
type: Boolean,
default: false
},
openDelay: {},
closeDelay: {},
zIndex: {},
modal: {
type: Boolean,
default: false
},
modalFade: {
type: Boolean,
default: true
},
modalClass: {},
modalAppendToBody: {
type: Boolean,
default: false
},
lockScroll: {
type: Boolean,
default: true
},
closeOnPressEscape: {
type: Boolean,
default: false
},
closeOnClickModal: {
type: Boolean,
default: false
}
},
beforeMount() {
this._popupId = 'popup-' + idSeed++;
PopupManager.register(this._popupId, this);
},
beforeDestroy() {
PopupManager.deregister(this._popupId);
PopupManager.closeModal(this._popupId);
this.restoreBodyStyle();
},
data() {
return {
opened: false,
bodyPaddingRight: null,
computedBodyPaddingRight: 0,
withoutHiddenClass: true,
rendered: false
};
},
watch: {
visible(val) {
if (val) {
if (this._opening) return;
if (!this.rendered) {
this.rendered = true;
Vue.nextTick(() => {
this.open();
});
} else {
this.open();
}
} else {
this.close();
}
}
},
methods: {
open(options) {
if (!this.rendered) {
this.rendered = true;
}
const props = merge({}, this.$props || this, options);
if (this._closeTimer) {
clearTimeout(this._closeTimer);
this._closeTimer = null;
}
clearTimeout(this._openTimer);
const openDelay = Number(props.openDelay);
if (openDelay > 0) {
this._openTimer = setTimeout(() => {
this._openTimer = null;
this.doOpen(props);
}, openDelay);
} else {
this.doOpen(props);
}
},
doOpen(props) {
if (this.$isServer) return;
if (this.willOpen && !this.willOpen()) return;
if (this.opened) return;
this._opening = true;
const dom = this.$el;
const modal = props.modal;
const zIndex = props.zIndex;
if (zIndex) {
PopupManager.zIndex = zIndex;
}
if (modal) {
if (this._closing) {
PopupManager.closeModal(this._popupId);
this._closing = false;
}
PopupManager.openModal(this._popupId, PopupManager.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);
if (props.lockScroll) {
this.withoutHiddenClass = !hasClass(document.body, 'el-popup-parent--hidden');
if (this.withoutHiddenClass) {
this.bodyPaddingRight = document.body.style.paddingRight;
this.computedBodyPaddingRight = parseInt(getStyle(document.body, 'paddingRight'), 10);
}
scrollBarWidth = getScrollBarWidth();
let bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
let bodyOverflowY = getStyle(document.body, 'overflowY');
if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {
document.body.style.paddingRight = this.computedBodyPaddingRight + scrollBarWidth + 'px';
}
addClass(document.body, 'el-popup-parent--hidden');
}
}
if (getComputedStyle(dom).position === 'static') {
dom.style.position = 'absolute';
}
dom.style.zIndex = PopupManager.nextZIndex();
this.opened = true;
this.onOpen && this.onOpen();
this.doAfterOpen();
},
doAfterOpen() {
this._opening = false;
},
close() {
if (this.willClose && !this.willClose()) return;
if (this._openTimer !== null) {
clearTimeout(this._openTimer);
this._openTimer = null;
}
clearTimeout(this._closeTimer);
const closeDelay = Number(this.closeDelay);
if (closeDelay > 0) {
this._closeTimer = setTimeout(() => {
this._closeTimer = null;
this.doClose();
}, closeDelay);
} else {
this.doClose();
}
},
doClose() {
this._closing = true;
this.onClose && this.onClose();
if (this.lockScroll) {
setTimeout(this.restoreBodyStyle, 200);
}
this.opened = false;
this.doAfterClose();
},
doAfterClose() {
PopupManager.closeModal(this._popupId);
this._closing = false;
},
restoreBodyStyle() {
if (this.modal && this.withoutHiddenClass) {
document.body.style.paddingRight = this.bodyPaddingRight;
removeClass(document.body, 'el-popup-parent--hidden');
}
this.withoutHiddenClass = true;
}
}
};
export {
PopupManager
};

View File

@@ -0,0 +1,194 @@
import Vue from 'vue';
import { addClass, removeClass } from '../dom';
let hasModal = false;
let hasInitZIndex = false;
let zIndex;
const getModal = function() {
if (Vue.prototype.$isServer) return;
let modalDom = PopupManager.modalDom;
if (modalDom) {
hasModal = true;
} else {
hasModal = false;
modalDom = document.createElement('div');
PopupManager.modalDom = modalDom;
modalDom.addEventListener('touchmove', function(event) {
event.preventDefault();
event.stopPropagation();
});
modalDom.addEventListener('click', function() {
PopupManager.doOnModalClick && PopupManager.doOnModalClick();
});
}
return modalDom;
};
const instances = {};
const PopupManager = {
modalFade: true,
getInstance: function(id) {
return instances[id];
},
register: function(id, instance) {
if (id && instance) {
instances[id] = instance;
}
},
deregister: function(id) {
if (id) {
instances[id] = null;
delete instances[id];
}
},
nextZIndex: function() {
return PopupManager.zIndex++;
},
modalStack: [],
doOnModalClick: function() {
const topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
if (!topItem) return;
const instance = PopupManager.getInstance(topItem.id);
if (instance && instance.closeOnClickModal) {
instance.close();
}
},
openModal: function(id, zIndex, dom, modalClass, modalFade) {
if (Vue.prototype.$isServer) return;
if (!id || zIndex === undefined) return;
this.modalFade = modalFade;
const modalStack = this.modalStack;
for (let i = 0, j = modalStack.length; i < j; i++) {
const item = modalStack[i];
if (item.id === id) {
return;
}
}
const modalDom = getModal();
addClass(modalDom, 'v-modal');
if (this.modalFade && !hasModal) {
addClass(modalDom, 'v-modal-enter');
}
if (modalClass) {
let classArr = modalClass.trim().split(/\s+/);
classArr.forEach(item => addClass(modalDom, item));
}
setTimeout(() => {
removeClass(modalDom, 'v-modal-enter');
}, 200);
if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
dom.parentNode.appendChild(modalDom);
} else {
document.body.appendChild(modalDom);
}
if (zIndex) {
modalDom.style.zIndex = zIndex;
}
modalDom.tabIndex = 0;
modalDom.style.display = '';
this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
},
closeModal: function(id) {
const modalStack = this.modalStack;
const modalDom = getModal();
if (modalStack.length > 0) {
const topItem = modalStack[modalStack.length - 1];
if (topItem.id === id) {
if (topItem.modalClass) {
let classArr = topItem.modalClass.trim().split(/\s+/);
classArr.forEach(item => removeClass(modalDom, item));
}
modalStack.pop();
if (modalStack.length > 0) {
modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
}
} else {
for (let i = modalStack.length - 1; i >= 0; i--) {
if (modalStack[i].id === id) {
modalStack.splice(i, 1);
break;
}
}
}
}
if (modalStack.length === 0) {
if (this.modalFade) {
addClass(modalDom, 'v-modal-leave');
}
setTimeout(() => {
if (modalStack.length === 0) {
if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
modalDom.style.display = 'none';
PopupManager.modalDom = undefined;
}
removeClass(modalDom, 'v-modal-leave');
}, 200);
}
}
};
Object.defineProperty(PopupManager, 'zIndex', {
configurable: true,
get() {
if (!hasInitZIndex) {
zIndex = zIndex || (Vue.prototype.$ELEMENT || {}).zIndex || 2000;
hasInitZIndex = true;
}
return zIndex;
},
set(value) {
zIndex = value;
}
});
const getTopPopup = function() {
if (Vue.prototype.$isServer) return;
if (PopupManager.modalStack.length > 0) {
const topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];
if (!topPopup) return;
const instance = PopupManager.getInstance(topPopup.id);
return instance;
}
};
if (!Vue.prototype.$isServer) {
// handle `esc` key when the popup is shown
window.addEventListener('keydown', function(event) {
if (event.keyCode === 27) {
const topPopup = getTopPopup();
if (topPopup && topPopup.closeOnPressEscape) {
topPopup.handleClose
? topPopup.handleClose()
: (topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close());
}
}
});
}
export default PopupManager;

View File

@@ -0,0 +1,35 @@
import ResizeObserver from 'resize-observer-polyfill';
const isServer = typeof window === 'undefined';
/* istanbul ignore next */
const resizeHandler = function(entries) {
for (let entry of entries) {
const listeners = entry.target.__resizeListeners__ || [];
if (listeners.length) {
listeners.forEach(fn => {
fn();
});
}
}
};
/* istanbul ignore next */
export const addResizeListener = function(element, fn) {
if (isServer) return;
if (!element.__resizeListeners__) {
element.__resizeListeners__ = [];
element.__ro__ = new ResizeObserver(resizeHandler);
element.__ro__.observe(element);
}
element.__resizeListeners__.push(fn);
};
/* istanbul ignore next */
export const removeResizeListener = function(element, fn) {
if (!element || !element.__resizeListeners__) return;
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
if (!element.__resizeListeners__.length) {
element.__ro__.disconnect();
}
};

View File

@@ -0,0 +1,27 @@
import Vue from 'vue';
export default function scrollIntoView(container, selected) {
if (Vue.prototype.$isServer) return;
if (!selected) {
container.scrollTop = 0;
return;
}
const offsetParents = [];
let pointer = selected.offsetParent;
while (pointer && container !== pointer && container.contains(pointer)) {
offsetParents.push(pointer);
pointer = pointer.offsetParent;
}
const top = selected.offsetTop + offsetParents.reduce((prev, curr) => (prev + curr.offsetTop), 0);
const bottom = top + selected.offsetHeight;
const viewRectTop = container.scrollTop;
const viewRectBottom = viewRectTop + container.clientHeight;
if (top < viewRectTop) {
container.scrollTop = top;
} else if (bottom > viewRectBottom) {
container.scrollTop = bottom - container.clientHeight;
}
}

View File

@@ -0,0 +1,29 @@
import Vue from 'vue';
let scrollBarWidth;
export default function() {
if (Vue.prototype.$isServer) return 0;
if (scrollBarWidth !== undefined) return scrollBarWidth;
const outer = document.createElement('div');
outer.className = 'el-scrollbar__wrap';
outer.style.visibility = 'hidden';
outer.style.width = '100px';
outer.style.position = 'absolute';
outer.style.top = '-9999px';
document.body.appendChild(outer);
const widthNoScroll = outer.offsetWidth;
outer.style.overflow = 'scroll';
const inner = document.createElement('div');
inner.style.width = '100%';
outer.appendChild(inner);
const widthWithScroll = inner.offsetWidth;
outer.parentNode.removeChild(outer);
scrollBarWidth = widthNoScroll - widthWithScroll;
return scrollBarWidth;
};

View File

@@ -0,0 +1,7 @@
export function isDef(val) {
return val !== undefined && val !== null;
}
export function isKorean(text) {
const reg = /([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi;
return reg.test(text);
}

View File

@@ -0,0 +1,24 @@
export function isString(obj) {
return Object.prototype.toString.call(obj) === '[object String]';
}
export function isObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]';
}
export function isHtmlElement(node) {
return node && node.nodeType === Node.ELEMENT_NODE;
}
export const isFunction = (functionToCheck) => {
var getType = {};
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
};
export const isUndefined = (val)=> {
return val === void 0;
};
export const isDefined = (val) => {
return val !== undefined && val !== null;
};

View File

@@ -0,0 +1,218 @@
import Vue from 'vue';
import { isString, isObject } from './types';
const hasOwnProperty = Object.prototype.hasOwnProperty;
export function noop() {};
export function hasOwn(obj, key) {
return hasOwnProperty.call(obj, key);
};
function extend(to, _from) {
for (let key in _from) {
to[key] = _from[key];
}
return to;
};
export function toObject(arr) {
var res = {};
for (let i = 0; i < arr.length; i++) {
if (arr[i]) {
extend(res, arr[i]);
}
}
return res;
};
export const getValueByPath = function(object, prop) {
prop = prop || '';
const paths = prop.split('.');
let current = object;
let result = null;
for (let i = 0, j = paths.length; i < j; i++) {
const path = paths[i];
if (!current) break;
if (i === j - 1) {
result = current[path];
break;
}
current = current[path];
}
return result;
};
export function getPropByPath(obj, path, strict) {
let tempObj = obj;
path = path.replace(/\[(\w+)\]/g, '.$1');
path = path.replace(/^\./, '');
let keyArr = path.split('.');
let i = 0;
for (let len = keyArr.length; i < len - 1; ++i) {
if (!tempObj && !strict) break;
let key = keyArr[i];
if (key in tempObj) {
tempObj = tempObj[key];
} else {
if (strict) {
throw new Error('please transfer a valid prop path to form item!');
}
break;
}
}
return {
o: tempObj,
k: keyArr[i],
v: tempObj ? tempObj[keyArr[i]] : null
};
};
export const generateId = function() {
return Math.floor(Math.random() * 10000);
};
export const valueEquals = (a, b) => {
// see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
if (a === b) return true;
if (!(a instanceof Array)) return false;
if (!(b instanceof Array)) return false;
if (a.length !== b.length) return false;
for (let i = 0; i !== a.length; ++i) {
if (a[i] !== b[i]) return false;
}
return true;
};
export const escapeRegexpString = (value = '') => String(value).replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
// TODO: use native Array.find, Array.findIndex when IE support is dropped
export const arrayFindIndex = function(arr, pred) {
for (let i = 0; i !== arr.length; ++i) {
if (pred(arr[i])) {
return i;
}
}
return -1;
};
export const arrayFind = function(arr, pred) {
const idx = arrayFindIndex(arr, pred);
return idx !== -1 ? arr[idx] : undefined;
};
// coerce truthy value to array
export const coerceTruthyValueToArray = function(val) {
if (Array.isArray(val)) {
return val;
} else if (val) {
return [val];
} else {
return [];
}
};
export const isIE = function() {
return !Vue.prototype.$isServer && !isNaN(Number(document.documentMode));
};
export const isEdge = function() {
return !Vue.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;
};
export const autoprefixer = function(style) {
if (typeof style !== 'object') return style;
const rules = ['transform', 'transition', 'animation'];
const prefixes = ['ms-', 'webkit-'];
rules.forEach(rule => {
const value = style[rule];
if (rule && value) {
prefixes.forEach(prefix => {
style[prefix + rule] = value;
});
}
});
return style;
};
export const kebabCase = function(str) {
const hyphenateRE = /([^-])([A-Z])/g;
return str
.replace(hyphenateRE, '$1-$2')
.replace(hyphenateRE, '$1-$2')
.toLowerCase();
};
export const capitalize = function(str) {
if (!isString(str)) return str;
return str.charAt(0).toUpperCase() + str.slice(1);
};
export const looseEqual = function(a, b) {
const isObjectA = isObject(a);
const isObjectB = isObject(b);
if (isObjectA && isObjectB) {
return JSON.stringify(a) === JSON.stringify(b);
} else if (!isObjectA && !isObjectB) {
return String(a) === String(b);
} else {
return false;
}
};
export const arrayEquals = function(arrayA, arrayB) {
arrayA = arrayA || [];
arrayB = arrayB || [];
if (arrayA.length !== arrayB.length) {
return false;
}
for (let i = 0; i < arrayA.length; i++) {
if (!looseEqual(arrayA[i], arrayB[i])) {
return false;
}
}
return true;
};
export const isEqual = function(value1, value2) {
if (Array.isArray(value1) && Array.isArray(value2)) {
return arrayEquals(value1, value2);
}
return looseEqual(value1, value2);
};
export const isEmpty = function(val) {
// null or undefined
if (val == null) return true;
if (typeof val === 'boolean') return false;
if (typeof val === 'number') return !val;
if (val instanceof Error) return val.message === '';
switch (Object.prototype.toString.call(val)) {
// String or Array
case '[object String]':
case '[object Array]':
return !val.length;
// Map or Set or File
case '[object File]':
case '[object Map]':
case '[object Set]': {
return !val.size;
}
// Plain Object
case '[object Object]': {
return !Object.keys(val).length;
}
}
return false;
};

View File

@@ -0,0 +1,5 @@
import { hasOwn } from 'element-ui/src/utils/util';
export function isVNode(node) {
return node !== null && typeof node === 'object' && hasOwn(node, 'componentOptions');
};

View File

@@ -0,0 +1,199 @@
import Vue from 'vue';
import {
PopupManager
} from './popup';
import popper from './popper';
const PopperJS = Vue.prototype.$isServer ? function() {} : popper;
const stop = e => e.stopPropagation();
/**
* @param {HTMLElement} [reference=$refs.reference] - The reference element used to position the popper.
* @param {HTMLElement} [popper=$refs.popper] - The HTML element used as popper, or a configuration used to generate the popper.
* @param {String} [placement=button] - Placement of the popper accepted values: top(-start, -end), right(-start, -end), bottom(-start, -end), left(-start, -end)
* @param {Number} [offset=0] - Amount of pixels the popper will be shifted (can be negative).
* @param {Boolean} [visible=false] Visibility of the popup element.
* @param {Boolean} [visible-arrow=false] Visibility of the arrow, no style.
*/
export default {
props: {
transformOrigin: {
type: [Boolean, String],
default: true
},
placement: {
type: String,
default: 'bottom'
},
boundariesPadding: {
type: Number,
default: 5
},
reference: {},
popper: {},
offset: {
default: 0
},
value: Boolean,
visibleArrow: Boolean,
arrowOffset: {
type: Number,
default: 35
},
appendToBody: {
type: Boolean,
default: true
},
popperOptions: {
type: Object,
default() {
return {
gpuAcceleration: false
};
}
}
},
data() {
return {
showPopper: false,
currentPlacement: ''
};
},
watch: {
value: {
immediate: true,
handler(val) {
this.showPopper = val;
this.$emit('input', val);
}
},
showPopper(val) {
if (this.disabled) return;
val ? this.updatePopper() : this.destroyPopper();
this.$emit('input', val);
}
},
methods: {
createPopper() {
if (this.$isServer) return;
this.currentPlacement = this.currentPlacement || this.placement;
if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement)) {
return;
}
const options = this.popperOptions;
const popper = this.popperElm = this.popperElm || this.popper || this.$refs.popper;
let reference = this.referenceElm = this.referenceElm || this.reference || this.$refs.reference;
if (!reference &&
this.$slots.reference &&
this.$slots.reference[0]) {
reference = this.referenceElm = this.$slots.reference[0].elm;
}
if (!popper || !reference) return;
if (this.visibleArrow) this.appendArrow(popper);
if (this.appendToBody) document.body.appendChild(this.popperElm);
if (this.popperJS && this.popperJS.destroy) {
this.popperJS.destroy();
}
options.placement = this.currentPlacement;
options.offset = this.offset;
options.arrowOffset = this.arrowOffset;
this.popperJS = new PopperJS(reference, popper, options);
this.popperJS.onCreate(_ => {
this.$emit('created', this);
this.resetTransformOrigin();
this.$nextTick(this.updatePopper);
});
if (typeof options.onUpdate === 'function') {
this.popperJS.onUpdate(options.onUpdate);
}
this.popperJS._popper.style.zIndex = PopupManager.nextZIndex();
this.popperElm.addEventListener('click', stop);
},
updatePopper() {
const popperJS = this.popperJS;
if (popperJS) {
popperJS.update();
if (popperJS._popper) {
popperJS._popper.style.zIndex = PopupManager.nextZIndex();
}
} else {
this.createPopper();
}
},
doDestroy(forceDestroy) {
/* istanbul ignore if */
if (!this.popperJS || (this.showPopper && !forceDestroy)) return;
this.popperJS.destroy();
this.popperJS = null;
},
destroyPopper() {
if (this.popperJS) {
this.resetTransformOrigin();
}
},
resetTransformOrigin() {
if (!this.transformOrigin) return;
let placementMap = {
top: 'bottom',
bottom: 'top',
left: 'right',
right: 'left'
};
let placement = this.popperJS._popper.getAttribute('x-placement').split('-')[0];
let origin = placementMap[placement];
this.popperJS._popper.style.transformOrigin = typeof this.transformOrigin === 'string'
? this.transformOrigin
: ['top', 'bottom'].indexOf(placement) > -1 ? `center ${ origin }` : `${ origin } center`;
},
appendArrow(element) {
let hash;
if (this.appended) {
return;
}
this.appended = true;
for (let item in element.attributes) {
if (/^_v-/.test(element.attributes[item].name)) {
hash = element.attributes[item].name;
break;
}
}
const arrow = document.createElement('div');
if (hash) {
arrow.setAttribute(hash, '');
}
arrow.setAttribute('x-arrow', '');
arrow.className = 'popper__arrow';
element.appendChild(arrow);
}
},
beforeDestroy() {
this.doDestroy(true);
if (this.popperElm && this.popperElm.parentNode === document.body) {
this.popperElm.removeEventListener('click', stop);
document.body.removeChild(this.popperElm);
}
},
// call destroy in keep-alive mode
deactivated() {
this.$options.beforeDestroy[0].call(this);
}
};

View File

@@ -0,0 +1,46 @@
const imageStyle = `
.ck-content .image.image_resized { max-width: 100%;display: block; box-sizing: border-box;}
.ck-content .image.image_resized img { width: 100%;}
.ck-content .image.image_resized > figcaption { display: block;}
.ck-content .image { display: table; clear: both; text-align: center; margin: 1em auto;}
.ck-content .image > img { display: block; margin: 0 auto; max-width: 100%; min-width: 50px; }
.ck-content .image-style-side,.ck-content .image-style-align-left,.ck-content .image-style-align-center,.ck-content .image-style-align-right {max-width: 50%;}
.ck-content .image-style-side {float: right;margin-left: var(--ck-image-style-spacing);}
.ck-content .image-style-align-left {float: left;margin-right: var(--ck-image-style-spacing);}
.ck-content .image-style-align-center {margin-left: auto;margin-right: auto;}
.ck-content .image-style-align-right {float: right;margin-left: var(--ck-image-style-spacing);}
.ck-content .image > figcaption {display: table-caption;caption-side: bottom;word-break: break-word;color: hsl(0, 0%, 20%);background-color: hsl(0, 0%, 97%);padding: .6em;font-size: .75em;outline-offset: -1px;}
`
const codeStyle = `.ck-content code {background-color: hsla(0, 0%, 78%, 0.3);padding: .15em;border-radius: 2px;}`
const pageBreakStyle = `
.ck-content .page-break {position: relative;clear: both;padding: 5px 0;display: flex;align-items: center;justify-content: center;}
.ck-content .page-break::after {content: '';position: absolute;border-bottom: 2px dashed hsl(0, 0%, 77%);width: 100%;}
.ck-content .page-break__label {position: relative;z-index: 1;padding: .3em .6em;display: block;text-transform: uppercase;border: 1px solid hsl(0, 0%, 77%);border-radius: 2px;font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;font-size: 0.75em;font-weight: bold;color: hsl(0, 0%, 20%);background: #fff;box-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;}
@media print {.ck-content .page-break {padding: 0;}.ck-content .page-break::after {display: none;}}
`
const blockquoteStyle = `
.ck-content blockquote {overflow: hidden;padding-right: 1.5em;padding-left: 1.5em;margin-left: 0;margin-right: 0;font-style: italic;border-left: solid 5px hsl(0, 0%, 80%);}
.ck-content[dir="rtl"] blockquote {border-left: 0;border-right: solid 5px hsl(0, 0%, 80%);}
`
const mediaStyle = `
.ck-content .media {clear: both;margin: 1em 0;display: block;min-width: 15em;}
`
const tableStyle = `
.ck-content .table {margin: 1em auto;display: table;}
.ck-content .table table {border-collapse: collapse;border-spacing: 0;width: 100%;height: 100%;border: 1px double hsl(0, 0%, 70%);}
.ck-content .table table td,.ck-content .table table th {min-width: 2em;padding: .4em;border: 1px solid hsl(0, 0%, 75%);}
.ck-content .table table th {font-weight: bold;background: hsla(0, 0%, 0%, 5%);}
`
const hrStyle = `
.ck-content hr {border-width: 1px 0 0;border-style: solid;border-color: hsl(0, 0%, 37%);margin: 0;}
`
const preStyle = `
.ck-content pre {padding: 1em;color: #353535;background: hsla(0, 0%, 78%, 0.3);border: 1px solid hsl(0, 0%, 77%);border-radius: 2px;text-align: left;direction: ltr;tab-size: 4;white-space: pre-wrap;font-style: normal;min-width: 200px;}
.ck-content pre code {background: unset;padding: 0;border-radius: 0;}
`
export default {imageStyle, codeStyle, pageBreakStyle, blockquoteStyle, mediaStyle, tableStyle, hrStyle, preStyle}

View File

@@ -0,0 +1,150 @@
<template>
<div class="ckeditor">
<ckeditor
:editor="editor"
@ready="onReady"
:value="contentData"
@input="onInput"
:config="editorConfig"
></ckeditor>
</div>
</template>
<script>
import CKEditor from '@ckeditor/ckeditor5-vue';
/*
* (my-ckeditor5-build-classic)是参考文档自行配置的工具插件,官方默认是(@ckeditor/ckeditor5-build-classic)
* https://ckeditor.com/docs/ckeditor5/latest/builds/guides/development/custom-builds.html#customizing-a-build
* */
import ClassicEditor from './my-ckeditor5-build-classic/ckeditor'
import './my-ckeditor5-build-classic/translations/zh-cn' //中文包
import styles from './ckeditor5-style'
export default {
name: "fu-ck-editor",
components:{
ckeditor: CKEditor.component
},
model: {
prop: "content",
event: "input"
},
props: {
content: {
required: true,
type: String
},
uploadImgHook: {
type: Function,
default() {
return () => {
console.error("undefined uploadImg Hook")
}
}
}
},
watch:{
content:{
handler(val){
if(val !== this.styleContent){
this.contentData = this.removeStyle(val)
}
},
immediate: true
}
},
data() {
return {
editor: ClassicEditor,
//contentData:this.content,
editorConfig: {
placeholder: '请输入',
language: "zh-cn",
fontSize: {
options: [8, 10, 'default', 14, 16, 18, 20, 22, 24, 26, 28, 32, 48]
},
fontFamily: {
options: ["宋体", "仿宋", "微软雅黑", "黑体", "仿宋_GB2312", "楷体", "隶书", "幼圆"]
},
},
contentData: '',
styleContent:''
}
},
methods: {
onReady(editor) {
editor.plugins.get('FileRepository').createUploadAdapter = loader => {
//let val = editor.getData();
return {
upload: async () => {
return await loader.file.then(f => {
const F = new FileReader();
F.readAsArrayBuffer(f);
return new Promise(resolve => {
F.onload = function () {
resolve({bufAsArray: F.result, file: f})
};
})
}).then(v => {
//执行上传上传
return this.uploadImgHook(v)
//返回标准格式
/*return {
default: 'http://mmcl.maoming.gov.cn/ys/css/img/BG.png'
}*/
});
}
}
};
},
onInput(content){
this.styleContent = this.addStyle(content);
this.$emit('input',this.styleContent);
},
//ckeditor生成的html默认没有样式需要自行添加
addStyle(content){
const classReg = (cls)=> new RegExp("<[^>]+ class=['\"]([\\s\\S]*?\\s)?" + cls + "[^'\"]*['\"][\\s\\S]*?");
const tagReg = (tag)=> new RegExp("(<" + tag + "[\\s\\S]*?)((/>)|([\\s\\S]*?<\/" + tag + ">))");
const styleTests = [
{ key: 'img', reg: tagReg('img'), style: styles.imageStyle },
{ key: 'code', reg: tagReg('code'), style: styles.codeStyle },
{ key: 'page-break', reg: classReg('page-break'), style: styles.pageBreakStyle },
{ key: 'blockquote', reg: tagReg('blockquote'), style: styles.blockquoteStyle },
{ key: 'media', reg: classReg('media'), style: styles.mediaStyle },
{ key: 'table', reg: tagReg('table'), style: styles.tableStyle },
{ key: 'hr', reg: tagReg('hr'), style: styles.hrStyle },
{ key: 'pre', reg: tagReg('pre'), style: styles.preStyle },
];
const styleWrap = (item)=> `<style data-key="__STYLE_KEY_${item.key}" type="text/css">${item.style}</style>`;
styleTests.forEach(item=>{
//匹配对应标签和类名然后自动添加对应style
if(item.reg.test(content) && !content.includes(`data-key="__STYLE_KEY_${item.key}"`)){
content += styleWrap(item);
}
});
if(!content.includes(`data-key="__STYLE_KEY_ck-content"`)){
content = `<div data-key="__STYLE_KEY_ck-content" class="ck-content">${content}</div>`
}
return content;
},
//删除添加的style
removeStyle(content){
const styleReg = new RegExp("<style data-key=\"__STYLE_KEY_[\\s\\S]*?>[\\s\\S]*?<\/style>",'g');
return content.replace(styleReg,'')
}
}
}
</script>
<style lang="scss" scoped>
.ckeditor{
/*overflow: hidden;*/
& ::v-deep .ck.ck-content{
min-height: 200px;
}
& ::v-deep .ck-splitbutton{
min-width: 50px;
}
}
</style>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
(function(d){d['af']=Object.assign(d['af']||{},{a:"Lêer nie opgelaai nie:",b:"Image toolbar",c:"Table toolbar",d:"Skuinsgedruk",e:"Deurgetrek",f:"Onderstreep",g:"Vetgedruk",h:"Voeg beeld of lêer in",i:"Kode",j:"Blok-aanhaling",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Belyn links",av:"Belyn regs",aw:"Belyn in die middel",ax:"Belyn beide kante",ay:"Teksbelyning",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Beeld kan nie in die posisie toegevoeg word nie.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Berg",cd:"Kanselleer",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Undo",ck:"Redo",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Paragraph",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['ar']=Object.assign(d['ar']||{},{a:"لا يمكن رفع الملف:",b:"Image toolbar",c:"Table toolbar",d:"مائل",e:"يتوسطه خط",f:"تحته خط",g:"عريض",h:"Insert image or file",i:"شفرة برمجية",j:"اقتباس",k:"Increase indent",l:"Decrease indent",m:"اختر عنوان",n:"عنوان",o:"عنصر الصورة",p:"صورة بحجم كامل",q:"صورة جانبية",r:"صورة بمحاذاة لليسار",s:"صورة بالوسط",t:"صورة بمحاذاة لليمين",u:"ادخل عنوان الصورة",v:"فشل الرفع",w:"رابط",x:"ادراج صورة",y:"قائمة رقمية",z:"قائمة نقطية",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"تحديد اصفر",af:"تحديد اخضر",ag:"تحديد وردي",ah:"تحديد ازرق",ai:"تحديد احمر",aj:"قلم اخضر",ak:"إزالة التحديد",al:"تحديد",am:"Text highlight toolbar",an:"Font Background Color",ao:"جاري الرفع",ap:"Widget toolbar",aq:"Font Color",ar:"نوع الخط",as:"افتراضي",at:"Insert code block",au:"محاذاة لليسار",av:"محاذاة لليمين",aw:"محاذاة في المنتصف",ax:"ضبط",ay:"محاذاة النص",az:"Text alignment toolbar",ba:"حجم الخط",bb:"ضئيل",bc:"صغير",bd:"كبير",be:"ضخم",bf:"إدراج جدول",bg:"عمود عنوان",bh:"Insert column left",bi:"Insert column right",bj:"حذف العمود",bk:"عمود",bl:"صف عنوان",bm:"ادراج صف بعد",bn:"ادراج صف قبل",bo:"حذف الصف",bp:"صف",bq:"دمج الخلايا للأعلى",br:"دمج الخلايا لليمين",bs:"دمج الخلايا للأسفل",bt:"دمج الخلايا لليسار",bu:"فصل الخلايا بشكل عمودي",bv:"فصل الخلايا بشكل افقي",bw:"دمج الخلايا",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"غير النص البديل للصورة",cc:"حفظ",cd:"إلغاء",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"تراجع",ck:"إعادة",cl:"Dropdown toolbar",cm:"معالج نصوص",cn:"النص البديل",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"إلغاء الرابط",dm:"تحرير الرابط",dn:"فتح الرابط في تبويب جديد",do:"لا يحتوي هذا الرابط على عنوان",dp:"رابط عنوان",dq:"فقرة",dr:"عنوان 1",ds:"عنوان 2",dt:"عنوان 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"معالج نصوص، 0%"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['ast']=Object.assign(d['ast']||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"Cursiva",e:"Strikethrough",f:"Underline",g:"Negrina",h:"Insert image or file",i:"Code",j:"Block quote",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"complementu d'imaxen",p:"Imaxen a tamañu completu",q:"Imaxen llateral",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Enllazar",x:"Insert image",y:"Llista numberada",z:"Llista con viñetes",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Guardar",cd:"Encaboxar",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Desfacer",ck:"Refacer",cl:"Dropdown toolbar",cm:"Editor de testu arriquecíu",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Desenllazar",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"URL del enllaz",dq:"Paragraph",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Editor de testu arriquecíu, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['az']=Object.assign(d['az']||{},{a:"Fayl yüklənə bilmir",b:"Şəkil paneli",c:"Cədvəl paneli",d:"Maili",e:"Qaralanmış",f:"Altdan xətt",g:"Yarıqalın",h:"Şəkil və ya fayl əlavə ed",i:"Kod",j:"Sitat bloku",k:"Boş yeri böyüt",l:"Boş yeri kiçilt",m:"Başlıqı seç",n:"Başlıq",o:"Şəkil vidgetı",p:"Tam ölçülü şəkili",q:"Yan şəkil",r:"Soldan düzləndir",s:"Mərkəzə düzləndir",t:"Sağdan düzləndir",u:"Şəkil başlığı daxil edin",v:"Şəkili serverə yüklə",w:"Əlaqələndir",x:"Şəkili əlavə et",y:"Nömrələnmiş siyahı",z:"Markerlənmiş siyahı",aa:"media vidgeti",ab:"Media əlavə ed",ac:"URL boş olmamalıdır.",ad:"Bu media URL dəstəklənmir.",ae:"Sarı marker",af:"Yaşıl marker",ag:"Çəhrayı marker",ah:"Mavi marker",ai:"Qırmızı qələm",aj:"Yaşıl qələm",ak:"Vurgulanı sil",al:"Vurğulamaq",am:"Vurğulamaq paneli",an:"Şrift Fonunun Rəngi",ao:"Yüklənir",ap:"Vidgetin paneli",aq:"Şrift Rəngi",ar:"Şrift ailəsi",as:"Default",at:"Kod blokunu əlavə et",au:"Soldan düzləndir",av:"Sağdan düzləndir",aw:"Mərkəzə düzləndir",ax:"Eninə görə",ay:"Mətn düzləndirməsi",az:"Mətnin düzləndirmə paneli",ba:"Şrift ölçüsü",bb:"Miniatür",bc:"Kiçik",bd:"Böyük",be:"Nəhəng",bf:"Cədvəli əlavə et",bg:"Başlıqlı sütun",bh:"Sola sütun əlavə et",bi:"Sağa sütun əlavə et",bj:"Sütunları sil",bk:"Sütun",bl:"Başlıqlı sətir",bm:"Yuxarıya sətir əlavə et",bn:"Aşağıya sətir əlavə et",bo:"Sətirləri sil",bp:"Sətir",bq:"Xanaları yuxarı birləşdir",br:"Xanaları sağa birləşdir",bs:"Xanaları aşağı birləşdir",bt:"Xanaları sola birləşdir",bu:"Xanaları şaquli böl",bv:"Xanaları üfüqi böl",bw:"Xanaları birləşdir",bx:"Ölçüsü dəyişmiş təsvirin URL-ni əldə etmək mümkün olmadı",by:"Ölçüsü dəyişmiş təsvirin seçilməsi uğursuz oldu",bz:"Şəkili əlavə etmək mümkün deyil",ca:"Şəkili əlavə edilmədi",cb:"Alternativ mətni redaktə et",cc:"Yadda saxla",cd:"İmtina et",ce:"Media URL-ni xanaya əlavə edin",cf:"Məsləhət: Sürətli qoşma üçün URL-i kontentə əlavə edin",cg:"Media URL",ch:"Rəngi ləğv et",ci:"Rənglər",cj:"İmtina et",ck:"Təkrar et",cl:"Açılan paneli",cm:"Rich Text Redaktoru",cn:"Alternativ mətn",co:"%1-dən %0",cp:"Əvvəlki",cq:"Növbəti",cr:"Qara",cs:"Tünd boz",ct:"Boz",cu:"Açıq boz",cv:"Ağ",cw:"Qırmızı",cx:"Narıncı",cy:"Sarı",cz:"Açıq yaşıl",da:"Yaşıl",db:"Akvamarin",dc:"Firuzəyi",dd:"Açıq mavi",de:"Mavi",df:"Bənövşəyi",dg:"Sadə mətn",dh:"Redaktorun paneli",di:"Daha çox əşyanı göstərin",dj:"Yeni pəncərədə aç",dk:"Yüklənə bilər",dl:"Linki sil",dm:"Linki redaktə et",dn:"Linki yeni pəncərədə aç",do:"Bu linkdə URL yoxdur",dp:"Linkin URL",dq:"Abzas",dr:"Başlıq 1",ds:"Başlıq 2",dt:"Başlıq 3",du:"Başlıq 4",dv:"Başlıq 5",dw:"Başlıq 6",dx:"Rich Text Redaktoru, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['bg']=Object.assign(d['bg']||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"Курсив",e:"Strikethrough",f:"Underline",g:"Удебелен",h:"Insert image or file",i:"Code",j:"Цитат",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Запазване",cd:"Отказ",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Undo",ck:"Redo",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Параграф",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['ca']=Object.assign(d['ca']||{},{a:"No es pot pujar l'arxiu:",b:"Image toolbar",c:"Table toolbar",d:"Cursiva",e:"Marcat",f:"Subrallat",g:"Negreta",h:"Insert image or file",i:"Codi",j:"Cita de bloc",k:"Increase indent",l:"Decrease indent",m:"Escull capçalera",n:"Capçalera",o:"image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Marcador groc",af:"Marcador verd",ag:"Marcador rosa",ah:"Marcador blau",ai:"Marcador vermell",aj:"Bolígraf verd",ak:"Esborrar destacat",al:"Destacat",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font",as:"Predeterminada",at:"Insert code block",au:"Alineació esquerra",av:"Alineació dreta",aw:"Alineació centre",ax:"Justificar",ay:"Alineació text",az:"Text alignment toolbar",ba:"Mida de la font",bb:"Molt petita",bc:"Peita",bd:"Gran",be:"Molt gran",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Desar",cd:"Cancel·lar",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Undo",ck:"Redo",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Pàrraf",dr:"Capçalera 1",ds:"Capçalera 2",dt:"Capçalera 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['cs']=Object.assign(d['cs']||{},{a:"Soubor nelze nahrát:",b:"Panel nástrojů obrázku",c:"Panel nástrojů tabulky",d:"Kurzíva",e:"Přeškrtnuté",f:"Podtržené",g:"Tučné",h:"Vložit obrázek nebo soubor",i:"Kódový blok",j:"Citace",k:"Zvětšit odsazení",l:"Zmenšit odsazení",m:"Zvolte nadpis",n:"Nadpis",o:"ovládací prvek obrázku",p:"Obrázek v plné velikosti",q:"Postranní obrázek",r:"Obrázek zarovnaný vlevo",s:"Obrázek zarovnaný na střed",t:"Obrázek zarovnaný vpravo",u:"Zadejte popis obrázku",v:"Nahrání selhalo",w:"Odkaz",x:"Vložit obrázek",y:"Číslování",z:"Odrážky",aa:"ovládací prvek médií",ab:"Vložit média",ac:"URL adresa musí být vyplněna.",ad:"Tato adresa bohužel není podporována.",ae:"Žlutý fix",af:"Zelený fix",ag:"Růžový fix",ah:"Modrý fix",ai:"Červený fix",aj:"Zelené pero",ak:"Odstranit zvýraznění",al:"Zvýraznění",am:"Panel nástrojů zvýraznění textu",an:"Barva pozadí písma",ao:"Probíhá nahrávání",ap:"Panel nástrojů ovládacího prvku",aq:"Barva písma",ar:"Typ písma",as:"Výchozí",at:"Vložit blok zdrojového kódu",au:"Zarovnat vlevo",av:"Zarovnat vpravo",aw:"Zarovnat na střed",ax:"Zarovnat do bloku",ay:"Zarovnání textu",az:"Panel nástrojů zarovnání textu",ba:"Velikost písma",bb:"Drobné",bc:"Malé",bd:"Velké",be:"Obrovské",bf:"Vložit tabulku",bg:"Sloupec záhlaví",bh:"Vložit sloupec vlevo",bi:"Vložit sloupec vpravo",bj:"Smazat sloupec",bk:"Sloupec",bl:"Řádek záhlaví",bm:"Vložit řádek pod",bn:"Vložit řádek před",bo:"Smazat řádek",bp:"Řádek",bq:"Sloučit s buňkou nad",br:"Sloučit s buňkou vpravo",bs:"Sloučit s buňkou pod",bt:"Sloučit s buňkou vlevo",bu:"Rozdělit buňky vertikálně",bv:"Rozdělit buňky horizontálně",bw:"Sloučit buňky",bx:"Nelze získat URL obrázku se změněnou velikostí.",by:"Výběr obrázku se změněnou velikostí selhal",bz:"Na současnou pozici nelze vložit obrázek.",ca:"Vložení obrázku selhalo",cb:"Změnit alternativní text obrázku",cc:"Uložit",cd:"Zrušit",ce:"Vložte URL média do vstupního pole.",cf:"Rada: Vložte URL přímo do editoru pro rychlejší vnoření.",cg:"URL adresa",ch:"Odstranit barvu",ci:"Barvy dokumentu",cj:"Zpět",ck:"Znovu",cl:"Rozbalovací panel nástrojů",cm:"Textový editor",cn:"Alternativní text",co:"%0 z %1",cp:"Předchozí",cq:"Další",cr:"Černá",cs:"Tmavě šedá",ct:"Šedá",cu:"Světle šedá",cv:"Bílá",cw:"Červená",cx:"Oranžová",cy:"Žlutá",cz:"Světle zelená",da:"Zelená",db:"Akvamarínová",dc:"Tyrkysová",dd:"Světle modrá",de:"Modrá",df:"Fialová",dg:"Prostý text",dh:"Panel nástrojů editoru",di:"Zobrazit další položky",dj:"Otevřít v nové kartě",dk:"Ke stažení",dl:"Odstranit odkaz",dm:"Upravit odkaz",dn:"Otevřít odkaz v nové kartě",do:"Tento odkaz nemá žádnou URL",dp:"URL odkazu",dq:"Odstavec",dr:"Nadpis 1",ds:"Nadpis 2",dt:"Nadpis 3",du:"Nadpis 4",dv:"Nadpis 5",dw:"Nadpis 6",dx:"Textový editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['da']=Object.assign(d['da']||{},{a:"Kan ikke uploade fil:",b:"Billedværktøjslinje",c:"Tabel værktøjslinje",d:"Kursiv",e:"Gennemstreg",f:"Understreget",g:"Fed",h:"Indsæt billede eller fil",i:"Kode",j:"Blot citat",k:"Forøg indrykning",l:"Formindsk indrykning",m:"Vælg overskrift",n:"Overskrift",o:"billed widget",p:"Fuld billedstørrelse",q:"Sidebillede",r:"Venstrestillet billede",s:"Centreret billede",t:"Højrestillet billede",u:"Indtast billedoverskrift",v:"Upload fejlede",w:"Link",x:"Indsæt billede",y:"Opstilling med tal",z:"Punktopstilling",aa:"mediewidget",ab:"Indsæt medie",ac:"URLen kan ikke være tom.",ad:"Denne medie URL understøttes ikke.",ae:"Gul markør",af:"Grøn markør",ag:"Lyserød markør",ah:"Blå markør",ai:"Rød pen",aj:"Grøn pen",ak:"Fjern fremhævning",al:"Fremhæv",am:"Tekstfremhævning værktøjslinje",an:"Skrift baggrundsfarve",ao:"Upload i gang",ap:"Widget værktøjslinje",aq:"Skriftfarve",ar:"Skriftfamilie",as:"Standard",at:"Indsæt kodeblok",au:"Justér venstre",av:"Justér højre",aw:"Justér center",ax:"Justér",ay:"Tekstjustering",az:"Tekstjustering værktøjslinje",ba:"Skriftstørrelse",bb:"Lillebitte",bc:"Lille",bd:"Stor",be:"Kæmpe",bf:"Indsæt tabel",bg:"Headerkolonne",bh:"Indsæt kolonne venstre",bi:"Indsæt kolonne højre",bj:"Slet kolonne",bk:"Kolonne",bl:"Headerrække",bm:"Indsæt header under",bn:"Indsæt header over",bo:"Slet række",bp:"Række",bq:"Flet celler op",br:"Flet celler højre",bs:"Flet celler ned",bt:"Flet celler venstre",bu:"Del celle vertikalt",bv:"Del celle horisontalt",bw:"Flet celler",bx:"Kunne ikke hente URL på ændret billede.",by:"Valg af ændret billede fejlede",bz:"Kunne ikke indsætte billede på aktuel position.",ca:"Indsætning af billede fejlede",cb:"Skift alternativ billedtekst",cc:"Gem",cd:"Annullér",ce:"Indsæt medie URLen i feltet.",cf:"Tip: Indsæt URLen i indholdet for at indlejre hurtigere.",cg:"Medie URL",ch:"Fjern farve",ci:"Dokumentfarve",cj:"Fortryd",ck:"Gentag",cl:"Dropdown værktøjslinje",cm:"Wysiwyg editor",cn:"Alternativ tekst",co:"%0 af %1",cp:"Forrige",cq:"Næste",cr:"Sort",cs:"Dunkel grå",ct:"Grå",cu:"Lys grå",cv:"Hvid",cw:"Rød",cx:"Orange",cy:"Gyl",cz:"Lys grøn",da:"Grøn",db:"Marineblå",dc:"Turkis",dd:"Lys blå",de:"Blå",df:"Lilla",dg:"Plain tekst",dh:"Editor værktøjslinje",di:"Vis flere emner",dj:"Åben i ny fane",dk:"Kan downloades",dl:"Fjern link",dm:"Redigér link",dn:"Åben link i ny fane",do:"Dette link har ingen URL",dp:"Link URL",dq:"Afsnit",dr:"Overskrift 1",ds:"Overskrift 2",dt:"Overskrift 3",du:"Overskrift 4",dv:"Overskrift 5",dw:"Overskrift 6",dx:"Wysiwyg editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['de-ch']=Object.assign(d['de-ch']||{},{a:"Datei kann nicht hochgeladen werden:",b:"Image toolbar",c:"Table toolbar",d:"Italic",e:"Strikethrough",f:"Underline",g:"Bold",h:"Insert image or file",i:"Code",j:"Blockzitat",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload läuft",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Tabelle einfügen",bg:"Kopfspalte",bh:"Insert column left",bi:"Insert column right",bj:"Spalte löschen",bk:"Spalte",bl:"Kopfspalte",bm:"Zeile unten einfügen",bn:"Zeile oben einfügen",bo:"Zeile löschen",bp:"Zeile",bq:"Zelle oben verbinden",br:"Zele rechts verbinden",bs:"Zelle unten verbinden",bt:"Zelle links verbinden",bu:"Zelle vertikal teilen",bv:"Zelle horizontal teilen",bw:"Zellen verbinden",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Save",cd:"Cancel",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Rückgängig",ck:"Wiederherstellen",cl:"Dropdown toolbar",cm:"Rich-Text-Edito",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Paragraph",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich-Text-Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['de']=Object.assign(d['de']||{},{a:"Datei kann nicht hochgeladen werden:",b:"Bild Werkzeugleiste",c:"Tabelle Werkzeugleiste",d:"Kursiv",e:"Durchgestrichen",f:"Unterstrichen",g:"Fett",h:"Bild oder Datei einfügen",i:"Code",j:"Blockzitat",k:"Einzug vergrößern",l:"Einzug verkleinern",m:"Überschrift auswählen",n:"Überschrift",o:"Bild-Steuerelement",p:"Bild in voller Größe",q:"Seitenbild",r:"linksbündiges Bild",s:"zentriertes Bild",t:"rechtsbündiges Bild",u:"Bildunterschrift eingeben",v:"Hochladen fehlgeschlagen",w:"Link",x:"Bild einfügen",y:"Nummerierte Liste",z:"Aufzählungsliste",aa:"Medien-Widget",ab:"Medium einfügen",ac:"Die Url darf nicht leer sein",ad:"Diese Medien-Url wird nicht unterstützt",ae:"Gelber Marker",af:"Grüner Marker",ag:"Pinker Marker",ah:"Blauer Marker",ai:"Rote Schriftfarbe",aj:"Grüne Schriftfarbe",ak:"Texthervorhebung entfernen",al:"Texthervorhebung",am:"Text hervorheben Werkzeugleiste",an:"Hintergrundfarbe",ao:"Upload läuft",ap:"Widget Werkzeugleiste",aq:"Schriftfarbe",ar:"Schriftart",as:"Standard",at:"Block einfügen",au:"Linksbündig",av:"Rechtsbündig",aw:"Zentriert",ax:"Blocksatz",ay:"Textausrichtung",az:"Text-Ausrichtung Toolbar",ba:"Schriftgröße",bb:"Sehr klein",bc:"Klein",bd:"Groß",be:"Sehr groß",bf:"Tabelle einfügen",bg:"Kopfspalte",bh:"Spalte links einfügen",bi:"Spalte rechts einfügen",bj:"Spalte löschen",bk:"Spalte",bl:"Kopfzeile",bm:"Zeile unten einfügen",bn:"Zeile oben einfügen",bo:"Zeile löschen",bp:"Zeile",bq:"Zelle verbinden",br:"Zelle rechts verbinden",bs:"Zelle unten verbinden",bt:"Zelle links verbinden",bu:"Zelle vertikal teilen",bv:"Zelle horizontal teilen",bw:"Zellen verbinden",bx:"Die URL des angepassten Bildes konnte nicht abgerufen werden.",by:"Das angepasste Bild konnte nicht ausgewählt werden.",bz:"Das Bild konnte an der aktuellen Position nicht eingefügt werden.",ca:"Einfügen des Bildes fehlgeschlagen",cb:"Alternativ Text ändern",cc:"Speichern",cd:"Abbrechen",ce:"Medien-URL in das Eingabefeld einfügen.",cf:"Tipp: Zum schnelleren Einbetten können Sie die Medien-URL in den Inhalt einfügen.",cg:"Medien-Url",ch:"Farbe entfernen",ci:"Dokumentfarben",cj:"Rückgängig",ck:"Wiederherstellen",cl:"Dropdown-Liste Werkzeugleiste",cm:"Rich Text Editor",cn:"Textalternative",co:"%0 von %1",cp:"vorherige",cq:"Nächste",cr:"Schwarz",cs:"Dunkelgrau",ct:"Grau",cu:"Hellgrau",cv:"Weiß",cw:"Rot",cx:"Orange",cy:"Gelb",cz:"Hellgrün",da:"Grün",db:"Aquamarinblau",dc:"Türkis",dd:"Hellblau",de:"Blau",df:"Violett",dg:"Nur Text",dh:"Editor Werkzeugleiste",di:"Mehr anzeigen",dj:"In neuem Tab öffnen",dk:"Herunterladbar",dl:"Link entfernen",dm:"Link bearbeiten",dn:"Link im neuen Tab öffnen",do:"Dieser Link hat keine Adresse",dp:"Link Adresse",dq:"Absatz",dr:"Überschrift 1",ds:"Überschrift 2",dt:"Überschrift 3",du:"Überschrift 4",dv:"Überschrift 5",dw:"Überschrift 6",dx:"Rich-Text-Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['el']=Object.assign(d['el']||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"Πλάγια",e:"Strikethrough",f:"Underline",g:"Έντονη",h:"Insert image or file",i:"Code",j:"Περιοχή παράθεσης",k:"Increase indent",l:"Decrease indent",m:"Επιλέξτε κεφαλίδα",n:"Κεφαλίδα",o:"image widget",p:"Εικόνα πλήρης μεγέθους",q:"Side image",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Λεζάντα",v:"Upload failed",w:"Σύνδεσμος",x:"Εισαγωγή εικόνας",y:"Αριθμημένη λίστα",z:"Λίστα κουκκίδων",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Αλλαγή εναλλακτικού κείμενου",cc:"Αποθήκευση",cd:"Ακύρωση",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Αναίρεση",ck:"Επανάληψη",cl:"Dropdown toolbar",cm:"Επεξεργαστής Πλούσιου Κειμένου",cn:"Εναλλακτικό κείμενο",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Αφαίρεση συνδέσμου",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Διεύθυνση συνδέσμου",dq:"Παράγραφος",dr:"Κεφαλίδα 1",ds:"Κεφαλίδα 2",dt:"Κεφαλίδα 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Επεξεργαστής Πλούσιου Κειμένου, 0%"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['en-au']=Object.assign(d['en-au']||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"Italic",e:"Strikethrough",f:"Underline",g:"Bold",h:"Insert image or file",i:"Code",j:"Block quote",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centred image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Colour",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Colour",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align centre",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Save",cd:"Cancel",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove colour",ci:"Document colours",cj:"Undo",ck:"Redo",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Paragraph",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['en-gb']=Object.assign(d['en-gb']||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"Italic",e:"Strikethrough",f:"Underline",g:"Bold",h:"Insert image or file",i:"Code",j:"Block quote",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"Image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centred image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"Media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Colour",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Colour",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Save",cd:"Cancel",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove colour",ci:"Document colours",cj:"Undo",ck:"Redo",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Paragraph",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['eo']=Object.assign(d['eo']||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"kursiva",e:"Strikethrough",f:"Underline",g:"grasa",h:"Insert image or file",i:"Code",j:"Block quote",k:"Increase indent",l:"Decrease indent",m:"Elektu ĉapon",n:"Ĉapo",o:"bilda fenestraĵo",p:"Bildo kun reala dimensio",q:"Flanka biildo",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Skribu klarigon pri la bildo",v:"Upload failed",w:"Ligilo",x:"Enmetu bildon",y:"Numerita Listo",z:"Bula Listo",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Ŝanĝu la alternativan tekston de la bildo",cc:"Konservi",cd:"Nuligi",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Malfari",ck:"Refari",cl:"Dropdown toolbar",cm:"Redaktilo de Riĉa Teksto",cn:"Alternativa teksto",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Malligi",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"URL de la ligilo",dq:"Paragrafo",dr:"Ĉapo 1",ds:"Ĉapo 2",dt:"Ĉapo 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Redaktilo de Riĉa Teksto, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['es']=Object.assign(d['es']||{},{a:"No se pudo cargar el archivo:",b:"Barra de herramientas de imagen",c:"Barra de herramientas de tabla",d:"Cursiva",e:"Tachado",f:"Subrayado",g:"Negrita",h:"Insertar imagen o archivo",i:"Código",j:"Entrecomillado",k:"Aumentar sangría",l:"Disminuir sangría",m:"Elegir Encabezado",n:"Encabezado",o:"Widget de imagen",p:"Imagen a tamaño completo",q:"Imagen lateral",r:"Imagen alineada a la izquierda",s:"Imagen centrada",t:"Imagen alineada a la derecha",u:"Introducir título de la imagen",v:"Fallo en la subida",w:"Enlace",x:"Insertar imagen",y:"Lista numerada",z:"Lista de puntos",aa:"Widget de contenido multimedia",ab:"Insertar contenido multimedia",ac:"La URL no debe estar vacía",ad:"La URL de este contenido multimedia no está soportada",ae:"Marcador amarillo",af:"Marcador verde",ag:"Marcador rosa",ah:"Marcador azul",ai:"Texto rojo",aj:"Texto verde",ak:"Quitar resaltado",al:"Resaltar",am:"Barra de herramientas de resaltado de texto",an:"Color de Fondo",ao:"Subida en progreso",ap:"Barra de herramientas del widget",aq:"Color de Fuente",ar:"Fuente",as:"Por defecto",at:"Insertar bloque de código",au:"Alinear a la izquierda",av:"Alinear a la derecha",aw:"Centrar",ax:"Justificar",ay:"Alineación del texto",az:"Barra de herramientas de alineación del texto",ba:"Tamaño de fuente",bb:"Minúsculo",bc:"Pequeño",bd:"Grande",be:"Enorme",bf:"Insertar tabla",bg:"Columna de encabezado",bh:"Insertar columna izquierda",bi:"Insertar columna derecha",bj:"Eliminar columna",bk:"Columna",bl:"Fila de encabezado",bm:"Insertar fila debajo",bn:"Insertar fila encima",bo:"Eliminar fila",bp:"Fila",bq:"Combinar celda superior",br:"Combinar celda derecha",bs:"Combinar celda inferior",bt:"Combinar celda izquierda",bu:"Dividir celdas verticalmente",bv:"Dividir celdas horizontalmente",bw:"Combinar celdas",bx:"No se puede acceder a la URL de la imagen redimensionada",by:"Fallo eligiendo imagen redimensionada",bz:"No se puede insertar una imagen en la posición actual",ca:"Error insertando imagen",cb:"Cambiar el texto alternativo de la imagen",cc:"Guardar",cd:"Cancelar",ce:"Pega la URL del contenido multimedia",cf:"Tip: pega la URL dentro del contenido para embeber más rápido",cg:"URL del contenido multimedia",ch:"Remover color",ci:"Colores del documento",cj:"Deshacer",ck:"Rehacer",cl:"Barra de herramientas desplegable",cm:"Editor de Texto Enriquecido",cn:"Texto alternativo",co:"%0 de %1",cp:"Anterior",cq:"Siguiente",cr:"Negro",cs:"Gris Oscuro",ct:"Gris",cu:"Gris Claro",cv:"Blanco",cw:"Rojo",cx:"Anaranjado",cy:"Amarillo",cz:"Verde Claro",da:"Verde",db:"Aguamarina",dc:"Turquesa",dd:"Azul Claro",de:"Azul",df:"Morado",dg:"Texto plano",dh:"Barra de herramientas de edición",di:"Mostrar más elementos",dj:"Abrir en una pestaña nueva ",dk:"Descargable",dl:"Quitar enlace",dm:"Editar enlace",dn:"Abrir enlace en una pestaña nueva",do:"Este enlace no tiene URL",dp:"URL del enlace",dq:"Párrafo",dr:"Encabezado 1",ds:"Encabezado 2",dt:"Encabezado 3",du:"Encabezado 4",dv:"Encabezado 5",dw:"Encabezado 6",dx:"Editor de Texto Enriquecido, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['et']=Object.assign(d['et']||{},{a:"Faili ei suudeta üles laadida:",b:"Piltide tööriistariba",c:"Tabelite tööriistariba",d:"Kaldkiri",e:"Läbijoonitud",f:"Allajoonitud",g:"Rasvane",h:"Sisesta pilt või fail",i:"Kood",j:"Tsitaat",k:"Suurenda taanet",l:"Vähenda taanet",m:"Vali pealkiri",n:"Pealkiri",o:"pildi vidin",p:"Täissuuruses pilt",q:"Pilt küljel",r:"Vasakule joondatud pilt",s:"Keskele joondatud pilt",t:"Paremale joondatud pilt",u:"Sisesta pildi pealkiri",v:"Üleslaadimine ebaõnnestus",w:"Link",x:"Siseta pilt",y:"Nummerdatud loetelu",z:"Punktidega loetelu",aa:"meedia vidin",ab:"Sisesta meedia",ac:"URL-i lahter ei tohi olla tühi.",ad:"See meedia URL pole toetatud.",ae:"Kollane marker",af:"Roheline marker",ag:"Roosa marker",ah:"Sinine marker",ai:"Punane pliiats",aj:"Roheline pliiats",ak:"Eemalda esiletõstmine",al:"Tõsta esile",am:"Teksti markeerimise tööriistariba",an:"Kirja tausta värvus",ao:"Üleslaadimine pooleli",ap:"Vidinate tööriistariba",aq:"Fondi värvus",ar:"Kirjastiil",as:"Vaikimisi",at:"Sisesta koodiplokk",au:"Vasakjoondus",av:"Paremjoondus",aw:"Keskjoondus",ax:"Rööpjoondus",ay:"Teksti joondamine",az:"Teksti joonduse tööriistariba",ba:"Teksti suurus",bb:"Imepisike",bc:"Väike",bd:"Suur",be:"Ülisuur",bf:"Sisesta tabel",bg:"Päise veerg",bh:"Sisesta veerg vasakule",bi:"Sisesta veerg paremale",bj:"Kustuta veerg",bk:"Veerg",bl:"Päise rida",bm:"Sisesta rida allapoole",bn:"Sisesta rida ülespoole",bo:"Kustuta rida",bp:"Rida",bq:"Liida ülemise lahtriga",br:"Liida paremal oleva lahtriga",bs:"Liida alumise lahtriga",bt:"Liida vasakul oleva lahtriga",bu:"Jaga lahter vertikaalselt",bv:"Jaga lahter horisontaalselt",bw:"Liida lahtrid",bx:"Muudetud suurusega pildi URL-i hankimine ebaõnnestus.",by:"Muudetud suurusega pildi valimine ebaõnnestus",bz:"Pildi sisestamine praegusesse kohta ebaõnnestus.",ca:"Pildi sisestamine ebaõnnestus",cb:"Muuda pildi asenduskirjeldust",cc:"Salvesta",cd:"Loobu",ce:"Aseta meedia URL sisendi lahtrisse.",cf:"Vihje: asetades meedia URLi otse sisusse saab selle lisada kiiremini.",cg:"Meedia URL",ch:"Eemalda värv",ci:"Dokumendi värvid",cj:"Võta tagasi",ck:"Tee uuesti",cl:"Avatav tööriistariba",cm:"Tekstiredaktor",cn:"Asenduskirjeldus",co:"%0 / %1",cp:"Eelmine",cq:"Järgmine",cr:"Must",cs:"Tumehall",ct:"Hall",cu:"Helehall",cv:"Valge",cw:"Punane",cx:"Oranž",cy:"Kollane",cz:"Heleroheline",da:"Roheline",db:"Akvamariin",dc:"Türkiis",dd:"Helesinine",de:"Sinine",df:"Lilla",dg:"Lihtsalt tekst",dh:"Redaktori tööriistariba",di:"Näita veel",dj:"Ava uuel kaardil",dk:"Allalaaditav",dl:"Eemalda link",dm:"Muuda linki",dn:"Ava link uuel vahekaardil",do:"Sellel lingil puudub URL",dp:"Lingi URL",dq:"Lõik",dr:"Pealkiri 1",ds:"Pealkiri 2",dt:"Pealkiri 3",du:"Pealkiri 4",dv:"Pealkiri 5",dw:"Pealkiri 6",dx:"Tekstiredaktor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['eu']=Object.assign(d['eu']||{},{a:"Ezin da fitxategia kargatu:",b:"Image toolbar",c:"Table toolbar",d:"Etzana",e:"Strikethrough",f:"Azpimarra",g:"Lodia",h:"Insert image or file",i:"Kodea",j:"Aipua",k:"Increase indent",l:"Decrease indent",m:"Aukeratu izenburua",n:"Izenburua",o:"irudi widgeta",p:"Tamaina osoko irudia",q:"Alboko irudia",r:"Ezkerrean lerrokatutako irudia",s:"Zentratutako irudia",t:"Eskuinean lerrokatutako irudia",u:"Sartu irudiaren epigrafea",v:"Kargatzeak huts egin du",w:"Esteka",x:"Txertatu irudia",y:"Zenbakidun zerrenda",z:"Buletdun zerrenda",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Aldatu irudiaren ordezko testua",cc:"Gorde",cd:"Utzi",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Desegin",ck:"Berregin",cl:"Dropdown toolbar",cm:"Testu aberastuaren editorea",cn:"Ordezko testua",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Desestekatu",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Estekaren URLa",dq:"Paragrafoa",dr:"Izenburua 1",ds:"Izenburua 2",dt:"Izenburua 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Testu aberastuaren editorea, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['fa']=Object.assign(d['fa']||{},{a:"فایل آپلود نمی‌شود:",b:"نوارابزار تصویر",c:"نوارابزار جدول",d:"کج",e:"خط خورده",f:"خط زیر",g:"درشت",h:"وارد کردن تصویر یا فایل",i:"کد",j:" بلوک نقل قول",k:"افزایش تورفتگی",l:"کاهش تورفتگی",m:"انتخاب عنوان",n:"عنوان",o:"ابزاره تصویر",p:"تصویر در اندازه کامل",q:"تصویر جانبی",r:"تصویر تراز شده چپ",s:"تصویر در وسط",t:"تصویر تراز شده راست",u:"عنوان تصویر را وارد کنید",v:"آپلود ناموفق بود",w:"پیوند",x:"قرار دادن تصویر",y:"لیست عددی",z:"لیست نشانه‌دار",aa:"ویجت رسانه",ab:"وارد کردن رسانه",ac:"آدرس اینترنتی URL نباید خالی باشد.",ad:"این آدرس اینترنتی رسانه پشتیبانی نمی‌شود",ae:"نشانگر زرد",af:"نشانگر سبز",ag:"نشانگر صورتی",ah:"نشانگر آبی",ai:"قلم قرمز",aj:"قلم سبز",ak:"حذف برجسته",al:"برجسته",am:"نوارابزار برجستگی متن",an:"رنگ پس زمینه فونت",ao:"آپلود در حال انجام",ap:"نوار ابزارک ها",aq:"رنگ فونت",ar:"خانواده فونت",as:"پیش فرض",at:"Insert code block",au:"تراز چپ",av:"تراز راست",aw:"تراز وسط",ax:"هم تراز کردن",ay:"تراز متن",az:"نوارابزار تراز متن",ba:"اندازه فونت",bb:"بسیار کوچک",bc:"کوچک",bd:"بزرگ",be:"بسیار بزرگ",bf:"درج جدول",bg:"ستون سربرگ",bh:"درج ستون در سمت چپ",bi:"درج ستون در سمت راست",bj:"حذف ستون",bk:"ستون",bl:"سطر سربرگ",bm:"درج سطر در پایین",bn:"درج سطر در بالا",bo:"حذف سطر",bp:"سطر",bq:"ادغام سلول بالا",br:"ادغام سلول راست",bs:"ادغام سلول پایین",bt:"ادغام سلول چپ",bu:"تقسیم عمودی سلول",bv:"تقسیم افقی سلول",bw:"ادغام سلول ها",bx:"نمیتوان آدرس اینترنتی تصویر تغییر اندازه یافته را بدست آورد",by:"انتخاب تصویر تغییر اندازه یافته انجام نشد",bz:"نمیتوان تصویر را در موقعیت فعلی وارد کرد",ca:"وارد کردن تصویر انجام نشد",cb:"تغییر متن جایگزین تصویر",cc:"ذخیره",cd:"لغو",ce:"آدرس رسانه را در ورودی قرار دهید",cf:"نکته : آدرس را در محتوا قراردهید تا سریع تر جاسازی شود",cg:"آدرس اینترنتی رسانه",ch:"حذف رنگ",ci:"رنگ اسناد",cj:"بازگردانی",ck:"باز انجام",cl:"نوارابزار کشویی",cm:"ویرایشگر متن غنی",cn:"متن جایگزین",co:"0% از 1%",cp:"قبلی",cq:"بعدی",cr:"سیاه",cs:"خاکستری تیره",ct:"خاکستری",cu:"خاکستری روشن",cv:"سفید",cw:"قرمز",cx:"نارنجی",cy:"زرد",cz:"سبز روشن",da:"سبز",db:"زمرد کبود",dc:"فیروزه ای",dd:"آبی روشن",de:"آبی",df:"بنفش",dg:"Plain text",dh:"نوارابزار ویرایشگر",di:"Show more items",dj:"بازکردن در برگه جدید",dk:"قابل بارگیری",dl:"لغو پیوند",dm:"ویرایش پیوند",dn:"باز کردن پیوند در برگه جدید",do:"این پیوند نشانی اینترنتی ندارد",dp:"نشانی اینترنتی پیوند",dq:"پاراگراف",dr:"عنوان 1",ds:"عنوان 2",dt:"عنوان 3",du:"عنوان 4",dv:"عنوان 5",dw:"عنوان 6",dx:"ویرایشگر متن غنی، %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['fi']=Object.assign(d['fi']||{},{a:"Tiedostoa ei voitu ladata:",b:"Image toolbar",c:"Table toolbar",d:"Kursivointi",e:"Yliviivaus",f:"Alleviivaus",g:"Lihavointi",h:"Lisää kuva tai tiedosto",i:"Koodi",j:"Lainaus",k:"Lisää sisennystä",l:"Vähennä sisennystä",m:"Valitse otsikko",n:"Otsikkotyyli",o:"Kuvavimpain",p:"Täysikokoinen kuva",q:"Pieni kuva",r:"Vasemmalle tasattu kuva",s:"Keskitetty kuva",t:"Oikealle tasattu kuva",u:"Syötä kuvateksti",v:"Lataus epäonnistui",w:"Linkki",x:"Lisää kuva",y:"Numeroitu lista",z:"Lista",aa:"media widget",ab:"Insert media",ac:"URL-osoite ei voi olla tyhjä.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Poista korostus",al:"Korosta",am:"Text highlight toolbar",an:"Fontin taustaväri",ao:"Lähetys käynnissä",ap:"Widget toolbar",aq:"Fontin väri",ar:"Fonttiperhe",as:"Oletus",at:"Insert code block",au:"Tasaa vasemmalle",av:"Tasaa oikealle",aw:"Tasaa keskelle",ax:"Tasaa molemmat reunat",ay:"Tekstin tasaus",az:"Text alignment toolbar",ba:"Fontin koko",bb:"Hyvin pieni",bc:"Pieni",bd:"Suuri",be:"Hyvin suuri",bf:"Lisää taulukko",bg:"Otsikkosarake",bh:"Lisää sarake vasemmalle",bi:"Lisää sarake oikealle",bj:"Poista sarake",bk:"Sarake",bl:"Otsikkorivi",bm:"Lisää rivi alle",bn:"Lisää rivi ylle",bo:"Poista rivi",bp:"Rivi",bq:"Yhdistä solu ylös",br:"Yhdistä solu oikealle",bs:"Yhdistä solu alas",bt:"Yhdistä solu vasemmalle",bu:"Jaa solu pystysuunnassa",bv:"Jaa solu vaakasuunnassa",bw:"Yhdistä tai jaa soluja",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Kuvan lisäys nykyiseen sijaintiin epäonnistui",ca:"Kuvan lisäys epäonnistui",cb:"Vaihda kuvan vaihtoehtoinen teksti",cc:"Tallenna",cd:"Peruuta",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Poista väri",ci:"Document colors",cj:"Peru",ck:"Tee uudelleen",cl:"Dropdown toolbar",cm:"Rikas tekstieditori",cn:"Vaihtoehtoinen teksti",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Musta",cs:"Dim grey",ct:"Harmaa",cu:"Vaaleanharmaa",cv:"Valkoinen",cw:"Punainen",cx:"Oranssi",cy:"Keltainen",cz:"Vaaleanvihreä",da:"Vihreä",db:"Akvamariini",dc:"Turkoosi",dd:"Vaaleansininen",de:"Sininen",df:"Purppura",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Poista linkki",dm:"Muokkaa linkkiä",dn:"Avaa linkki uudessa välilehdessä",do:"Linkillä ei ole URL-osoitetta",dp:"Linkin osoite",dq:"Kappale",dr:"Otsikko 1",ds:"Otsikko 2",dt:"Otsikko 3",du:"Otsikko 4",dv:"Otsikko 5",dw:"Otsikko 6",dx:"Rikas tekstieditori, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['fr']=Object.assign(d['fr']||{},{a:"Envoi du fichier échoué :",b:"Barre d'outils des images",c:"Barre d'outils des tableaux",d:"Italique",e:"Barré",f:"Souligné",g:"Gras",h:"Insérer une image ou un fichier",i:"Code",j:"Citation",k:"Augmenter le retrait",l:"Diminuer le retrait",m:"Choisir l'en-tête",n:"En-tête",o:"Objet image",p:"Image taille réelle",q:"Image latérale",r:"Image alignée à gauche",s:"Image centrée",t:"Image alignée à droite",u:"Saisir la légende de limage",v:"Échec de l'envoi",w:"Lien",x:"Insérer une image",y:"Liste numérotée",z:"Liste à puces",aa:"widget média",ab:"Insérer un média",ac:"L'URL ne doit pas être vide.",ad:"Cette URL de média n'est pas supportée.",ae:"Marqueur jaune",af:"Marqueur vert",ag:"Marqueur rose",ah:"Marqueur bleu",ai:"Crayon rouge",aj:"Crayon vert",ak:"Enlever le surlignage",al:"Surlignage",am:"Barre d'outils du surlignage",an:"Couleur d'arrière-plan",ao:"Téléchargement en cours",ap:"Barre d'outils du widget",aq:"Couleur de police",ar:"Police",as:"Par défaut",at:"Insérer un bloque de code",au:"Aligner à gauche",av:"Aligner à droite",aw:"Centrer",ax:"Justifier",ay:"Alignement du texte",az:"Barre d'outils d'alignement du texte",ba:"Taille de police",bb:"Minuscule",bc:"Petit",bd:"Grand",be:"Enorme",bf:"Insérer un tableau",bg:"Colonne d'entête",bh:"Insérer une colonne à gauche",bi:"Insérer une colonne à droite",bj:"Supprimer la colonne",bk:"Colonne",bl:"Ligne d'entête",bm:"Insérer une ligne en-dessous",bn:"Insérer une ligne au-dessus",bo:"Supprimer la ligne",bp:"Ligne",bq:"Fusionner la cellule au-dessus",br:"Fusionner la cellule à droite",bs:"Fusionner la cellule en-dessous",bt:"Fusionner la cellule à gauche",bu:"Scinder la cellule verticalement",bv:"Scinder la cellule horizontalement",bw:"Fusionner les cellules",bx:"Impossible d'obtenir l'image redimensionnée",by:"La sélection de l'image redimensionnée a échoué.",bz:"Impossible d'insérer l'image à la position courante.",ca:"L'insertion d'image a échoué.",cb:"Changer le texte alternatif à limage",cc:"Enregistrer",cd:"Annuler",ce:"Coller l'URL du média",cf:"Astuce : Copier l'URL du média dans le contenu pour l'insérer plus rapidement",cg:"URL de média",ch:"Enlever la couleur",ci:"Couleurs du document",cj:"Annuler",ck:"Restaurer",cl:"Barre d'outils dans un menu déroulant",cm:"Éditeur de texte enrichi",cn:"Texte alternatif",co:"%0 sur %1",cp:"Précedent",cq:"Suivant",cr:"Noir",cs:"Gris pâle",ct:"Gris",cu:"Gris clair",cv:"Blanc",cw:"Rouge",cx:"Orange",cy:"Jaune",cz:"Vert clair",da:"Vert",db:"Bleu vert",dc:"Turquoise",dd:"Bleu clair",de:"Bleu",df:"Violet",dg:"Texte brute",dh:"Barre d'outils de l'éditeur",di:"Montrer plus d'éléments",dj:"Ouvrir dans un nouvel onglet",dk:"Fichier téléchargeable",dl:"Supprimer le lien",dm:"Modifier le lien",dn:"Ouvrir le lien dans un nouvel onglet",do:"Ce lien n'a pas d'URL",dp:"URL du lien",dq:"Paragraphe",dr:"Titre 1",ds:"Titre 2",dt:"Titre 3",du:"Titre 4",dv:"Titre 5",dw:"Titre 6",dx:"Éditeur de texte enrichi, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['gl']=Object.assign(d['gl']||{},{a:"Non é posíbel cargar o ficheiro:",b:"Barra de ferramentas de imaxe",c:"Barra de ferramentas de táboas",d:"Itálica",e:"Riscado",f:"Subliñado",g:"Negra",h:"Inserir imaxe ou ficheiro",i:"Código",j:"Cita de bloque",k:"Aumentar sangrado",l:"Reducir sangrado",m:"Escolla o título",n:"Título",o:"Trebello de imaxe",p:"Imaxe a tamaño completo",q:"Lado da imaxe",r:"Imaxe aliñada á esquerda",s:"Imaxe centrada horizontalmente",t:"Imaxe aliñada á dereita",u:"Introduza o título da imaxe",v:"Fallou o envío",w:"Ligar",x:"Inserir imaxe",y:"Lista numerada",z:"Lista viñeteada",aa:"trebello multimedia",ab:"Inserir elemento multimedia",ac:"O URL non debe estar baleiro.",ad:"Este URL multimedia non é compatible.",ae:"Marcador marelo",af:"Marcador verde",ag:"Marcador rosa",ah:"Marcador azul",ai:"Pluma vermella",aj:"Pluma verde",ak:"Retirar o resaltado",al:"Resaltado",am:"Barra de ferramentas para resaltar texto",an:"Cor do fondo da letra",ao:"Envío en proceso",ap:"Barra de ferramentas de trebellos",aq:"Cor da letra",ar:"Familia tipográfica",as:"Predeterminada",at:"Inserir bloque de código",au:"Aliñar á esquerda",av:"Aliñar á dereita",aw:"Centrar horizontalmente",ax:"Xustificado",ay:"Aliñamento do texto",az:"Barra de ferramentas de aliñamento de textos",ba:"Tamaño da letra",bb:"Diminuta",bc:"Pequena",bd:"Grande",be:"Enorme",bf:"Inserir táboa",bg:"Cabeceira de columna",bh:"Inserir columna á esquerda",bi:"Inserir columna á dereita",bj:"Eliminar columna",bk:"Columna",bl:"Cabeceira de fila",bm:"Inserir fila embaixo",bn:"Inserir fila enriba",bo:"Eliminar fila",bp:"Fila",bq:"Combinar cela cara arriba",br:"Combinar cela cara a dereita",bs:"Combinar cela cara abaixo",bt:"Combinar cela cara a esquerda",bu:"Dividir cela en vertical",bv:"Dividir cela en horizontal",bw:"Combinar celas",bx:"Non foi posíbel obter o URL da imaxe redimensionada.",by:"Non foi posíbel seleccionar a imaxe redimensionada",bz:"Non foi posíbel inserir a imaxe na posición actual.",ca:"Fallou a inserción da imaxe",cb:"Cambiar o texto alternativo da imaxe",cc:"Gardar",cd:"Cancelar",ce:"Pegue o URL do medio na entrada.",cf:"Consello: Pegue o URL no contido para incrustalo máis rápido.",cg:"URL multimedia",ch:"Retirar a cor",ci:"Cores do documento",cj:"Desfacer",ck:"Refacer",cl:"Barra de ferramentas despregábel",cm:"Editor de texto mellorado",cn:"Texto alternativo",co:"%0 de %1",cp:"Anterior",cq:"Seguinte",cr:"Negro",cs:"Gris fume",ct:"Gris",cu:"Gris claro",cv:"Branco",cw:"Vermello",cx:"Laranxa",cy:"Amarelo",cz:"Verde claro",da:"Verde",db:"Augamariña",dc:"Turquesa",dd:"Azul claro",de:"Azul",df:"Púrpura",dg:"Texto simple",dh:"Barra de ferramentas do editor",di:"Amosar máis elementos",dj:"Abrir nunha nova lapela",dk:"Descargábel",dl:"Desligar",dm:"Editar a ligazón",dn:"Abrir a ligazón nunha nova lapela",do:"Esta ligazón non ten URL",dp:"URL de ligazón",dq:"Parágrafo",dr:"Título 1",ds:"Título 2",dt:"Título 3",du:"Título 4",dv:"Título 5",dw:"Título 6",dx:"Editor de texto mellorado, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['gu']=Object.assign(d['gu']||{},{a:"ફાઇલ અપલોડ ન થઇ શકી",b:"Image toolbar",c:"Table toolbar",d:"ત્રાંસુ - ઇટલિક્",e:"Strikethrough",f:"નીચે લિટી - અન્ડરલાઇન્",g:"ઘાટુ - બોલ્ડ્",h:"Insert image or file",i:"Code",j:" વિચાર ટાંકો",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Save",cd:"Cancel",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Undo",ck:"Redo",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Paragraph",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['he']=Object.assign(d['he']||{},{a:"לא ניתן להעלות את הקובץ הבא:",b:"סרגל תמונה",c:"Table toolbar",d:"נטוי",e:"קו חוצה",f:"קו תחתון",g:"מודגש",h:"הוסף תמונה או קובץ",i:"קוד",j:"בלוק ציטוט",k:"Increase indent",l:"Decrease indent",m:"בחר סוג כותרת",n:"כותרת",o:"תמונה",p:"תמונה בפריסה מלאה",q:"תמונת צד",r:"תמונה מיושרת לשמאל",s:"תמונה ממרוכזת",t:"תמונה מיושרת לימין",u:"הזן כותרת תמונה",v:"העלאה נכשלה",w:"קישור",x:"הוספת תמונה",y:"רשימה ממוספרת",z:"רשימה מנוקדת",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"סימון צהוב",af:"סימון ירוק",ag:"סימון וורוד",ah:"סימון כחול",ai:"עט אדום",aj:"עט ירוק",ak:"הסר הדגשה",al:"הדגשה",am:"סרגל הדגשת טקסט",an:"Font Background Color",ao:"העלאה מתבצעת",ap:"סרגל יישומון",aq:"Font Color",ar:"Font Family",as:"ברירת מחדל",at:"Insert code block",au:"יישור לשמאל",av:"יישור לימין",aw:"יישור באמצע",ax:"מרכוז גבולות",ay:"יישור טקסט",az:"סרגל כלים יישור טקסט",ba:"גודל טקסט",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"לא ניתן להשיג תמונה מוקטנת",by:"בחירת תמונה מוקטנת נכשלה",bz:"לא ניתן להוסיף תמונה במיקום הנוכחי",ca:"הוספת תמונה נכשלה",cb:"שינוי טקסט אלטרנטיבי לתמונה",cc:"שמירה",cd:"ביטול",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"ביטול",ck:"ביצוע מחדש",cl:"סרגל כלים נפתח",cm:"עורך טקסט עשיר",cn:"טקסט אלטרנטיבי",co:"0% מתוך %1",cp:"הקודם",cq:"הבא",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"סרגל הכלים",di:"הצד פריטים נוספים",dj:"Open in a new tab",dk:"Downloadable",dl:"ביטול קישור",dm:"עריכת קישור",dn:"פתח קישור בכרטיסייה חדשה",do:"לקישור זה אין כתובת אתר",dp:"קישור כתובת אתר",dq:"פיסקה",dr:"כותרת 1",ds:"כותרת 2",dt:"כותרת 3",du:"כותרת 4",dv:"כותרת 5",dw:"כותרת 6",dx:"עורך טקסט עשיר, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['hr']=Object.assign(d['hr']||{},{a:"Datoteku nije moguće poslati:",b:"Traka za slike",c:"Traka za tablice",d:"Ukošeno",e:"Precrtano",f:"Podcrtavanje",g:"Podebljano",h:"Umetni sliku ili datoteku",i:"Kod",j:"Blok citat",k:"Povećaj uvlačenje",l:"Umanji uvlačenje",m:"Odaberite naslov",n:"Naslov",o:"Slika widget",p:"Slika pune veličine",q:"Slika sa strane",r:"Lijevo poravnata slika",s:"Centrirana slika",t:"Slika poravnata desno",u:"Unesite naslov slike",v:"Slanje nije uspjelo",w:"Veza",x:"Umetni sliku",y:"Brojčana lista",z:"Obična lista",aa:"dodatak za medije",ab:"Ubaci medij",ac:"URL ne smije biti prazan.",ad:"URL nije podržan.",ae:"Žuti marker",af:"Zeleni marker",ag:"Rozi marker",ah:"Plavi marker",ai:"Crveno pero",aj:"Zeleno pero",ak:"Ukloni isticanje",al:"Istakni",am:"Traka za isticanje teksta",an:"Pozadinska Boja Fonta",ao:"Slanje u tijeku",ap:"Traka sa spravicama",aq:"Boja Fonta",ar:"Obitelj fonta",as:"Podrazumijevano",at:"Insert code block",au:"Poravnaj ulijevo",av:"Poravnaj udesno",aw:"Poravnaj po sredini",ax:"Razvuci",ay:"Poravnanje teksta",az:"Traka za poravnanje",ba:"Veličina fonta",bb:"Sićušan",bc:"Mali",bd:"Veliki",be:"Ogroman",bf:"Ubaci tablicu",bg:"Kolona zaglavlja",bh:"Umetni stupac lijevo",bi:"Umetni stupac desno",bj:"Obriši kolonu",bk:"Kolona",bl:"Red zaglavlja",bm:"Ubaci red ispod",bn:"Ubaci red iznad",bo:"Obriši red",bp:"Red",bq:"Spoji ćelije prema gore",br:"Spoji ćelije prema desno",bs:"Spoji ćelije prema dolje",bt:"Spoji ćelije prema lijevo",bu:"Razdvoji ćeliju okomito",bv:"Razdvoji ćeliju vodoravno",bw:"Spoji ćelije",bx:"Nije moguće dohvatiti URL slike s promijenjenom veličinom",by:"Odabir slike s promijenjenom veličinom nije uspjelo",bz:"Nije moguće umetnuti sliku na trenutnu poziciju",ca:"Umetanje slike nije uspjelo",cb:"Promijeni alternativni tekst slike",cc:"Snimi",cd:"Poništi",ce:"Zalijepi URL medija u ulaz.",cf:"Natuknica: Za brže ugrađivanje zalijepite URL u sadržaj.",cg:"URL medija",ch:"Ukloni boju",ci:"Boje dokumenta",cj:"Poništi",ck:"Ponovi",cl:"Traka padajućeg izbornika",cm:"Rich Text Editor",cn:"Alternativni tekst",co:"%0 od %1",cp:"Prethodni",cq:"Sljedeći",cr:"Crna",cs:"Tamnosiva",ct:"Siva",cu:"Svijetlosiva",cv:"Bijela",cw:"Crvena",cx:"Narančasta",cy:"Žuta",cz:"Svijetlozelena",da:"Zelena",db:"Akvamarin",dc:"Tirkizna",dd:"Svijetloplava",de:"Plava",df:"Ljubičasta",dg:"Plain text",dh:"Traka uređivača",di:"Prikaži više stavaka",dj:"Otvori u novoj kartici",dk:"Moguće preuzeti",dl:"Ukloni vezu",dm:"Uredi vezu",dn:"Otvori vezu u novoj kartici",do:"Ova veza nema URL",dp:"URL veze",dq:"Paragraf",dr:"Naslov 1",ds:"Naslov 2",dt:"Naslov 3",du:"Naslov 4",dv:"Naslov 5",dw:"Naslov 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['hu']=Object.assign(d['hu']||{},{a:"Nem sikerült a fájl feltöltése:",b:"Kép eszköztár",c:"Táblázat eszköztár",d:"Dőlt",e:"Áthúzott",f:"Aláhúzott",g:"Félkövér",h:"Kép, vagy fájl beszúrása",i:"Forráskód",j:"Idézet",k:"Behúzás növelése",l:"Behúzás csökkentése",m:"Stílus megadása",n:"Stílusok",o:"képmodul",p:"Teljes méretű kép",q:"Oldalsó kép",r:"Balra igazított kép",s:"Középre igazított kép",t:"Jobbra igazított kép",u:"Képaláírás megadása",v:"A feltöltés nem sikerült",w:"Link",x:"Kép beszúrása",y:"Számozott lista",z:"Pontozott lista",aa:"Média widget",ab:"Média beszúrása",ac:"Az URL nem lehet üres.",ad:"Ez a média URL típus nem támogatott.",ae:"Sárga kiemelő",af:"Zöld kiemelő",ag:"Rózsaszín kiemelő",ah:"Kék kiemelő",ai:"Piros toll",aj:"Zöld toll",ak:"Kiemelés eltávolítása",al:"Kiemelés",am:"Szöveg kiemelés eszköztár",an:"Betű háttérszín",ao:"A feltöltés folyamatban",ap:"Widget eszköztár",aq:"Betűszín",ar:"Betűtípus",as:"Alapértelmezett",at:"Kód blokk beszúrása",au:"Balra igazítás",av:"Jobbra igazítás",aw:"Középre igazítás",ax:"Sorkizárt",ay:"Szöveg igazítása",az:"Szöveg igazítás eszköztár",ba:"Betűméret",bb:"Apró",bc:"Kicsi",bd:"Nagy",be:"Hatalmas",bf:"Táblázat beszúrása",bg:"Oszlop fejléc",bh:"Oszlop beszúrása balra",bi:"Oszlop beszúrása jobbra",bj:"Oszlop törlése",bk:"Oszlop",bl:"Sor fejléc",bm:"Sor beszúrása alá",bn:"Sor beszúrása fölé",bo:"Sor törlése",bp:"Sor",bq:"Cellák egyesítése felfelé",br:"Cellák egyesítése jobbra",bs:"Cellák egyesítése lefelé",bt:"Cellák egyesítése balra",bu:"Cella felosztása függőlegesen",bv:"Cella felosztása vízszintesen",bw:"Cellaegyesítés",bx:"Az átméretezett kép URL-je nem érhető el.",by:"Az átméretezett kép kiválasztása sikertelen",bz:"A jelenlegi helyen nem szúrható be a kép.",ca:"A kép beszúrása sikertelen",cb:"Helyettesítő szöveg módosítása",cc:"Mentés",cd:"Mégsem",ce:"Illessze be a média URL-jét.",cf:"Tipp: Illessze be a média URL-jét a tartalomba.",cg:"Média URL",ch:"Szín eltávolítása",ci:"Dokumentum színek",cj:"Visszavonás",ck:"Újra",cl:"Lenyíló eszköztár",cm:"Bővített szövegszerkesztő",cn:"Helyettesítő szöveg",co:"%0 / %1",cp:"Előző",cq:"Következő",cr:"Fekete",cs:"Halvány szürke",ct:"Szürke",cu:"Világosszürke",cv:"Fehér",cw:"Piros",cx:"Narancs",cy:"Sárga",cz:"Világoszöld",da:"Zöld",db:"Kékeszöld",dc:"Türkiz",dd:"Világoskék",de:"Kék",df:"Lila",dg:"Egyszerű szöveg",dh:"Szerkesztő eszköztár",di:"További elemek",dj:"Megnyitás új lapon",dk:"Letölthető",dl:"Link eltávolítása",dm:"Link szerkesztése",dn:"Link megnyitása új ablakban",do:"A link nem tartalmaz URL-t",dp:"URL link",dq:"Bekezdés",dr:"Címsor 1",ds:"Címsor 2",dt:"Címsor 3",du:"Címsor 4",dv:"Címsor 5",dw:"Címsor 6",dx:"Bővített szövegszerkesztő, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['id']=Object.assign(d['id']||{},{a:"Tidak dapat mengunggah berkas:",b:"Alat gambar",c:"Alat tabel",d:"Miring",e:"Coret",f:"Garis bawah",g:"Tebal",h:"Sisipkan gambar atau berkas",i:"Kode",j:"Kutipan",k:"Tambah indentasi",l:"Kurangi indentasi",m:"Pilih tajuk",n:"Tajuk",o:"widget gambar",p:"Gambar ukuran penuh",q:"Gambar sisi",r:"Gambar rata kiri",s:"Gambar rata tengah",t:"Gambar rata kanan",u:"Tambahkan deskripsi gambar",v:"Gagal mengunggah",w:"Tautan",x:"Sisipkan gambar",y:"Daftar Berangka",z:"Daftar Tak Berangka",aa:"widget media",ab:"Sisipkan media",ac:"URL tidak boleh kosong.",ad:"URL media ini tidak didukung.",ae:"Marka kuning",af:"Marka hijau",ag:"Marka merah jambu",ah:"Marka biru",ai:"Pena merah",aj:"Pena hijau",ak:"Hapus tanda",al:"Tanda",am:"Alat penanda teks",an:"Warna Latar Huruf",ao:"Sedang mengunggah",ap:"Alat widget",aq:"Warna Huruf",ar:"Jenis Huruf",as:"Bawaan",at:"Sisipkan blok kode",au:"Rata kiri",av:"Rata kanan",aw:"Rata tengah",ax:"Rata kanan-kiri",ay:"Perataan teks",az:"Alat perataan teks",ba:"Ukuran Huruf",bb:"Sangat Kecil",bc:"Kecil",bd:"Besar",be:"Sangat Besar",bf:"Sisipkan tabel",bg:"Kolom tajuk",bh:"Sisipkan kolom ke kiri",bi:"Sisipkan kolom ke kanan",bj:"Hapus kolom",bk:"Kolom",bl:"Baris tajuk",bm:"Sisipkan baris ke bawah",bn:"Sisipkan baris ke atas",bo:"Hapus baris",bp:"Baris",bq:"Gabungkan sel ke atas",br:"Gabungkan sel ke kanan",bs:"Gabungkan sel ke bawah",bt:"Gabungkan sel ke kiri",bu:"Bagikan sel secara vertikal",bv:"Bagikan sel secara horizontal",bw:"Gabungkan sel",bx:"Gagal mendapatkan URL gambar terukur",by:"Gagal memilih gambar terukur",bz:"Tidak dapat menyisipkan gambar pada posisi ini.",ca:"Gagal menyisipkan gambar",cb:"Ganti alternatif teks gambar",cc:"Simpan",cd:"Batal",ce:"Tempelkan URL ke dalam bidang masukan.",cf:"Tip: Tempelkan URL ke bagian konten untuk sisip cepat.",cg:"URL Media",ch:"Hapus warna",ci:"Warna dokumen",cj:"Batal",ck:"Lakukan lagi",cl:"Alat dropdown",cm:"Editor Teks Kaya",cn:"Alternatif teks",co:"%0 dari %1",cp:"Sebelumnya",cq:"Berikutnya",cr:"Hitam",cs:"Kelabu gelap",ct:"Kelabu",cu:"Kelabu terang",cv:"Putih",cw:"Merah",cx:"Jingga",cy:"Kuning",cz:"Hijau terang",da:"Hijau",db:"Biru laut",dc:"Turkish",dd:"Biru terang",de:"Biru",df:"Ungu",dg:"Teks mentah",dh:"Alat editor",di:"Show more items",dj:"Buka di tab baru",dk:"Dapat diunduh",dl:"Hapus tautan",dm:"Sunting tautan",dn:"Buka tautan di tab baru",do:"Tautan ini tidak memiliki URL",dp:"URL tautan",dq:"Paragraf",dr:"Tajuk 1",ds:"Tajuk 2",dt:"Tajuk 3",du:"Tajuk 4",dv:"Tajuk 5",dw:"Tajuk 6",dx:"Editor Teks Kaya, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['it']=Object.assign(d['it']||{},{a:"Impossibile caricare il file:",b:"Barra degli strumenti dell'immagine",c:"Barra degli strumenti della tabella",d:"Corsivo",e:"Barrato",f:"Sottolineato",g:"Grassetto",h:"Inserisci immagine o file",i:"Codice",j:"Blocco citazione",k:"Aumenta rientro",l:"Riduci rientro",m:"Seleziona intestazione",n:"Intestazione",o:"Widget immagine",p:"Immagine a dimensione intera",q:"Immagine laterale",r:"Immagine allineata a sinistra",s:"Immagine centrata",t:"Immagine allineata a destra",u:"inserire didascalia dell'immagine",v:"Caricamento fallito",w:"Collegamento",x:"Inserisci immagine",y:"Elenco numerato",z:"Elenco puntato",aa:"widget media",ab:"Inserisci media",ac:"L'URL non può essere vuoto.",ad:"Questo URL di file multimediali non è supportato.",ae:"Contrassegno giallo",af:"Contrassegno verde",ag:"Contrassegno rosa",ah:"Contrassegno blu",ai:"Penna rossa",aj:"Penna verde",ak:"Rimuovi evidenziazione",al:"Evidenzia",am:"Barra degli strumenti dell'evidenziazione del testo",an:"Colore di sfondo caratteri",ao:"Caricamento in corso",ap:"Barra degli strumenti del widget",aq:"Colore caratteri",ar:"Tipo di caratteri",as:"Predefinito",at:"Inserisci blocco di codice",au:"Allinea a sinistra",av:"Allinea a destra",aw:"Allinea al centro",ax:"Giustifica",ay:"Allineamento del testo",az:"Barra degli strumenti dell'allineamento",ba:"Dimensione caratteri",bb:"Piccolissimi",bc:"Piccoli",bd:"Grandi",be:"Grandissimi",bf:"Inserisci tabella",bg:"Intestazione colonna",bh:"Inserisci colonna a sinistra",bi:"Inserisci colonna a destra",bj:"Elimina colonna",bk:"Colonna",bl:"Riga d'intestazione",bm:"Inserisci riga sotto",bn:"Inserisci riga sopra",bo:"Elimina riga",bp:"Riga",bq:"Unisci cella sopra",br:"Unisci cella a destra",bs:"Unisci cella sotto",bt:"Unisci cella a sinistra",bu:"Dividi cella verticalmente",bv:"Dividi cella orizzontalmente",bw:"Unisci celle",bx:"Non è stato possibile ottenere l'URL dell'immagine ridimensionata.",by:"La selezione dell'immagine ridimensionata è fallita",bz:"Non è stato possibile inserire l'immagine nella posizione corrente.",ca:"L'inserimento dell'immagine è fallito",cb:"Cambia testo alternativo dell'immagine",cc:"Salva",cd:"Annulla",ce:"Incolla l'URL del file multimediale nell'input.",cf:"Consiglio: incolla l'URL nel contenuto per un'incorporazione più veloce.",cg:"URL media",ch:"Rimuovi colore",ci:"Colori del docmento",cj:"Annulla",ck:"Ripristina",cl:"Barra degli strumenti del menu a discesa",cm:"Editor di testo formattato",cn:"Testo alternativo",co:"%0 di %1",cp:"Indietro",cq:"Avanti",cr:"Nero",cs:"Grigio tenue",ct:"Grigio",cu:"Grigio chiaro",cv:"Bianco",cw:"Rosso",cx:"Arancio",cy:"Giallo",cz:"Verde chiaro",da:"Verde",db:"Aquamarina",dc:"Turchese",dd:"Azzurro",de:"Blu",df:"Porpora",dg:"Testo semplice",dh:"Barra degli strumenti dell'editor",di:"Mostra più elementi",dj:"Apri in una nuova scheda",dk:"Scaricabile",dl:"Elimina collegamento",dm:"Modifica collegamento",dn:"Apri collegamento in nuova scheda",do:"Questo collegamento non ha un URL",dp:"URL del collegamento",dq:"Paragrafo",dr:"Intestazione 1",ds:"Intestazione 2",dt:"Intestazione 3",du:"Intestazione 4",dv:"Intestazione 5",dw:"Intestazione 6",dx:"Editor di testo formattato, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['ja']=Object.assign(d['ja']||{},{a:"ファイルをアップロードできません:",b:"Image toolbar",c:"Table toolbar",d:"イタリック",e:"取り消し線",f:"アンダーライン",g:"ボールド",h:"画像やファイルの挿入",i:"コード",j:"ブロッククオート(引用)",k:"Increase indent",l:"Decrease indent",m:"見出しを選択",n:"見出し",o:"画像ウィジェット",p:"フルサイズ画像",q:"サイドイメージ",r:"左寄せ画像",s:"中央寄せ画像",t:"右寄せ画像",u:"画像の注釈を入力",v:"アップロード失敗",w:"リンク",x:"画像挿入",y:"番号付きリスト",z:"箇条書きリスト",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"アップロード中",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"左揃え",av:"右揃え",aw:"中央揃え",ax:"両端揃え",ay:"文字揃え",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"表の挿入",bg:"見出し列",bh:"Insert column left",bi:"Insert column right",bj:"列を削除",bk:"列",bl:"見出し行",bm:"下に行を挿入",bn:"上に行を挿入",bo:"行を削除",bp:"行",bq:"上のセルと結合",br:"右のセルと結合",bs:"下のセルと結合",bt:"左のセルと結合",bu:"横にセルを分離",bv:"縦にセルを分離",bw:"セルを結合",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"画像の代替テキストを変更",cc:"保存",cd:"キャンセル",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"元に戻す",ck:"やり直し",cl:"Dropdown toolbar",cm:"リッチテキストエディター",cn:"代替テキスト",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"リンク解除",dm:"リンクを編集",dn:"新しいタブでリンクを開く",do:"リンクにURLが設定されていません",dp:"リンクURL",dq:"パラグラフ",dr:"見出し1",ds:"見出し2",dt:"見出し3 ",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"リッチテキストエディター, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['km']=Object.assign(d['km']||{},{a:"មិនអាច​អាប់ឡូត​ឯកសារ៖",b:"Image toolbar",c:"Table toolbar",d:"ទ្រេត",e:"Strikethrough",f:"គូស​បន្ទាត់​ក្រោម",g:"ដិត",h:"Insert image or file",i:"Code",j:"ប្លុក​ពាក្យ​សម្រង់",k:"Increase indent",l:"Decrease indent",m:"ជ្រើសរើស​ក្បាលអត្ថបទ",n:"ក្បាលអត្ថបទ",o:"វិដជិត​រូបភាព",p:"រូបភាព​ពេញ​ទំហំ",q:"រូបភាព​នៅ​ខាង",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"បញ្ចូល​ពាក្យ​ពណ៌នា​រូបភាព",v:"អាប់ឡូត​មិនបាន",w:"តំណ",x:"បញ្ចូល​រូបភាព",y:"បញ្ជី​ជា​លេខ",z:"បញ្ជី​ជា​ចំណុច",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"រក្សាទុ",cd:"បោះបង់",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"លែង​ធ្វើ​វិញ",ck:"ធ្វើ​វិញ",cl:"Dropdown toolbar",cm:"កម្មវិធី​កែសម្រួល​អត្ថបទ​សម្បូរបែប",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"ផ្ដាច់​តំណ",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"URL តំណ",dq:"កថាខណ្ឌ",dr:"ក្បាលអត្ថបទ 1",ds:"ក្បាលអត្ថបទ 2",dt:"ក្បាលអត្ថបទ 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"កម្មវិធី​កែសម្រួល​អត្ថបទ​សម្បូរបែប, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['kn']=Object.assign(d['kn']||{},{a:"Cannot upload file:",b:"Image toolbar",c:"Table toolbar",d:"‍ಇಟಾಲಿಕ್",e:"Strikethrough",f:"Underline",g:"‍‍ದಪ್ಪ",h:"Insert image or file",i:"Code",j:"‍‍‍‍ಗುರುತಿಸಲಾದ ‍‍ಉಲ್ಲೇಖ",k:"Increase indent",l:"Decrease indent",m:"ಶೀರ್ಷಿಕೆ ಆಯ್ಕೆಮಾಡು",n:"ಶೀರ್ಷಿಕೆ",o:"‍ಚಿತ್ರ ವಿಜೆಟ್",p:"‍ಪೂರ್ಣ ‍‍ಅಳತೆಯ ಚಿತ್ರ",q:"‍ಪಕ್ಕದ ಚಿತ್ರ",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"‍ಚಿತ್ರದ ಶೀರ್ಷಿಕೆ ಸೇರಿಸು",v:"Upload failed",w:"‍ಕೊಂಡಿ",x:"Insert image",y:"‍ಸಂಖ್ಯೆಯ ಪಟ್ಟಿ‍",z:"‍‍ಬುಲೆಟ್ ಪಟ್ಟಿ",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"‍ಚಿತ್ರದ ಬದಲಿ ಪಠ್ಯ ಬದಲಾಯಿಸು",cc:"ಉಳಿಸು",cd:"ರದ್ದುಮಾಡು",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"‍‍ರದ್ದು",ck:"‍ಮತ್ತೆ ಮಾಡು",cl:"Dropdown toolbar",cm:"‍ಸಮೃದ್ಧ ಪಠ್ಯ ಸಂಪಾದಕ‍‍",cn:"‍ಪಠ್ಯದ ಬದಲಿ",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"‍ಕೊಂಡಿ ತೆಗೆ",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"‍ಕೊಂಡಿ ಸಂಪರ್ಕಿಸು",dq:"ಪ್ಯಾರಾಗ್ರಾಫ್",dr:"ಶೀರ್ಷಿಕೆ 1",ds:"ಶೀರ್ಷಿಕೆ 2",dt:"ಶೀರ್ಷಿಕೆ 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"‍ಸಮೃದ್ಧ ಪಠ್ಯ ಸಂಪಾದಕ‍, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['ko']=Object.assign(d['ko']||{},{a:"파일 업로드 불가",b:"Image toolbar",c:"Table toolbar",d:"기울임꼴",e:"Strikethrough",f:"밑줄",g:"굵게",h:"Insert image or file",i:"소스",j:"인용 단락",k:"Increase indent",l:"Decrease indent",m:"제목 선택",n:"제목",o:"이미지 위젯",p:"문서 너비",q:"내부 우측 정렬",r:"왼쪽 정렬",s:"가운데 정렬",t:"오른쪽 정렬",u:"이미지 설명을 입력하세요",v:"Upload failed",w:"링크",x:"Insert image",y:"번호매기기",z:"글머리기호",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"왼쪽 맞춤",av:"오른쪽 맞춤",aw:"가운데 맞춤",ax:"양쪽 맞춤",ay:"텍스트 정렬",az:"텍스트 정렬 툴바",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"대체 텍스트 변경",cc:"저장",cd:"취소",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"실행 취소",ck:"다시 실행",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"대체 텍스트",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"링크 삭제",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"링크 주소",dq:"문단",dr:"제목1",ds:"제목2",dt:"제목3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['ku']=Object.assign(d['ku']||{},{a:"پەڕگەکە ناتوانرێت باربکرێت:",b:"تووڵامرازی وێنە",c:"تووڵامرازی خشتە",d:"لار",e:"هێڵ بەسەرداهاتوو",f:"ژێرهێڵ",g:"قەڵەو",h:"وێنە یان پەڕگە دابنێ",i:"کۆد",j:"وتەی وەرگیراو",k:"زیادکردنی بۆشایی",l:"کەمکردنەوەی بۆشایی",m:"سەرنووسە هەڵبژێرە",n:"سەرنووسە",o:"وێدجیتی وێنە",p:"پڕ بەقەبارەی وێنە",q:"لای وێنە",r:"ڕیزکردنی وێنە بۆ لای چەپ",s:"ناوەڕاستکراوی وێنە",t:"ڕیزکردنی وێنە بۆ لای ڕاست",u:"سەردێڕی وێنە دابنێ",v:"بارکردنەکە سەرنەکەووت",w:"بەستەر",x:"وێنە دابنێ",y:"لیستەی ژمارەیی",z:"لیستەی خاڵەیی",aa:"ویدجێتتی مێدیا",ab:"مێدیا دابنێ",ac:"پێویستە بەستەر بەتاڵ نەبێت.",ad:"ئەم بەستەری مێدیایە پاڵپشتی ناکرێت.",ae:"نیشانەکەری زەرد",af:"نیشانەکەری سەوز",ag:"نیشانەکەری پەمەیی",ah:"نیشانەکەری شین",ai:"پێنووسی سۆر",aj:"پێنووسی سەوز",ak:"لابردنی بەرچاوکەر",al:"بەرچاوکردن",am:"تووڵامرازی نیشانکردنی تێکست",an:"ڕەنگی پاشبنەمای فۆنت",ao:"بارکردنەکە لە جێبەجێکردن دایە",ap:"تووڵامرازی ویدجێت",aq:"ڕەنگی فۆنت",ar:"فۆنتی خێزانی",as:"بنچینە",at:"دانانی خشتەی کۆد",au:"بەهێڵکردنی چەپ",av:"بەهێڵکردنی ڕاست",aw:"بەهێڵکردنی ناورەڕاست",ax:"هاوستوونی",ay:"ڕیززکردنی تێکست",az:"تووڵامرازی ڕیززکردنی تێکست",ba:"قەبارەی فۆنت",bb:"گچکە",bc:"بچوک",bd:"گەورە",be:"زۆر گەورە",bf:"خشتە دابنێ",bg:"ستوونی دەسپێک",bh:"دانانی ستوون لە چەپ",bi:"دانانی ستوون لە ڕاست",bj:"سڕینەوەی ستوون",bk:"ستوون",bl:"ڕیزی دەسپێک",bm:"دانانی ڕیز لە ژێرەوە",bn:"دانانی ڕیز لە سەرەوە",bo:"سڕینەوەی ڕیز",bp:"ڕیز",bq:"تێکەڵکردنی خانەکان بەرەو سەر",br:"تێکەڵکردنی خانەکان بەرەو ڕاست",bs:"تێکەڵکردنی خانەکان بەرەو ژێرەوە",bt:"تێکەڵکردنی خانەکان بەرەو چەپ",bu:"بەشکردنی خانەکان بە ئەستوونی",bv:"بەشکردنی خانەکان بە ئاسۆیی",bw:"تێکەڵکردنی خانەکان",bx:"نەتوانرا بەستەری وێنەی قەبارە گۆڕاو بەدەست بێت.",by:"دیاریکردنی وێنەی قەبارە گۆڕاو سەرکەوتوو نەبوو",bz:"نەتوانرا وێنە دابنرێت لەم شوێنە.",ca:"دانانی وێنە سەرکەوتوو نەبوو",cb:"گۆڕینی جێگروەی تێکیسی وێنە",cc:"پاشکەوتکردن",cd:"هەڵوەشاندنەوە",ce:"بەستەری مێدیاکە لە خانەکە بلکێنە.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"بەستەری مێدیا",ch:"لابردنی ڕەنگ",ci:"ڕەنگەکانی دۆکومێنت",cj:"وەک خۆی لێ بکەوە",ck:"هەلگەڕاندنەوە",cl:"تووڵامرازی لیستەیی",cm:"سەرنوسەری دەقی بەپیت",cn:"جێگرەوەی تێکست",co:"%0 لە %1",cp:"پێشتر",cq:"دواتر",cr:"ڕەش",cs:"ڕەساسی تاریک",ct:"ڕەساسی",cu:"ڕەساسی ڕووناک",cv:"سپی",cw:"سور",cx:"پرتەقاڵی",cy:"زەرد",cz:"سەوزی ڕووناک",da:"سەوز",db:"شینی دەریایی",dc:"شینی ئاسمانی",dd:"شینی ڕووناک",de:"شین",df:"مۆر",dg:"تێکستی سادە",dh:"تووڵامرازی دەسکاریکەر",di:"بڕگەی زیاتر نیشانبدە",dj:"کردنەوەی لە پەنجەرەیەکی نوێ",dk:"Downloadable",dl:"لابردنی بەستەر",dm:"دەستکاری بەستەر",dn:"کردنەوەی بەستەرەکە لە پەڕەیەکی نوێ",do:"ئەم بەستەرە ناونیشانی نیە",dp:"ناونیشانی بەستەر",dq:"پەراگراف",dr:"سەرنووسەی 1",ds:"سەرنووسەی 2",dt:"سەرنووسەی 3",du:"سەرنووسەی 4",dv:"سەرنووسەی 5",dw:"سەرنووسەی 6",dx:"سەرنوسەری دەقی بەپیت, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['lt']=Object.assign(d['lt']||{},{a:"Negalima įkelti failo:",b:"Image toolbar",c:"Table toolbar",d:"Kursyvas",e:"Perbrauktas",f:"Pabrauktas",g:"Paryškintas",h:"Įterpti vaizdą ar failą",i:"Kodas",j:"Citata",k:"Padidinti atitraukimą",l:"Sumažinti atitraukimą",m:"Pasirinkite antraštę",n:"Antraštė",o:"vaizdų valdiklis",p:"Pilno dydžio vaizdas",q:"Vaizdas šone",r:"Vaizdas kairėje",s:"Vaizdas centre",t:"Vaizdas dešinėje",u:"Įveskite vaizdo antraštę",v:"Įkelti nepavyko",w:"Pridėti nuorodą",x:"Įterpti vaizdą",y:"Numeruotas rąrašas",z:"Sąrašas",aa:"media valdiklis",ab:"Įterpkite media",ac:"URL negali būti tuščias.",ad:"Šis media URL yra nepalaikomas.",ae:"Geltonas žymeklis",af:"Žalias žymeklis",ag:"Rožinis žymeklis",ah:"Mėlynas žymeklis",ai:"Raudonas žymeklis",aj:"Žalias žymeklis",ak:"Panaikinti pažymėjimą",al:"Pažymėti žymekliu",am:"Text highlight toolbar",an:"Šrifto fono spalva",ao:"Įkelima",ap:"Widget toolbar",aq:"Šrifto spalva",ar:"Šrifto šeima",as:"Numatyta",at:"Insert code block",au:"Lygiuoti į kairę",av:"Lygiuoti į dešinę",aw:"Centruoti",ax:"Lygiuoti per visą plotį",ay:"Teksto lygiavimas",az:"Text alignment toolbar",ba:"Šrifto dydis",bb:"Mažytis",bc:"Mažas",bd:"Didelis",be:"Milžiniškas",bf:"Įterpti lentelę",bg:"Antraštės stulpelis",bh:"Įterpti stulpelį kairėje",bi:"Įterpti stulpelį dešinėje",bj:"Ištrinti stulpelį",bk:"Stulpelis",bl:"Antraštės eilutė",bm:"Įterpti eilutę žemiau",bn:"Įterpti eilutę aukščiau",bo:"Ištrinti eilutę",bp:"Eilutė",bq:"Prijungti langelį viršuje",br:"Prijungti langelį dešinėje",bs:"Prijungti langelį apačioje",bt:"Prijungti langelį kairėje",bu:"Padalinti langelį vertikaliai",bv:"Padalinti langelį horizontaliai",bw:"Sujungti langelius",bx:"Nepavyko gauti pakeisto dydžio paveiksliuko URL.",by:"Nepavyko pasirinkti pakeisto vaizdo",bz:"Nepavyko įterpti vaizdo į dabartinę vietą.",ca:"Nepavyko įterpti vaizdo",cb:"Pakeisti vaizdo alternatyvųjį tekstą",cc:"Išsaugoti",cd:"Atšaukti",ce:"Įklijuokite media URL adresą į įvedimo lauką.",cf:"Patarimas: norėdami greičiau įterpti media tiesiog įklijuokite URL į turinį.",cg:"Media URL",ch:"Pašalinti spalvą",ci:"Document colors",cj:"Atgal",ck:"Pirmyn",cl:"Dropdown toolbar",cm:"Raiškiojo teksto redaktorius",cn:"Alternatyvusis tekstas",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Juoda",cs:"Pilkšva",ct:"Pilka",cu:"Šviesiai pilka",cv:"Balta",cw:"Raudona",cx:"Oranžinė",cy:"Geltona",cz:"Šviesiai žalia",da:"Žalia",db:"Aquamarine",dc:"Turkio",dd:"Šviesiai mėlyna",de:"Mėlyna",df:"Violetinė",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Pašalinti nuorodą",dm:"Keisti nuorodą",dn:"Atidaryti nuorodą naujame skirtuke",do:"Ši nuorda neturi URL",dp:"Nuorodos URL",dq:"Paragrafas",dr:"Antraštė 1",ds:"Antraštė 2",dt:"Antraštė 3",du:"Antraštė 4",dv:"Antraštė 5",dw:"Antraštė 6",dx:"Raiškiojo teksto redaktorius, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['lv']=Object.assign(d['lv']||{},{a:"Nevar augšupielādēt failu:",b:"Attēlu rīkjosla",c:"Tabulas rīkjosla",d:"Kursīvs",e:"Nosvītrots",f:"Pasvītrots",g:"Trekns",h:"Ievietot attēlu vai failu",i:"Kods",j:"Citāts",k:"Palielināt atkāpi",l:"Samazināt atkāpi",m:"Izvēlēties virsrakstu",n:"Virsraksts",o:"attēla sīkrīks",p:"Pilna izmēra attēls",q:"Sānā novietots attēls",r:"Pa kreisi līdzināts attēls",s:"Centrēts attēls",t:"Pa labi līdzināts attēls",u:"Ievadiet attēla parakstu",v:"Augšupielāde neizdevusies",w:"Saite",x:"Ievietot attēlu",y:"Numurēts Saraksts",z:"Nenumurēts Saraksts",aa:"medija sīkrīks",ab:"Ievietot mediju",ac:"URL ir jābūt ievadītam.",ad:"Šis medija URL netiek atbalstīts.",ae:"Dzeltens marķieris",af:"Zaļš marķieris",ag:"Rozā marķieris",ah:"Zils marķieris",ai:"Sarkana pildspalva",aj:"Zaļa pildspalva",ak:"Noņemt izcēlumu",al:"Izcelt",am:"Teksta izcēluma rīkjosla",an:"Fonta fona krāsa",ao:"Notiek augšupielāde",ap:"Sīkrīku rīkjosla",aq:"Fonta krāsa",ar:"Fonts",as:"Noklusējuma",at:"Ievietot koda bloku",au:"Pa kreisi",av:"Pa labi",aw:"Centrēt",ax:"Izlīdzināt abas malas",ay:"Teksta izlīdzināšana",az:"Teksta līdzināšanas rīkjosla",ba:"Fonta Lielums",bb:"Ļoti mazs",bc:"Mazs",bd:"Liels",be:"Milzīgs",bf:"Ievietot tabulu",bg:"Šī kolonna ir galvene",bh:"Ievietot kolonnu pa kreisi",bi:"Ievietot kolonnu pa labi",bj:"Dzēst kolonnu",bk:"Kolonna",bl:"Šī rinda ir galvene",bm:"Ievietot rindu zem",bn:"Ievietot rindu virs",bo:"Dzēst rindu",bp:"Rinda",bq:"Apvienot šūnas uz augšu",br:"Apvienot šūnas pa labi",bs:"Apvienot šūnas uz leju",bt:"Apvienot šūnas pa kreisi",bu:"Atdalīt šūnu vertikāli",bv:"Atdalīt šūnu horizontāli",bw:"Apvienot šūnas",bx:"Nevarēja iegūt mērogotā attēla adresi.",by:"Nevarēja izvēlēties mērogoto attēlu.",bz:"Pašreizējā pozīcijā attēlu nevarēja ievietot.",ca:"Nevarēja ievietot attēlu",cb:"Mainīt attēla alternatīvo tekstu",cc:"Saglabāt",cd:"Atcelt",ce:"Ielīmējiet medija URL teksta laukā.",cf:"Padoms: Ielīmējiet adresi saturā, lai iegultu",cg:"Medija URL",ch:"Noņemt krāsu",ci:"Krāsas dokumentā",cj:"Atsaukt",ck:"Uz priekšu",cl:"Papildus izvēlnes rīkjosla",cm:"Bagātinātais Teksta Redaktors",cn:"Alternatīvais teksts",co:"%0 no %1",cp:"Iepriekšējā",cq:"Nākamā",cr:"Melns",cs:"Blāvi pelēks",ct:"Pelēks",cu:"Gaiši pelēks",cv:"Balts",cw:"Sarkans",cx:"Oranžs",cy:"Dzeltens",cz:"Gaiši zaļš",da:"Zaļš",db:"Akvamarīns",dc:"Tirkīza",dd:"Gaiši zils",de:"Zils",df:"Violets",dg:"Vienkāršs teksts",dh:"Redaktora rīkjosla",di:"Parādīt vairāk vienumus",dj:"Atvērt jaunā cilnē",dk:"Lejupielādējams",dl:"Noņemt Saiti",dm:"Labot Saiti",dn:"Atvērt saiti jaunā cilnē",do:"Saitei nav norādīts URL",dp:"Saites URL",dq:"Pagrāfs",dr:"Virsraksts 1",ds:"Virsraksts 2",dt:"Virsraksts 3",du:"Virsraksts 4",dv:"Virsraksts 5",dw:"Virsraksts 6",dx:"Bagātinātais Teksta Redaktors, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['ms']=Object.assign(d['ms']||{},{a:"Gagal memuat naik fail",b:"Image toolbar",c:"Table toolbar",d:"Italic",e:"Strikethrough",f:"Underline",g:"Bold",h:"Insert image or file",i:"Code",j:"Block quote",k:"Increase indent",l:"Decrease indent",m:"Choose heading",n:"Heading",o:"image widget",p:"Full size image",q:"Side image",r:"Left aligned image",s:"Centered image",t:"Right aligned image",u:"Enter image caption",v:"Upload failed",w:"Link",x:"Insert image",y:"Numbered List",z:"Bulleted List",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Yellow marker",af:"Green marker",ag:"Pink marker",ah:"Blue marker",ai:"Red pen",aj:"Green pen",ak:"Remove highlight",al:"Highlight",am:"Text highlight toolbar",an:"Font Background Color",ao:"Upload in progress",ap:"Widget toolbar",aq:"Font Color",ar:"Font Family",as:"Default",at:"Insert code block",au:"Align left",av:"Align right",aw:"Align center",ax:"Justify",ay:"Text alignment",az:"Text alignment toolbar",ba:"Font Size",bb:"Tiny",bc:"Small",bd:"Big",be:"Huge",bf:"Insert table",bg:"Header column",bh:"Insert column left",bi:"Insert column right",bj:"Delete column",bk:"Column",bl:"Header row",bm:"Insert row below",bn:"Insert row above",bo:"Delete row",bp:"Row",bq:"Merge cell up",br:"Merge cell right",bs:"Merge cell down",bt:"Merge cell left",bu:"Split cell vertically",bv:"Split cell horizontally",bw:"Merge cells",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Change image text alternative",cc:"Save",cd:"Cancel",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Undo",ck:"Redo",cl:"Dropdown toolbar",cm:"Rich Text Editor",cn:"Text alternative",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Unlink",dm:"Edit link",dn:"Open link in new tab",do:"This link has no URL",dp:"Link URL",dq:"Paragraph",dr:"Heading 1",ds:"Heading 2",dt:"Heading 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

View File

@@ -0,0 +1 @@
(function(d){d['nb']=Object.assign(d['nb']||{},{a:"Kan ikke laste opp fil:",b:"Image toolbar",c:"Table toolbar",d:"Kursiv",e:"Gjennomstreking",f:"Understreking",g:"Fet",h:"Insert image or file",i:"Kode",j:"Blokksitat",k:"Increase indent",l:"Decrease indent",m:"Velg overskrift",n:"Overskrift",o:"Bilde-widget",p:"Bilde i full størrelse",q:"Sidebilde",r:"Venstrejustert bilde",s:"Midtstilt bilde",t:"Høyrejustert bilde",u:"Skriv inn bildetekst",v:"Opplasting feilet",w:"Lenke",x:"Sett inn bilde",y:"Nummerert liste",z:"Punktmerket liste",aa:"media widget",ab:"Insert media",ac:"The URL must not be empty.",ad:"This media URL is not supported.",ae:"Gul uthevingsfarge",af:"Grønn uthevingsfarge",ag:"Rosa uthevingsfarge",ah:"Blå uthevingsfarge",ai:"Rød penn",aj:"Grønn penn",ak:"Fjern uthevingsfarge",al:"Utheving",am:"Text highlight toolbar",an:"Font Background Color",ao:"Opplasting pågår",ap:"Widget toolbar",aq:"Font Color",ar:"Skrifttype",as:"Standard",at:"Insert code block",au:"Venstrejuster",av:"Høyrejuster",aw:"Midstill",ax:"Blokkjuster",ay:"Tekstjustering",az:"Text alignment toolbar",ba:"Skriftstørrelse",bb:"Veldig liten",bc:"Liten",bd:"Stor",be:"Veldig stor",bf:"Sett inn tabell",bg:"Overskriftkolonne",bh:"Insert column left",bi:"Insert column right",bj:"Slett kolonne",bk:"Kolonne",bl:"Overskriftrad",bm:"Sett inn rad under",bn:"Sett inn rad over",bo:"Slett rad",bp:"Rad",bq:"Slå sammen celle opp",br:"Slå sammen celle til høyre",bs:"Slå sammen celle ned",bt:"Slå sammen celle til venstre",bu:"Del celle vertikalt",bv:"Del celle horisontalt",bw:"Slå sammen celler",bx:"Could not obtain resized image URL.",by:"Selecting resized image failed",bz:"Could not insert image at the current position.",ca:"Inserting image failed",cb:"Endre tekstalternativ for bilde",cc:"Lagre",cd:"Avbryt",ce:"Paste the media URL in the input.",cf:"Tip: Paste the URL into the content to embed faster.",cg:"Media URL",ch:"Remove color",ci:"Document colors",cj:"Angre",ck:"Gjør om",cl:"Dropdown toolbar",cm:"Rikteksteditor",cn:"Tekstalternativ for bilde",co:"%0 of %1",cp:"Previous",cq:"Next",cr:"Black",cs:"Dim grey",ct:"Grey",cu:"Light grey",cv:"White",cw:"Red",cx:"Orange",cy:"Yellow",cz:"Light green",da:"Green",db:"Aquamarine",dc:"Turquoise",dd:"Light blue",de:"Blue",df:"Purple",dg:"Plain text",dh:"Editor toolbar",di:"Show more items",dj:"Open in a new tab",dk:"Downloadable",dl:"Fjern lenke",dm:"Rediger lenke",dn:"Åpne lenke i ny fane",do:"Denne lenken har ingen URL",dp:"URL for lenke",dq:"Avsnitt",dr:"Overskrift 1",ds:"Overskrift 2",dt:"Overskrift 3",du:"Heading 4",dv:"Heading 5",dw:"Heading 6",dx:"Rikteksteditor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

Some files were not shown because too many files have changed in this diff Show More