@themarioga/grid-editor 8.3.0 → 8.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +17 -1
- package/dist/grideditor.bundle.min.js +3 -3
- package/dist/grideditor.css +49 -0
- package/dist/grideditor.d.ts +4 -0
- package/dist/grideditor.esm.js +200 -8
- package/dist/grideditor.js +200 -8
- package/dist/grideditor.min.css +1 -1
- package/dist/grideditor.min.css.map +1 -1
- package/dist/grideditor.min.js +2 -2
- package/dist/grideditor.min.js.map +3 -3
- package/dist/locales/grideditor.es.esm.js +3 -0
- package/dist/locales/grideditor.es.js +3 -0
- package/dist/locales/grideditor.es.min.js +1 -1
- package/dist/locales/grideditor.es.min.js.map +2 -2
- package/dist/plugins/grideditor.ckeditor.esm.js +1 -0
- package/dist/plugins/grideditor.ckeditor.js +1 -0
- package/dist/plugins/grideditor.ckeditor.min.js +1 -1
- package/dist/plugins/grideditor.ckeditor.min.js.map +2 -2
- package/dist/plugins/grideditor.sections.esm.js +1 -0
- package/dist/plugins/grideditor.sections.js +1 -0
- package/dist/plugins/grideditor.sections.min.js +1 -1
- package/dist/plugins/grideditor.sections.min.js.map +2 -2
- package/dist/plugins/grideditor.summernote.esm.js +1 -0
- package/dist/plugins/grideditor.summernote.js +1 -0
- package/dist/plugins/grideditor.summernote.min.js +1 -1
- package/dist/plugins/grideditor.summernote.min.js.map +2 -2
- package/dist/plugins/grideditor.tinymce.esm.js +1 -0
- package/dist/plugins/grideditor.tinymce.js +1 -0
- package/dist/plugins/grideditor.tinymce.min.js +1 -1
- package/dist/plugins/grideditor.tinymce.min.js.map +2 -2
- package/docs/locale-keys.md +4 -1
- package/docs/plugins.md +22 -0
- package/package.json +1 -1
- package/src/js/grideditor.js +246 -8
- package/src/js/locales/grideditor.es.js +3 -0
- package/src/js/plugins/grideditor.sections.js +1 -0
- package/src/js/text/grideditor.text.js +1 -0
- package/src/less/grideditor.less +58 -0
- package/types/grideditor.d.ts +4 -0
|
@@ -35,6 +35,9 @@ GridEditor.locales.es = {
|
|
|
35
35
|
"tool.edit_source": "Editar el c\xF3digo fuente",
|
|
36
36
|
"tool.preview": "Vista previa",
|
|
37
37
|
"tool.more": "M\xE1s",
|
|
38
|
+
"group.rows": "Filas",
|
|
39
|
+
"group.content": "Contenido",
|
|
40
|
+
"group.select": "A\xF1adir",
|
|
38
41
|
"panel.title": "Ajustes: {kind}",
|
|
39
42
|
"panel.close": "Cerrar",
|
|
40
43
|
"panel.done": "Hecho",
|
|
@@ -41,6 +41,9 @@
|
|
|
41
41
|
"tool.edit_source": "Editar el c\xF3digo fuente",
|
|
42
42
|
"tool.preview": "Vista previa",
|
|
43
43
|
"tool.more": "M\xE1s",
|
|
44
|
+
"group.rows": "Filas",
|
|
45
|
+
"group.content": "Contenido",
|
|
46
|
+
"group.select": "A\xF1adir",
|
|
44
47
|
"panel.title": "Ajustes: {kind}",
|
|
45
48
|
"panel.close": "Cerrar",
|
|
46
49
|
"panel.done": "Hecho",
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(May\xFAs para el m\xEDnimo)`,"tool.column_wider":`Ensanchar columna
|
|
4
4
|
(May\xFAs para el m\xE1ximo)`,"tool.indent_decrease":`Reducir sangr\xEDa
|
|
5
5
|
(May\xFAs para quitarla)`,"tool.indent_increase":`Aumentar sangr\xEDa
|
|
6
|
-
(May\xFAs para el m\xE1ximo)`,"tool.edit_source":"Editar el c\xF3digo fuente","tool.preview":"Vista previa","tool.more":"M\xE1s","panel.title":"Ajustes: {kind}","panel.close":"Cerrar","panel.done":"Hecho","panel.id":"Id","panel.classes":"Clases","panel.section_general":"Id y clases","panel.editor":"Editor","panel.kind_row":"Fila","panel.kind_column":"Columna","panel.kind_text":"Texto","panel.kind_element":"Elemento","panel.kind_section":"Secci\xF3n","panel.kind_tab":"Pesta\xF1a","panel.kind_accordion_item":"Elemento de acorde\xF3n","tool.id_placeholder":"id","tool.id_title":"Asignar un identificador \xFAnico","tool.classes_placeholder":"clases","tool.classes_title":"Clases css, separadas por espacios","tool.toggle_class":'Aplicar o quitar el estilo "{label}"',"row.add":"A\xF1adir fila {layout}","row.add_row_cols":"A\xF1adir una fila de {columns} columnas, {counts} por fila","container.add_tabs":"Pesta\xF1as","container.add_tab":"A\xF1adir pesta\xF1a","container.tab_label":"Pesta\xF1a {number}","container.tabs_section":"Pesta\xF1as","container.tabs_style":"Estilo","container.tabs_style_tabs":"Pesta\xF1as","container.tabs_style_pills":"Pills","container.tabs_style_underline":"Subrayado","container.tabs_width":"Ancho","container.tabs_width_natural":"Natural","container.tabs_width_fill":"Rellenar","container.tabs_width_justified":"Justificado","container.tabs_align":"Alineaci\xF3n","container.tabs_align_start":"Inicio","container.tabs_align_center":"Centro","container.tabs_align_end":"Fin","container.tabs_layout":"Disposici\xF3n","container.tabs_layout_horizontal":"Horizontal","container.tabs_layout_vertical":"Vertical","container.tabs_layout_vertical_from":"Vertical desde {breakpoint}","container.add_accordion":"Acorde\xF3n","container.add_accordion_item":"A\xF1adir apartado","container.accordion_label":"Apartado {number}","container.add_popup":"Ventana emergente","container.popup_title":"T\xEDtulo","container.popup_trigger":"Abrir","container.add_card":"Tarjeta","container.card_title":"T\xEDtulo de la tarjeta","container.card_footer":"Pie de la tarjeta","confirm.title":"Confirmar","confirm.ok":"Borrar","confirm.cancel":"Cancelar","confirm.delete_row":"\xBFSeguro que quieres borrar esta fila?","confirm.delete_column":"\xBFSeguro que quieres borrar esta columna?","confirm.delete_text":"\xBFSeguro que quieres borrar este texto?","confirm.delete_plain":"\xBFSeguro que quieres borrar este contenido?","confirm.delete_element":"\xBFSeguro que quieres borrar este elemento?","confirm.delete_container":"\xBFSeguro que quieres borrar este contenedor y todo su contenido?","confirm.delete_tab":"\xBFSeguro que quieres borrar esta pesta\xF1a y todo su contenido?","confirm.delete_accordion_item":"\xBFSeguro que quieres borrar este apartado y todo su contenido?","view.all":"Todos los tama\xF1os","view.xs":"M\xF3vil","view.sm":"Tablet","view.md":"Escritorio peque\xF1o","view.lg":"Escritorio","view.xl":"Escritorio grande","view.xxl":"Pantalla panor\xE1mica","utility.section":"Responsive: {view}","utility.col_width":"Ancho","utility.col_equal":"Igual","utility.col_auto":"Auto","section.add":"Secci\xF3n","section.width":"Ancho","section.fixed":"Fijo","section.fluid":"Ancho completo","section.from":"Fijo desde {breakpoint}","tool.add_row_to_section":"A\xF1adir fila","tool.delete_section":"Quitar secci\xF3n","confirm.delete_section":"\xBFSeguro que quieres borrar esta secci\xF3n y todo su contenido?","tool.copy":"Copiar","tool.paste":"Pegar","clipboard.paste_row":"Pegar fila","clipboard.paste_section":"Pegar secci\xF3n","utility.col_from_row":"De la fila: {count}","utility.row_cols":"Columnas por fila","badge.row_cols":"{count} por fila","badge.row_cols_auto":"Tan anchas como su contenido","utility.default":"Por defecto","utility.inherit":"Hereda: {value} (de {breakpoint})","utility.varies":"Cambia en {breakpoints}; elegir aqu\xED lo sustituye","utility.display":"Display","utility.visibility_hidden":"Oculto","tool.hide_in_view":"Ocultar en esta vista","tool.show_in_view":"Mostrar en esta vista","badge.hidden_in":"Oculto en {breakpoints}","utility.order":"Orden","utility.order_first":"Primero","utility.order_last":"\xDAltimo","tool.order_earlier":"Antes en esta vista","tool.order_later":"Despu\xE9s en esta vista","badge.order":"Orden: {value}","utility.justify_content":"Justificar columnas","utility.align_items":"Alinear columnas","utility.align_content":"Alinear l\xEDneas","utility.flex_direction":"Direcci\xF3n","utility.flex_wrap":"Salto de l\xEDnea","utility.gap":"Separaci\xF3n","utility.row_gap":"Separaci\xF3n entre filas","utility.column_gap":"Separaci\xF3n entre columnas","utility.flex_fill":"Rellenar","utility.flex_grow":"Crecer","utility.flex_shrink":"Encoger","utility.sticky":"Fijo al desplazar","utility.align_self":"Alinearse","utility.gutters":"Espaciado entre columnas","utility.gutters_x":"Espaciado horizontal","utility.gutters_y":"Espaciado vertical","utility.padding":"Relleno","utility.margin":"Margen","utility.side_all":"Todos los lados","utility.side_x":"Izquierda y derecha","utility.side_y":"Arriba y abajo","utility.side_t":"Arriba","utility.side_b":"Abajo","utility.side_s":"Inicio","utility.side_e":"Fin","utility.text_align":"Alineaci\xF3n del texto","utility.text_start":"Inicio","utility.text_center":"Centro","utility.text_end":"Fin","utility.float":"Flotar","utility.float_start":"Inicio","utility.float_end":"Fin","utility.float_none":"Ninguno","utility.spacing_gutter":"El relleno lateral de una columna es su espaciado: cambiarlo cambia el espacio entre columnas","inline_style.section_title":"Estilo","inline_style.dialog_title":"Estilo: {kind}","inline_style.section_size":"Tama\xF1o","inline_style.section_spacing":"Espaciado","inline_style.section_border":"Borde","inline_style.section_background":"Fondo","inline_style.section_text":"Texto","inline_style.section_typography":"Tipograf\xEDa","inline_style.section_display":"Visualizaci\xF3n","inline_style.section_flex":"Flex","inline_style.section_position":"Posici\xF3n","inline_style.section_custom":"CSS libre","inline_style.all_sizes":"Se aplica a todos los tama\xF1os","inline_style.overridden":"La clase {class} tiene prioridad sobre este valor","inline_style.invalid":"Esta propiedad no acepta ese valor","inline_style.catalog":"Clases de Bootstrap","inline_style.shadow_x":"X","inline_style.shadow_y":"Y","inline_style.shadow_blur":"Desenfoque","inline_style.shadow_spread":"Extensi\xF3n","inline_style.shadow_color":"Color","inline_style.shadow_inset":"Interior","inline_style.shadow_text_mode":"Editar como texto","inline_style.shadow_builder_mode":"Editar con el constructor","inline_style.prop_width":"Ancho","inline_style.prop_height":"Alto","inline_style.prop_min_width":"Ancho m\xEDnimo","inline_style.prop_min_height":"Alto m\xEDnimo","inline_style.prop_max_width":"Ancho m\xE1ximo","inline_style.prop_max_height":"Alto m\xE1ximo","inline_style.prop_margin_top":"Margen superior","inline_style.prop_margin_right":"Margen derecho","inline_style.prop_margin_bottom":"Margen inferior","inline_style.prop_margin_left":"Margen izquierdo","inline_style.prop_padding_top":"Relleno superior","inline_style.prop_padding_right":"Relleno derecho","inline_style.prop_padding_bottom":"Relleno inferior","inline_style.prop_padding_left":"Relleno izquierdo","inline_style.prop_border_width":"Grosor del borde","inline_style.prop_border_style":"Estilo del borde","inline_style.prop_border_color":"Color del borde","inline_style.prop_border_radius":"Radio del borde","inline_style.prop_box_shadow":"Sombra","inline_style.prop_background_color":"Color de fondo","inline_style.prop_background_image":"Imagen de fondo","inline_style.prop_background_size":"Tama\xF1o del fondo","inline_style.prop_background_position":"Posici\xF3n del fondo","inline_style.prop_background_repeat":"Repetici\xF3n del fondo","inline_style.prop_color":"Color","inline_style.prop_font_size":"Tama\xF1o de letra","inline_style.prop_text_align":"Alineaci\xF3n","inline_style.prop_text_shadow":"Sombra del texto","inline_style.prop_font_family":"Fuente","inline_style.prop_font_weight":"Grosor de letra","inline_style.prop_font_style":"Estilo de letra","inline_style.prop_line_height":"Interlineado","inline_style.prop_letter_spacing":"Espaciado entre letras","inline_style.prop_text_transform":"May\xFAsculas","inline_style.prop_text_decoration":"Decoraci\xF3n","inline_style.prop_display":"Display","inline_style.prop_opacity":"Opacidad","inline_style.prop_overflow":"Desbordamiento","inline_style.prop_visibility":"Visibilidad","inline_style.prop_position":"Posici\xF3n","inline_style.prop_top":"Arriba","inline_style.prop_right":"Derecha","inline_style.prop_bottom":"Abajo","inline_style.prop_left":"Izquierda","inline_style.prop_z_index":"Z-index","error.sortable_missing":"\xA1SortableJS no est\xE1 disponible! Aseg\xFArate de haber cargado el archivo js de Sortable; sin \xE9l no se puede arrastrar.","warning.already_editing":"Este elemento ya tiene un editor: se devuelve ese, con las opciones con las que se cre\xF3.","warning.destroyed":"Se ha llamado a {method}() en un editor destruido, y no hace nada.","warning.duplicate_build":"grideditor.js se ha cargado dos veces: se mantiene el primer GridEditor.","warning.adapter_no_jquery":"grideditor.jquery.js necesita jQuery 4 y la p\xE1gina no tiene jQuery: la API de jQuery no est\xE1 disponible.","error.tinymce_missing":"\xA1tinyMCE no est\xE1 disponible! Aseg\xFArate de haber cargado el archivo js de tinyMCE.","error.ckeditor_missing":"\xA1CKEditor 5 no est\xE1 disponible! Aseg\xFArate de haber cargado su archivo ckeditor5.umd.js.","error.ckeditor_start":"CKEditor no ha podido arrancar: {message}","warning.ckeditor_plugin":"CKEditor no tiene ning\xFAn plugin llamado {name}, as\xED que se deja fuera.","error.codemirror_missing":"\xA1CodeMirror no est\xE1 disponible! Aseg\xFArate de haber cargado el archivo js de CodeMirror; sin \xE9l el c\xF3digo se edita en un textarea normal.","error.summernote_missing":"\xA1Summernote no est\xE1 disponible! Aseg\xFArate de haber cargado jQuery y el archivo js de Summernote."};})();
|
|
6
|
+
(May\xFAs para el m\xE1ximo)`,"tool.edit_source":"Editar el c\xF3digo fuente","tool.preview":"Vista previa","tool.more":"M\xE1s","group.rows":"Filas","group.content":"Contenido","group.select":"A\xF1adir","panel.title":"Ajustes: {kind}","panel.close":"Cerrar","panel.done":"Hecho","panel.id":"Id","panel.classes":"Clases","panel.section_general":"Id y clases","panel.editor":"Editor","panel.kind_row":"Fila","panel.kind_column":"Columna","panel.kind_text":"Texto","panel.kind_element":"Elemento","panel.kind_section":"Secci\xF3n","panel.kind_tab":"Pesta\xF1a","panel.kind_accordion_item":"Elemento de acorde\xF3n","tool.id_placeholder":"id","tool.id_title":"Asignar un identificador \xFAnico","tool.classes_placeholder":"clases","tool.classes_title":"Clases css, separadas por espacios","tool.toggle_class":'Aplicar o quitar el estilo "{label}"',"row.add":"A\xF1adir fila {layout}","row.add_row_cols":"A\xF1adir una fila de {columns} columnas, {counts} por fila","container.add_tabs":"Pesta\xF1as","container.add_tab":"A\xF1adir pesta\xF1a","container.tab_label":"Pesta\xF1a {number}","container.tabs_section":"Pesta\xF1as","container.tabs_style":"Estilo","container.tabs_style_tabs":"Pesta\xF1as","container.tabs_style_pills":"Pills","container.tabs_style_underline":"Subrayado","container.tabs_width":"Ancho","container.tabs_width_natural":"Natural","container.tabs_width_fill":"Rellenar","container.tabs_width_justified":"Justificado","container.tabs_align":"Alineaci\xF3n","container.tabs_align_start":"Inicio","container.tabs_align_center":"Centro","container.tabs_align_end":"Fin","container.tabs_layout":"Disposici\xF3n","container.tabs_layout_horizontal":"Horizontal","container.tabs_layout_vertical":"Vertical","container.tabs_layout_vertical_from":"Vertical desde {breakpoint}","container.add_accordion":"Acorde\xF3n","container.add_accordion_item":"A\xF1adir apartado","container.accordion_label":"Apartado {number}","container.add_popup":"Ventana emergente","container.popup_title":"T\xEDtulo","container.popup_trigger":"Abrir","container.add_card":"Tarjeta","container.card_title":"T\xEDtulo de la tarjeta","container.card_footer":"Pie de la tarjeta","confirm.title":"Confirmar","confirm.ok":"Borrar","confirm.cancel":"Cancelar","confirm.delete_row":"\xBFSeguro que quieres borrar esta fila?","confirm.delete_column":"\xBFSeguro que quieres borrar esta columna?","confirm.delete_text":"\xBFSeguro que quieres borrar este texto?","confirm.delete_plain":"\xBFSeguro que quieres borrar este contenido?","confirm.delete_element":"\xBFSeguro que quieres borrar este elemento?","confirm.delete_container":"\xBFSeguro que quieres borrar este contenedor y todo su contenido?","confirm.delete_tab":"\xBFSeguro que quieres borrar esta pesta\xF1a y todo su contenido?","confirm.delete_accordion_item":"\xBFSeguro que quieres borrar este apartado y todo su contenido?","view.all":"Todos los tama\xF1os","view.xs":"M\xF3vil","view.sm":"Tablet","view.md":"Escritorio peque\xF1o","view.lg":"Escritorio","view.xl":"Escritorio grande","view.xxl":"Pantalla panor\xE1mica","utility.section":"Responsive: {view}","utility.col_width":"Ancho","utility.col_equal":"Igual","utility.col_auto":"Auto","section.add":"Secci\xF3n","section.width":"Ancho","section.fixed":"Fijo","section.fluid":"Ancho completo","section.from":"Fijo desde {breakpoint}","tool.add_row_to_section":"A\xF1adir fila","tool.delete_section":"Quitar secci\xF3n","confirm.delete_section":"\xBFSeguro que quieres borrar esta secci\xF3n y todo su contenido?","tool.copy":"Copiar","tool.paste":"Pegar","clipboard.paste_row":"Pegar fila","clipboard.paste_section":"Pegar secci\xF3n","utility.col_from_row":"De la fila: {count}","utility.row_cols":"Columnas por fila","badge.row_cols":"{count} por fila","badge.row_cols_auto":"Tan anchas como su contenido","utility.default":"Por defecto","utility.inherit":"Hereda: {value} (de {breakpoint})","utility.varies":"Cambia en {breakpoints}; elegir aqu\xED lo sustituye","utility.display":"Display","utility.visibility_hidden":"Oculto","tool.hide_in_view":"Ocultar en esta vista","tool.show_in_view":"Mostrar en esta vista","badge.hidden_in":"Oculto en {breakpoints}","utility.order":"Orden","utility.order_first":"Primero","utility.order_last":"\xDAltimo","tool.order_earlier":"Antes en esta vista","tool.order_later":"Despu\xE9s en esta vista","badge.order":"Orden: {value}","utility.justify_content":"Justificar columnas","utility.align_items":"Alinear columnas","utility.align_content":"Alinear l\xEDneas","utility.flex_direction":"Direcci\xF3n","utility.flex_wrap":"Salto de l\xEDnea","utility.gap":"Separaci\xF3n","utility.row_gap":"Separaci\xF3n entre filas","utility.column_gap":"Separaci\xF3n entre columnas","utility.flex_fill":"Rellenar","utility.flex_grow":"Crecer","utility.flex_shrink":"Encoger","utility.sticky":"Fijo al desplazar","utility.align_self":"Alinearse","utility.gutters":"Espaciado entre columnas","utility.gutters_x":"Espaciado horizontal","utility.gutters_y":"Espaciado vertical","utility.padding":"Relleno","utility.margin":"Margen","utility.side_all":"Todos los lados","utility.side_x":"Izquierda y derecha","utility.side_y":"Arriba y abajo","utility.side_t":"Arriba","utility.side_b":"Abajo","utility.side_s":"Inicio","utility.side_e":"Fin","utility.text_align":"Alineaci\xF3n del texto","utility.text_start":"Inicio","utility.text_center":"Centro","utility.text_end":"Fin","utility.float":"Flotar","utility.float_start":"Inicio","utility.float_end":"Fin","utility.float_none":"Ninguno","utility.spacing_gutter":"El relleno lateral de una columna es su espaciado: cambiarlo cambia el espacio entre columnas","inline_style.section_title":"Estilo","inline_style.dialog_title":"Estilo: {kind}","inline_style.section_size":"Tama\xF1o","inline_style.section_spacing":"Espaciado","inline_style.section_border":"Borde","inline_style.section_background":"Fondo","inline_style.section_text":"Texto","inline_style.section_typography":"Tipograf\xEDa","inline_style.section_display":"Visualizaci\xF3n","inline_style.section_flex":"Flex","inline_style.section_position":"Posici\xF3n","inline_style.section_custom":"CSS libre","inline_style.all_sizes":"Se aplica a todos los tama\xF1os","inline_style.overridden":"La clase {class} tiene prioridad sobre este valor","inline_style.invalid":"Esta propiedad no acepta ese valor","inline_style.catalog":"Clases de Bootstrap","inline_style.shadow_x":"X","inline_style.shadow_y":"Y","inline_style.shadow_blur":"Desenfoque","inline_style.shadow_spread":"Extensi\xF3n","inline_style.shadow_color":"Color","inline_style.shadow_inset":"Interior","inline_style.shadow_text_mode":"Editar como texto","inline_style.shadow_builder_mode":"Editar con el constructor","inline_style.prop_width":"Ancho","inline_style.prop_height":"Alto","inline_style.prop_min_width":"Ancho m\xEDnimo","inline_style.prop_min_height":"Alto m\xEDnimo","inline_style.prop_max_width":"Ancho m\xE1ximo","inline_style.prop_max_height":"Alto m\xE1ximo","inline_style.prop_margin_top":"Margen superior","inline_style.prop_margin_right":"Margen derecho","inline_style.prop_margin_bottom":"Margen inferior","inline_style.prop_margin_left":"Margen izquierdo","inline_style.prop_padding_top":"Relleno superior","inline_style.prop_padding_right":"Relleno derecho","inline_style.prop_padding_bottom":"Relleno inferior","inline_style.prop_padding_left":"Relleno izquierdo","inline_style.prop_border_width":"Grosor del borde","inline_style.prop_border_style":"Estilo del borde","inline_style.prop_border_color":"Color del borde","inline_style.prop_border_radius":"Radio del borde","inline_style.prop_box_shadow":"Sombra","inline_style.prop_background_color":"Color de fondo","inline_style.prop_background_image":"Imagen de fondo","inline_style.prop_background_size":"Tama\xF1o del fondo","inline_style.prop_background_position":"Posici\xF3n del fondo","inline_style.prop_background_repeat":"Repetici\xF3n del fondo","inline_style.prop_color":"Color","inline_style.prop_font_size":"Tama\xF1o de letra","inline_style.prop_text_align":"Alineaci\xF3n","inline_style.prop_text_shadow":"Sombra del texto","inline_style.prop_font_family":"Fuente","inline_style.prop_font_weight":"Grosor de letra","inline_style.prop_font_style":"Estilo de letra","inline_style.prop_line_height":"Interlineado","inline_style.prop_letter_spacing":"Espaciado entre letras","inline_style.prop_text_transform":"May\xFAsculas","inline_style.prop_text_decoration":"Decoraci\xF3n","inline_style.prop_display":"Display","inline_style.prop_opacity":"Opacidad","inline_style.prop_overflow":"Desbordamiento","inline_style.prop_visibility":"Visibilidad","inline_style.prop_position":"Posici\xF3n","inline_style.prop_top":"Arriba","inline_style.prop_right":"Derecha","inline_style.prop_bottom":"Abajo","inline_style.prop_left":"Izquierda","inline_style.prop_z_index":"Z-index","error.sortable_missing":"\xA1SortableJS no est\xE1 disponible! Aseg\xFArate de haber cargado el archivo js de Sortable; sin \xE9l no se puede arrastrar.","warning.already_editing":"Este elemento ya tiene un editor: se devuelve ese, con las opciones con las que se cre\xF3.","warning.destroyed":"Se ha llamado a {method}() en un editor destruido, y no hace nada.","warning.duplicate_build":"grideditor.js se ha cargado dos veces: se mantiene el primer GridEditor.","warning.adapter_no_jquery":"grideditor.jquery.js necesita jQuery 4 y la p\xE1gina no tiene jQuery: la API de jQuery no est\xE1 disponible.","error.tinymce_missing":"\xA1tinyMCE no est\xE1 disponible! Aseg\xFArate de haber cargado el archivo js de tinyMCE.","error.ckeditor_missing":"\xA1CKEditor 5 no est\xE1 disponible! Aseg\xFArate de haber cargado su archivo ckeditor5.umd.js.","error.ckeditor_start":"CKEditor no ha podido arrancar: {message}","warning.ckeditor_plugin":"CKEditor no tiene ning\xFAn plugin llamado {name}, as\xED que se deja fuera.","error.codemirror_missing":"\xA1CodeMirror no est\xE1 disponible! Aseg\xFArate de haber cargado el archivo js de CodeMirror; sin \xE9l el c\xF3digo se edita en un textarea normal.","error.summernote_missing":"\xA1Summernote no est\xE1 disponible! Aseg\xFArate de haber cargado jQuery y el archivo js de Summernote."};})();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/js/register.js", "../../src/js/locales/grideditor.es.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * What a plugin's or a locale's classic script imports in place of the\n * editor: the GridEditor the page already loaded.\n *\n * The build points `import { GridEditor } from '../grideditor.js'` here for\n * the classic scripts, so each registers on the editor the page has rather\n * than bringing its own. Loaded before the editor there is nothing to\n * register on, and saying so is better than a TypeError three calls later.\n */\nvar GridEditor = window.GridEditor;\n\nif (!GridEditor || typeof GridEditor.get !== 'function') {\n throw new Error('grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, ' +\n 'its locales and grideditor.jquery.js');\n}\n\nexport { GridEditor };\nexport default GridEditor;\n", "/**\n * Spanish strings for grid-editor.\n *\n * Load after the editor and select with `locale: 'es'`:\n *\n * <script src=\"dist/grideditor.min.js\"></script>\n * <script src=\"dist/locales/grideditor.es.js\"></script>\n * <script>new GridEditor('#myGrid', { locale: 'es' });</script>\n *\n * or, as a module, `import '@themarioga/grid-editor/locales/es'`.\n *\n * This is one of the two locales grid-editor ships, so it is held to complete\n * coverage of `GridEditor.locales.en`: test/locales.js fails when a key\n * is missing. Add the Spanish string in the same change that adds the English\n * one, and keep the wording short enough to fit the tooltip or the dropdown\n * item it appears in.\n */\nimport { GridEditor } from '../grideditor.js';\n\nGridEditor.locales.es = {\n 'tool.move': 'Mover',\n 'tool.settings': 'Configuraci\u00F3n',\n 'tool.add_row': 'A\u00F1adir fila',\n 'tool.delete_text': 'Quitar texto',\n 'tool.delete_plain': 'Quitar contenido',\n 'tool.edit_html': 'Editar html',\n 'codemirror.apply': 'Aplicar',\n 'codemirror.cancel': 'Cancelar',\n 'tool.convert_type': 'Editar como texto de {editor}',\n 'text.add': 'Texto',\n 'text.add_type': 'Texto ({editor})',\n 'text.no_editor': 'No hay cargado ning\u00FAn editor de texto \"{type}\": este texto se puede mover y borrar, pero no editar',\n 'text.tinymce': 'tinyMCE',\n 'text.ckeditor': 'CKEditor',\n 'text.summernote': 'Summernote',\n 'tool.add_column': 'A\u00F1adir columna\\n(mant\u00E9n pulsado para elegir el ancho)',\n 'tool.column_size': '{size} de 12',\n 'tool.column_equal': 'Igual: reparte lo que queda de la fila',\n 'tool.column_auto': 'Auto: tan ancha como su contenido',\n 'tool.delete_row': 'Borrar fila',\n 'tool.delete_column': 'Borrar columna',\n 'tool.delete_element': 'Borrar elemento',\n 'tool.delete_container': 'Borrar contenedor',\n 'tool.delete_pane': 'Borrar panel',\n 'tool.rename': 'Haz doble clic para renombrar',\n 'tool.toggle_popup': 'Plegar esta ventana mientras editas',\n 'tool.element_info': 'Elemento: {name}',\n 'tool.column_narrower': 'Estrechar columna\\n(May\u00FAs para el m\u00EDnimo)',\n 'tool.column_wider': 'Ensanchar columna\\n(May\u00FAs para el m\u00E1ximo)',\n 'tool.indent_decrease': 'Reducir sangr\u00EDa\\n(May\u00FAs para quitarla)',\n 'tool.indent_increase': 'Aumentar sangr\u00EDa\\n(May\u00FAs para el m\u00E1ximo)',\n 'tool.edit_source': 'Editar el c\u00F3digo fuente',\n 'tool.preview': 'Vista previa',\n 'tool.more': 'M\u00E1s',\n 'panel.title': 'Ajustes: {kind}',\n 'panel.close': 'Cerrar',\n 'panel.done': 'Hecho',\n 'panel.id': 'Id',\n 'panel.classes': 'Clases',\n 'panel.section_general': 'Id y clases',\n 'panel.editor': 'Editor',\n 'panel.kind_row': 'Fila',\n 'panel.kind_column': 'Columna',\n 'panel.kind_text': 'Texto',\n 'panel.kind_element': 'Elemento',\n 'panel.kind_section': 'Secci\u00F3n',\n 'panel.kind_tab': 'Pesta\u00F1a',\n 'panel.kind_accordion_item': 'Elemento de acorde\u00F3n',\n 'tool.id_placeholder': 'id',\n 'tool.id_title': 'Asignar un identificador \u00FAnico',\n 'tool.classes_placeholder': 'clases',\n 'tool.classes_title': 'Clases css, separadas por espacios',\n 'tool.toggle_class': 'Aplicar o quitar el estilo \"{label}\"',\n 'row.add': 'A\u00F1adir fila {layout}',\n 'row.add_row_cols': 'A\u00F1adir una fila de {columns} columnas, {counts} por fila',\n 'container.add_tabs': 'Pesta\u00F1as',\n 'container.add_tab': 'A\u00F1adir pesta\u00F1a',\n 'container.tab_label': 'Pesta\u00F1a {number}',\n 'container.tabs_section': 'Pesta\u00F1as',\n 'container.tabs_style': 'Estilo',\n 'container.tabs_style_tabs': 'Pesta\u00F1as',\n 'container.tabs_style_pills': 'Pills',\n 'container.tabs_style_underline': 'Subrayado',\n 'container.tabs_width': 'Ancho',\n 'container.tabs_width_natural': 'Natural',\n 'container.tabs_width_fill': 'Rellenar',\n 'container.tabs_width_justified': 'Justificado',\n 'container.tabs_align': 'Alineaci\u00F3n',\n 'container.tabs_align_start': 'Inicio',\n 'container.tabs_align_center': 'Centro',\n 'container.tabs_align_end': 'Fin',\n 'container.tabs_layout': 'Disposici\u00F3n',\n 'container.tabs_layout_horizontal': 'Horizontal',\n 'container.tabs_layout_vertical': 'Vertical',\n 'container.tabs_layout_vertical_from': 'Vertical desde {breakpoint}',\n 'container.add_accordion': 'Acorde\u00F3n',\n 'container.add_accordion_item': 'A\u00F1adir apartado',\n 'container.accordion_label': 'Apartado {number}',\n 'container.add_popup': 'Ventana emergente',\n 'container.popup_title': 'T\u00EDtulo',\n 'container.popup_trigger': 'Abrir',\n 'container.add_card': 'Tarjeta',\n 'container.card_title': 'T\u00EDtulo de la tarjeta',\n 'container.card_footer': 'Pie de la tarjeta',\n 'confirm.title': 'Confirmar',\n 'confirm.ok': 'Borrar',\n 'confirm.cancel': 'Cancelar',\n 'confirm.delete_row': '\u00BFSeguro que quieres borrar esta fila?',\n 'confirm.delete_column': '\u00BFSeguro que quieres borrar esta columna?',\n 'confirm.delete_text': '\u00BFSeguro que quieres borrar este texto?',\n 'confirm.delete_plain': '\u00BFSeguro que quieres borrar este contenido?',\n 'confirm.delete_element': '\u00BFSeguro que quieres borrar este elemento?',\n 'confirm.delete_container': '\u00BFSeguro que quieres borrar este contenedor y todo su contenido?',\n 'confirm.delete_tab': '\u00BFSeguro que quieres borrar esta pesta\u00F1a y todo su contenido?',\n 'confirm.delete_accordion_item': '\u00BFSeguro que quieres borrar este apartado y todo su contenido?',\n 'view.all': 'Todos los tama\u00F1os',\n 'view.xs': 'M\u00F3vil',\n 'view.sm': 'Tablet',\n 'view.md': 'Escritorio peque\u00F1o',\n 'view.lg': 'Escritorio',\n 'view.xl': 'Escritorio grande',\n 'view.xxl': 'Pantalla panor\u00E1mica',\n 'utility.section': 'Responsive: {view}',\n 'utility.col_width': 'Ancho',\n 'utility.col_equal': 'Igual',\n 'utility.col_auto': 'Auto',\n 'section.add': 'Secci\u00F3n',\n 'section.width': 'Ancho',\n 'section.fixed': 'Fijo',\n 'section.fluid': 'Ancho completo',\n 'section.from': 'Fijo desde {breakpoint}',\n 'tool.add_row_to_section': 'A\u00F1adir fila',\n 'tool.delete_section': 'Quitar secci\u00F3n',\n 'confirm.delete_section': '\u00BFSeguro que quieres borrar esta secci\u00F3n y todo su contenido?',\n 'tool.copy': 'Copiar',\n 'tool.paste': 'Pegar',\n 'clipboard.paste_row': 'Pegar fila',\n 'clipboard.paste_section': 'Pegar secci\u00F3n',\n 'utility.col_from_row': 'De la fila: {count}',\n 'utility.row_cols': 'Columnas por fila',\n 'badge.row_cols': '{count} por fila',\n 'badge.row_cols_auto': 'Tan anchas como su contenido',\n 'utility.default': 'Por defecto',\n 'utility.inherit': 'Hereda: {value} (de {breakpoint})',\n 'utility.varies': 'Cambia en {breakpoints}; elegir aqu\u00ED lo sustituye',\n 'utility.display': 'Display',\n 'utility.visibility_hidden': 'Oculto',\n 'tool.hide_in_view': 'Ocultar en esta vista',\n 'tool.show_in_view': 'Mostrar en esta vista',\n 'badge.hidden_in': 'Oculto en {breakpoints}',\n 'utility.order': 'Orden',\n 'utility.order_first': 'Primero',\n 'utility.order_last': '\u00DAltimo',\n 'tool.order_earlier': 'Antes en esta vista',\n 'tool.order_later': 'Despu\u00E9s en esta vista',\n 'badge.order': 'Orden: {value}',\n 'utility.justify_content': 'Justificar columnas',\n 'utility.align_items': 'Alinear columnas',\n 'utility.align_content': 'Alinear l\u00EDneas',\n 'utility.flex_direction': 'Direcci\u00F3n',\n 'utility.flex_wrap': 'Salto de l\u00EDnea',\n 'utility.gap': 'Separaci\u00F3n',\n 'utility.row_gap': 'Separaci\u00F3n entre filas',\n 'utility.column_gap': 'Separaci\u00F3n entre columnas',\n 'utility.flex_fill': 'Rellenar',\n 'utility.flex_grow': 'Crecer',\n 'utility.flex_shrink': 'Encoger',\n 'utility.sticky': 'Fijo al desplazar',\n 'utility.align_self': 'Alinearse',\n 'utility.gutters': 'Espaciado entre columnas',\n 'utility.gutters_x': 'Espaciado horizontal',\n 'utility.gutters_y': 'Espaciado vertical',\n 'utility.padding': 'Relleno',\n 'utility.margin': 'Margen',\n 'utility.side_all': 'Todos los lados',\n 'utility.side_x': 'Izquierda y derecha',\n 'utility.side_y': 'Arriba y abajo',\n 'utility.side_t': 'Arriba',\n 'utility.side_b': 'Abajo',\n 'utility.side_s': 'Inicio',\n 'utility.side_e': 'Fin',\n 'utility.text_align': 'Alineaci\u00F3n del texto',\n 'utility.text_start': 'Inicio',\n 'utility.text_center': 'Centro',\n 'utility.text_end': 'Fin',\n 'utility.float': 'Flotar',\n 'utility.float_start': 'Inicio',\n 'utility.float_end': 'Fin',\n 'utility.float_none': 'Ninguno',\n 'utility.spacing_gutter': 'El relleno lateral de una columna es su espaciado: cambiarlo cambia el espacio entre columnas',\n 'inline_style.section_title': 'Estilo',\n 'inline_style.dialog_title': 'Estilo: {kind}',\n 'inline_style.section_size': 'Tama\u00F1o',\n 'inline_style.section_spacing': 'Espaciado',\n 'inline_style.section_border': 'Borde',\n 'inline_style.section_background': 'Fondo',\n 'inline_style.section_text': 'Texto',\n 'inline_style.section_typography': 'Tipograf\u00EDa',\n 'inline_style.section_display': 'Visualizaci\u00F3n',\n 'inline_style.section_flex': 'Flex',\n 'inline_style.section_position': 'Posici\u00F3n',\n 'inline_style.section_custom': 'CSS libre',\n 'inline_style.all_sizes': 'Se aplica a todos los tama\u00F1os',\n 'inline_style.overridden': 'La clase {class} tiene prioridad sobre este valor',\n 'inline_style.invalid': 'Esta propiedad no acepta ese valor',\n 'inline_style.catalog': 'Clases de Bootstrap',\n 'inline_style.shadow_x': 'X',\n 'inline_style.shadow_y': 'Y',\n 'inline_style.shadow_blur': 'Desenfoque',\n 'inline_style.shadow_spread': 'Extensi\u00F3n',\n 'inline_style.shadow_color': 'Color',\n 'inline_style.shadow_inset': 'Interior',\n 'inline_style.shadow_text_mode': 'Editar como texto',\n 'inline_style.shadow_builder_mode': 'Editar con el constructor',\n 'inline_style.prop_width': 'Ancho',\n 'inline_style.prop_height': 'Alto',\n 'inline_style.prop_min_width': 'Ancho m\u00EDnimo',\n 'inline_style.prop_min_height': 'Alto m\u00EDnimo',\n 'inline_style.prop_max_width': 'Ancho m\u00E1ximo',\n 'inline_style.prop_max_height': 'Alto m\u00E1ximo',\n 'inline_style.prop_margin_top': 'Margen superior',\n 'inline_style.prop_margin_right': 'Margen derecho',\n 'inline_style.prop_margin_bottom': 'Margen inferior',\n 'inline_style.prop_margin_left': 'Margen izquierdo',\n 'inline_style.prop_padding_top': 'Relleno superior',\n 'inline_style.prop_padding_right': 'Relleno derecho',\n 'inline_style.prop_padding_bottom': 'Relleno inferior',\n 'inline_style.prop_padding_left': 'Relleno izquierdo',\n 'inline_style.prop_border_width': 'Grosor del borde',\n 'inline_style.prop_border_style': 'Estilo del borde',\n 'inline_style.prop_border_color': 'Color del borde',\n 'inline_style.prop_border_radius': 'Radio del borde',\n 'inline_style.prop_box_shadow': 'Sombra',\n 'inline_style.prop_background_color': 'Color de fondo',\n 'inline_style.prop_background_image': 'Imagen de fondo',\n 'inline_style.prop_background_size': 'Tama\u00F1o del fondo',\n 'inline_style.prop_background_position': 'Posici\u00F3n del fondo',\n 'inline_style.prop_background_repeat': 'Repetici\u00F3n del fondo',\n 'inline_style.prop_color': 'Color',\n 'inline_style.prop_font_size': 'Tama\u00F1o de letra',\n 'inline_style.prop_text_align': 'Alineaci\u00F3n',\n 'inline_style.prop_text_shadow': 'Sombra del texto',\n 'inline_style.prop_font_family': 'Fuente',\n 'inline_style.prop_font_weight': 'Grosor de letra',\n 'inline_style.prop_font_style': 'Estilo de letra',\n 'inline_style.prop_line_height': 'Interlineado',\n 'inline_style.prop_letter_spacing': 'Espaciado entre letras',\n 'inline_style.prop_text_transform': 'May\u00FAsculas',\n 'inline_style.prop_text_decoration': 'Decoraci\u00F3n',\n 'inline_style.prop_display': 'Display',\n 'inline_style.prop_opacity': 'Opacidad',\n 'inline_style.prop_overflow': 'Desbordamiento',\n 'inline_style.prop_visibility': 'Visibilidad',\n 'inline_style.prop_position': 'Posici\u00F3n',\n 'inline_style.prop_top': 'Arriba',\n 'inline_style.prop_right': 'Derecha',\n 'inline_style.prop_bottom': 'Abajo',\n 'inline_style.prop_left': 'Izquierda',\n 'inline_style.prop_z_index': 'Z-index',\n 'error.sortable_missing': '\u00A1SortableJS no est\u00E1 disponible! Aseg\u00FArate de haber cargado el archivo js de Sortable; sin \u00E9l no se puede arrastrar.',\n 'warning.already_editing': 'Este elemento ya tiene un editor: se devuelve ese, con las opciones con las que se cre\u00F3.',\n 'warning.destroyed': 'Se ha llamado a {method}() en un editor destruido, y no hace nada.',\n 'warning.duplicate_build': 'grideditor.js se ha cargado dos veces: se mantiene el primer GridEditor.',\n 'warning.adapter_no_jquery': 'grideditor.jquery.js necesita jQuery 4 y la p\u00E1gina no tiene jQuery: la API de jQuery no est\u00E1 disponible.',\n 'error.tinymce_missing': '\u00A1tinyMCE no est\u00E1 disponible! Aseg\u00FArate de haber cargado el archivo js de tinyMCE.',\n 'error.ckeditor_missing': '\u00A1CKEditor 5 no est\u00E1 disponible! Aseg\u00FArate de haber cargado su archivo ckeditor5.umd.js.',\n 'error.ckeditor_start': 'CKEditor no ha podido arrancar: {message}',\n 'warning.ckeditor_plugin': 'CKEditor no tiene ning\u00FAn plugin llamado {name}, as\u00ED que se deja fuera.',\n 'error.codemirror_missing': '\u00A1CodeMirror no est\u00E1 disponible! Aseg\u00FArate de haber cargado el archivo js de CodeMirror; sin \u00E9l el c\u00F3digo se edita en un textarea normal.',\n 'error.summernote_missing': '\u00A1Summernote no est\u00E1 disponible! Aseg\u00FArate de haber cargado jQuery y el archivo js de Summernote.',\n};\n\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * What a plugin's or a locale's classic script imports in place of the\n * editor: the GridEditor the page already loaded.\n *\n * The build points `import { GridEditor } from '../grideditor.js'` here for\n * the classic scripts, so each registers on the editor the page has rather\n * than bringing its own. Loaded before the editor there is nothing to\n * register on, and saying so is better than a TypeError three calls later.\n */\nvar GridEditor = window.GridEditor;\n\nif (!GridEditor || typeof GridEditor.get !== 'function') {\n throw new Error('grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, ' +\n 'its locales and grideditor.jquery.js');\n}\n\nexport { GridEditor };\nexport default GridEditor;\n", "/**\n * Spanish strings for grid-editor.\n *\n * Load after the editor and select with `locale: 'es'`:\n *\n * <script src=\"dist/grideditor.min.js\"></script>\n * <script src=\"dist/locales/grideditor.es.js\"></script>\n * <script>new GridEditor('#myGrid', { locale: 'es' });</script>\n *\n * or, as a module, `import '@themarioga/grid-editor/locales/es'`.\n *\n * This is one of the two locales grid-editor ships, so it is held to complete\n * coverage of `GridEditor.locales.en`: test/locales.js fails when a key\n * is missing. Add the Spanish string in the same change that adds the English\n * one, and keep the wording short enough to fit the tooltip or the dropdown\n * item it appears in.\n */\nimport { GridEditor } from '../grideditor.js';\n\nGridEditor.locales.es = {\n 'tool.move': 'Mover',\n 'tool.settings': 'Configuraci\u00F3n',\n 'tool.add_row': 'A\u00F1adir fila',\n 'tool.delete_text': 'Quitar texto',\n 'tool.delete_plain': 'Quitar contenido',\n 'tool.edit_html': 'Editar html',\n 'codemirror.apply': 'Aplicar',\n 'codemirror.cancel': 'Cancelar',\n 'tool.convert_type': 'Editar como texto de {editor}',\n 'text.add': 'Texto',\n 'text.add_type': 'Texto ({editor})',\n 'text.no_editor': 'No hay cargado ning\u00FAn editor de texto \"{type}\": este texto se puede mover y borrar, pero no editar',\n 'text.tinymce': 'tinyMCE',\n 'text.ckeditor': 'CKEditor',\n 'text.summernote': 'Summernote',\n 'tool.add_column': 'A\u00F1adir columna\\n(mant\u00E9n pulsado para elegir el ancho)',\n 'tool.column_size': '{size} de 12',\n 'tool.column_equal': 'Igual: reparte lo que queda de la fila',\n 'tool.column_auto': 'Auto: tan ancha como su contenido',\n 'tool.delete_row': 'Borrar fila',\n 'tool.delete_column': 'Borrar columna',\n 'tool.delete_element': 'Borrar elemento',\n 'tool.delete_container': 'Borrar contenedor',\n 'tool.delete_pane': 'Borrar panel',\n 'tool.rename': 'Haz doble clic para renombrar',\n 'tool.toggle_popup': 'Plegar esta ventana mientras editas',\n 'tool.element_info': 'Elemento: {name}',\n 'tool.column_narrower': 'Estrechar columna\\n(May\u00FAs para el m\u00EDnimo)',\n 'tool.column_wider': 'Ensanchar columna\\n(May\u00FAs para el m\u00E1ximo)',\n 'tool.indent_decrease': 'Reducir sangr\u00EDa\\n(May\u00FAs para quitarla)',\n 'tool.indent_increase': 'Aumentar sangr\u00EDa\\n(May\u00FAs para el m\u00E1ximo)',\n 'tool.edit_source': 'Editar el c\u00F3digo fuente',\n 'tool.preview': 'Vista previa',\n 'tool.more': 'M\u00E1s',\n 'group.rows': 'Filas',\n 'group.content': 'Contenido',\n 'group.select': 'A\u00F1adir',\n 'panel.title': 'Ajustes: {kind}',\n 'panel.close': 'Cerrar',\n 'panel.done': 'Hecho',\n 'panel.id': 'Id',\n 'panel.classes': 'Clases',\n 'panel.section_general': 'Id y clases',\n 'panel.editor': 'Editor',\n 'panel.kind_row': 'Fila',\n 'panel.kind_column': 'Columna',\n 'panel.kind_text': 'Texto',\n 'panel.kind_element': 'Elemento',\n 'panel.kind_section': 'Secci\u00F3n',\n 'panel.kind_tab': 'Pesta\u00F1a',\n 'panel.kind_accordion_item': 'Elemento de acorde\u00F3n',\n 'tool.id_placeholder': 'id',\n 'tool.id_title': 'Asignar un identificador \u00FAnico',\n 'tool.classes_placeholder': 'clases',\n 'tool.classes_title': 'Clases css, separadas por espacios',\n 'tool.toggle_class': 'Aplicar o quitar el estilo \"{label}\"',\n 'row.add': 'A\u00F1adir fila {layout}',\n 'row.add_row_cols': 'A\u00F1adir una fila de {columns} columnas, {counts} por fila',\n 'container.add_tabs': 'Pesta\u00F1as',\n 'container.add_tab': 'A\u00F1adir pesta\u00F1a',\n 'container.tab_label': 'Pesta\u00F1a {number}',\n 'container.tabs_section': 'Pesta\u00F1as',\n 'container.tabs_style': 'Estilo',\n 'container.tabs_style_tabs': 'Pesta\u00F1as',\n 'container.tabs_style_pills': 'Pills',\n 'container.tabs_style_underline': 'Subrayado',\n 'container.tabs_width': 'Ancho',\n 'container.tabs_width_natural': 'Natural',\n 'container.tabs_width_fill': 'Rellenar',\n 'container.tabs_width_justified': 'Justificado',\n 'container.tabs_align': 'Alineaci\u00F3n',\n 'container.tabs_align_start': 'Inicio',\n 'container.tabs_align_center': 'Centro',\n 'container.tabs_align_end': 'Fin',\n 'container.tabs_layout': 'Disposici\u00F3n',\n 'container.tabs_layout_horizontal': 'Horizontal',\n 'container.tabs_layout_vertical': 'Vertical',\n 'container.tabs_layout_vertical_from': 'Vertical desde {breakpoint}',\n 'container.add_accordion': 'Acorde\u00F3n',\n 'container.add_accordion_item': 'A\u00F1adir apartado',\n 'container.accordion_label': 'Apartado {number}',\n 'container.add_popup': 'Ventana emergente',\n 'container.popup_title': 'T\u00EDtulo',\n 'container.popup_trigger': 'Abrir',\n 'container.add_card': 'Tarjeta',\n 'container.card_title': 'T\u00EDtulo de la tarjeta',\n 'container.card_footer': 'Pie de la tarjeta',\n 'confirm.title': 'Confirmar',\n 'confirm.ok': 'Borrar',\n 'confirm.cancel': 'Cancelar',\n 'confirm.delete_row': '\u00BFSeguro que quieres borrar esta fila?',\n 'confirm.delete_column': '\u00BFSeguro que quieres borrar esta columna?',\n 'confirm.delete_text': '\u00BFSeguro que quieres borrar este texto?',\n 'confirm.delete_plain': '\u00BFSeguro que quieres borrar este contenido?',\n 'confirm.delete_element': '\u00BFSeguro que quieres borrar este elemento?',\n 'confirm.delete_container': '\u00BFSeguro que quieres borrar este contenedor y todo su contenido?',\n 'confirm.delete_tab': '\u00BFSeguro que quieres borrar esta pesta\u00F1a y todo su contenido?',\n 'confirm.delete_accordion_item': '\u00BFSeguro que quieres borrar este apartado y todo su contenido?',\n 'view.all': 'Todos los tama\u00F1os',\n 'view.xs': 'M\u00F3vil',\n 'view.sm': 'Tablet',\n 'view.md': 'Escritorio peque\u00F1o',\n 'view.lg': 'Escritorio',\n 'view.xl': 'Escritorio grande',\n 'view.xxl': 'Pantalla panor\u00E1mica',\n 'utility.section': 'Responsive: {view}',\n 'utility.col_width': 'Ancho',\n 'utility.col_equal': 'Igual',\n 'utility.col_auto': 'Auto',\n 'section.add': 'Secci\u00F3n',\n 'section.width': 'Ancho',\n 'section.fixed': 'Fijo',\n 'section.fluid': 'Ancho completo',\n 'section.from': 'Fijo desde {breakpoint}',\n 'tool.add_row_to_section': 'A\u00F1adir fila',\n 'tool.delete_section': 'Quitar secci\u00F3n',\n 'confirm.delete_section': '\u00BFSeguro que quieres borrar esta secci\u00F3n y todo su contenido?',\n 'tool.copy': 'Copiar',\n 'tool.paste': 'Pegar',\n 'clipboard.paste_row': 'Pegar fila',\n 'clipboard.paste_section': 'Pegar secci\u00F3n',\n 'utility.col_from_row': 'De la fila: {count}',\n 'utility.row_cols': 'Columnas por fila',\n 'badge.row_cols': '{count} por fila',\n 'badge.row_cols_auto': 'Tan anchas como su contenido',\n 'utility.default': 'Por defecto',\n 'utility.inherit': 'Hereda: {value} (de {breakpoint})',\n 'utility.varies': 'Cambia en {breakpoints}; elegir aqu\u00ED lo sustituye',\n 'utility.display': 'Display',\n 'utility.visibility_hidden': 'Oculto',\n 'tool.hide_in_view': 'Ocultar en esta vista',\n 'tool.show_in_view': 'Mostrar en esta vista',\n 'badge.hidden_in': 'Oculto en {breakpoints}',\n 'utility.order': 'Orden',\n 'utility.order_first': 'Primero',\n 'utility.order_last': '\u00DAltimo',\n 'tool.order_earlier': 'Antes en esta vista',\n 'tool.order_later': 'Despu\u00E9s en esta vista',\n 'badge.order': 'Orden: {value}',\n 'utility.justify_content': 'Justificar columnas',\n 'utility.align_items': 'Alinear columnas',\n 'utility.align_content': 'Alinear l\u00EDneas',\n 'utility.flex_direction': 'Direcci\u00F3n',\n 'utility.flex_wrap': 'Salto de l\u00EDnea',\n 'utility.gap': 'Separaci\u00F3n',\n 'utility.row_gap': 'Separaci\u00F3n entre filas',\n 'utility.column_gap': 'Separaci\u00F3n entre columnas',\n 'utility.flex_fill': 'Rellenar',\n 'utility.flex_grow': 'Crecer',\n 'utility.flex_shrink': 'Encoger',\n 'utility.sticky': 'Fijo al desplazar',\n 'utility.align_self': 'Alinearse',\n 'utility.gutters': 'Espaciado entre columnas',\n 'utility.gutters_x': 'Espaciado horizontal',\n 'utility.gutters_y': 'Espaciado vertical',\n 'utility.padding': 'Relleno',\n 'utility.margin': 'Margen',\n 'utility.side_all': 'Todos los lados',\n 'utility.side_x': 'Izquierda y derecha',\n 'utility.side_y': 'Arriba y abajo',\n 'utility.side_t': 'Arriba',\n 'utility.side_b': 'Abajo',\n 'utility.side_s': 'Inicio',\n 'utility.side_e': 'Fin',\n 'utility.text_align': 'Alineaci\u00F3n del texto',\n 'utility.text_start': 'Inicio',\n 'utility.text_center': 'Centro',\n 'utility.text_end': 'Fin',\n 'utility.float': 'Flotar',\n 'utility.float_start': 'Inicio',\n 'utility.float_end': 'Fin',\n 'utility.float_none': 'Ninguno',\n 'utility.spacing_gutter': 'El relleno lateral de una columna es su espaciado: cambiarlo cambia el espacio entre columnas',\n 'inline_style.section_title': 'Estilo',\n 'inline_style.dialog_title': 'Estilo: {kind}',\n 'inline_style.section_size': 'Tama\u00F1o',\n 'inline_style.section_spacing': 'Espaciado',\n 'inline_style.section_border': 'Borde',\n 'inline_style.section_background': 'Fondo',\n 'inline_style.section_text': 'Texto',\n 'inline_style.section_typography': 'Tipograf\u00EDa',\n 'inline_style.section_display': 'Visualizaci\u00F3n',\n 'inline_style.section_flex': 'Flex',\n 'inline_style.section_position': 'Posici\u00F3n',\n 'inline_style.section_custom': 'CSS libre',\n 'inline_style.all_sizes': 'Se aplica a todos los tama\u00F1os',\n 'inline_style.overridden': 'La clase {class} tiene prioridad sobre este valor',\n 'inline_style.invalid': 'Esta propiedad no acepta ese valor',\n 'inline_style.catalog': 'Clases de Bootstrap',\n 'inline_style.shadow_x': 'X',\n 'inline_style.shadow_y': 'Y',\n 'inline_style.shadow_blur': 'Desenfoque',\n 'inline_style.shadow_spread': 'Extensi\u00F3n',\n 'inline_style.shadow_color': 'Color',\n 'inline_style.shadow_inset': 'Interior',\n 'inline_style.shadow_text_mode': 'Editar como texto',\n 'inline_style.shadow_builder_mode': 'Editar con el constructor',\n 'inline_style.prop_width': 'Ancho',\n 'inline_style.prop_height': 'Alto',\n 'inline_style.prop_min_width': 'Ancho m\u00EDnimo',\n 'inline_style.prop_min_height': 'Alto m\u00EDnimo',\n 'inline_style.prop_max_width': 'Ancho m\u00E1ximo',\n 'inline_style.prop_max_height': 'Alto m\u00E1ximo',\n 'inline_style.prop_margin_top': 'Margen superior',\n 'inline_style.prop_margin_right': 'Margen derecho',\n 'inline_style.prop_margin_bottom': 'Margen inferior',\n 'inline_style.prop_margin_left': 'Margen izquierdo',\n 'inline_style.prop_padding_top': 'Relleno superior',\n 'inline_style.prop_padding_right': 'Relleno derecho',\n 'inline_style.prop_padding_bottom': 'Relleno inferior',\n 'inline_style.prop_padding_left': 'Relleno izquierdo',\n 'inline_style.prop_border_width': 'Grosor del borde',\n 'inline_style.prop_border_style': 'Estilo del borde',\n 'inline_style.prop_border_color': 'Color del borde',\n 'inline_style.prop_border_radius': 'Radio del borde',\n 'inline_style.prop_box_shadow': 'Sombra',\n 'inline_style.prop_background_color': 'Color de fondo',\n 'inline_style.prop_background_image': 'Imagen de fondo',\n 'inline_style.prop_background_size': 'Tama\u00F1o del fondo',\n 'inline_style.prop_background_position': 'Posici\u00F3n del fondo',\n 'inline_style.prop_background_repeat': 'Repetici\u00F3n del fondo',\n 'inline_style.prop_color': 'Color',\n 'inline_style.prop_font_size': 'Tama\u00F1o de letra',\n 'inline_style.prop_text_align': 'Alineaci\u00F3n',\n 'inline_style.prop_text_shadow': 'Sombra del texto',\n 'inline_style.prop_font_family': 'Fuente',\n 'inline_style.prop_font_weight': 'Grosor de letra',\n 'inline_style.prop_font_style': 'Estilo de letra',\n 'inline_style.prop_line_height': 'Interlineado',\n 'inline_style.prop_letter_spacing': 'Espaciado entre letras',\n 'inline_style.prop_text_transform': 'May\u00FAsculas',\n 'inline_style.prop_text_decoration': 'Decoraci\u00F3n',\n 'inline_style.prop_display': 'Display',\n 'inline_style.prop_opacity': 'Opacidad',\n 'inline_style.prop_overflow': 'Desbordamiento',\n 'inline_style.prop_visibility': 'Visibilidad',\n 'inline_style.prop_position': 'Posici\u00F3n',\n 'inline_style.prop_top': 'Arriba',\n 'inline_style.prop_right': 'Derecha',\n 'inline_style.prop_bottom': 'Abajo',\n 'inline_style.prop_left': 'Izquierda',\n 'inline_style.prop_z_index': 'Z-index',\n 'error.sortable_missing': '\u00A1SortableJS no est\u00E1 disponible! Aseg\u00FArate de haber cargado el archivo js de Sortable; sin \u00E9l no se puede arrastrar.',\n 'warning.already_editing': 'Este elemento ya tiene un editor: se devuelve ese, con las opciones con las que se cre\u00F3.',\n 'warning.destroyed': 'Se ha llamado a {method}() en un editor destruido, y no hace nada.',\n 'warning.duplicate_build': 'grideditor.js se ha cargado dos veces: se mantiene el primer GridEditor.',\n 'warning.adapter_no_jquery': 'grideditor.jquery.js necesita jQuery 4 y la p\u00E1gina no tiene jQuery: la API de jQuery no est\u00E1 disponible.',\n 'error.tinymce_missing': '\u00A1tinyMCE no est\u00E1 disponible! Aseg\u00FArate de haber cargado el archivo js de tinyMCE.',\n 'error.ckeditor_missing': '\u00A1CKEditor 5 no est\u00E1 disponible! Aseg\u00FArate de haber cargado su archivo ckeditor5.umd.js.',\n 'error.ckeditor_start': 'CKEditor no ha podido arrancar: {message}',\n 'warning.ckeditor_plugin': 'CKEditor no tiene ning\u00FAn plugin llamado {name}, as\u00ED que se deja fuera.',\n 'error.codemirror_missing': '\u00A1CodeMirror no est\u00E1 disponible! Aseg\u00FArate de haber cargado el archivo js de CodeMirror; sin \u00E9l el c\u00F3digo se edita en un textarea normal.',\n 'error.summernote_missing': '\u00A1Summernote no est\u00E1 disponible! Aseg\u00FArate de haber cargado jQuery y el archivo js de Summernote.',\n};\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["GridEditor", "GridEditor"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var g=window.GridEditor;if(!g||typeof g.get!="function")throw new Error("grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, its locales and grideditor.jquery.js");function S(e,o){return e?Array.prototype.slice.call(e.querySelectorAll(o)):[]}function R(e,o){return e?Array.prototype.filter.call(e.children,function(i){return!o||i.matches(o)}):[]}function E(e,o){return R(e,o)[0]||null}function Y(e,o,i){var a=e&&e.nodeType===1?e.closest(o):null;return a&&i&&a!==i&&!i.contains(a)?null:a}function w(e,o,i){var a=document.createElement(e);return Object.keys(o||{}).forEach(function(r){var n=o[r];n!=null&&n!==!1&&a.setAttribute(r,n)}),i!=null&&(a.textContent=i),a}function F(e,o){return e.innerHTML=o==null?"":String(o),e}function _(e,o){return H(o).forEach(function(i){e.classList.add(i)}),e}function O(e,o){return H(o).forEach(function(i){e.classList.remove(i)}),e}function C(e,o){return!!e&&e.nodeType===1&&e.classList.contains(o)}function H(e){return String(e||"").split(/\s+/).filter(Boolean)}function J(e){return e.style.display="none",e}function N(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function U(e,o,i,a,r){var n=function(
|
|
1
|
+
(()=>{var g=window.GridEditor;if(!g||typeof g.get!="function")throw new Error("grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, its locales and grideditor.jquery.js");function S(e,o){return e?Array.prototype.slice.call(e.querySelectorAll(o)):[]}function R(e,o){return e?Array.prototype.filter.call(e.children,function(i){return!o||i.matches(o)}):[]}function E(e,o){return R(e,o)[0]||null}function Y(e,o,i){var a=e&&e.nodeType===1?e.closest(o):null;return a&&i&&a!==i&&!i.contains(a)?null:a}function w(e,o,i){var a=document.createElement(e);return Object.keys(o||{}).forEach(function(r){var n=o[r];n!=null&&n!==!1&&a.setAttribute(r,n)}),i!=null&&(a.textContent=i),a}function F(e,o){return e.innerHTML=o==null?"":String(o),e}function _(e,o){return H(o).forEach(function(i){e.classList.add(i)}),e}function O(e,o){return H(o).forEach(function(i){e.classList.remove(i)}),e}function C(e,o){return!!e&&e.nodeType===1&&e.classList.contains(o)}function H(e){return String(e||"").split(/\s+/).filter(Boolean)}function J(e){return e.style.display="none",e}function N(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function U(e,o,i,a,r){var n=function(u){var f=Y(u.target,i,e);if(f&&e.contains(f))return a.call(f,u)};return H(o).forEach(function(u){e.addEventListener(u,n,r)}),n}var V=400;function Z(e,o,i,a){i=i===void 0?V:i;var r=function(){J(e),a&&a()};if(!N(e)||!e.animate||i<=0){window.setTimeout(r,0);return}var n=e.animate(o(getComputedStyle(e)),{duration:i,easing:"ease-in-out"}),u=!1,f=function(){u||(u=!0,r())};n.onfinish=f,n.oncancel=f}function W(e,o,i){typeof o=="function"&&(i=o,o=void 0),e.style.overflow="hidden",Z(e,function(a){return[{height:a.height,paddingTop:a.paddingTop,paddingBottom:a.paddingBottom,marginTop:a.marginTop,marginBottom:a.marginBottom},{height:"0px",paddingTop:"0px",paddingBottom:"0px",marginTop:"0px",marginBottom:"0px"}]},o,function(){e.style.removeProperty("overflow"),i&&i()})}if(!g.features.text){let e=function(r){var n={};return Array.prototype.slice.call(r.attributes).forEach(function(u){n[u.name]=u.value}),n},o=function(r){return(r||"").split(/\s+/).filter(function(n){return n!==""&&!q.test(n)})},i=function(r,n,u,f){var v=Object.assign({},n);Object.keys(Object.assign({},u,f)).forEach(function(l){l==="class"||z.test(l)||u[l]===f[l]||(f[l]===void 0?delete v[l]:v[l]=f[l])});var d=o(u.class),k=o(f.class),h=o(n.class).filter(function(l){return k.indexOf(l)!==-1||d.indexOf(l)===-1});k.forEach(function(l){d.indexOf(l)===-1&&h.indexOf(l)===-1&&h.push(l)}),h.length?v.class=h.join(" "):delete v.class,Object.keys(e(r)).forEach(function(l){r.removeAttribute(l)}),Object.keys(v).forEach(function(l){r.setAttribute(l,v[l])})},a=function(r){var n=r.settings,u={},f={};Object.keys(g.texts).forEach(function(t){u[t]=g.texts[t](r)}),Array.isArray(n.content_types)||(n.content_types=Object.keys(u)),Array.isArray(n.text_tools)||(n.text_tools=[]),Array.isArray(n.text_classes)||(n.text_classes=[]);function v(){return n.content_types.filter(function(t){return!!u[t]})}function d(t){var s=u[t];return s&&s.labelKey?r.t(s.labelKey):t}function k(t,s){var c=u[t],p=w("div",{class:"ge-content ge-content-type-"+t,"data-ge-content-type":t});return s&&s.nodeType?p.appendChild(s):F(p,s!==void 0?s:c&&c.initialContent||""),p}function h(t,s){return t&&typeof t=="object"&&(s=t,t=void 0),s=s||{},t=t||v()[0],!t||!u[t]?(f["createText:"+t]||(f["createText:"+t]=!0,r.warn('createText: no text editor "'+t+'" is loaded; load its plugin and name it in content_types')),null):r.place(k(t,s.content),"text",s)}function l(t){return!!u[t.getAttribute("data-ge-content-type")]}function A(t){if(!C(t,"ge-rte-active")&&N(t)){var s=u[t.getAttribute("data-ge-content-type")];if(s){if(s.available&&!s.available()){s.missingKey&&console.error(r.t(s.missingKey));return}L.set(t,e(t)),T.delete(t),_(t,"ge-rte-active"),s.start([t])}}}function Q(){A(this)}function D(t){var s=u[t.getAttribute("data-ge-content-type")],c=L.get(t),p=c?e(t):null;s&&s.stop([t]),O(t,"ge-rte-active"),c&&(i(t,c,T.get(t)||c,p),L.delete(t),T.delete(t))}function P(t){var s=E(t,".ge-content"),c=s.getAttribute("data-ge-content-type"),p=w("div",{class:"ge-tools-drawer ge-text-drawer"});t.insertBefore(p,t.firstChild),r.createMoveTool(p);var j=r.addSettingsTool(p,s,n.text_classes),y=E(j,".ge-details-general"),K=w("div",{class:"ge-field ge-text-editor"});K.appendChild(w("span",{class:"ge-field-label"},r.t("panel.editor"))),K.appendChild(w("span",{class:"ge-field-value"},d(c))),y.insertBefore(K,y.firstChild),n.text_tools.forEach(function(b){r.createTool(p,b.title||"",b.className||"",b.iconClass||"bi bi-wrench",b.on)}),r.createTool(p,r.t("tool.delete_text"),"ge-delete-text","bi bi-trash",function(){r.deleteNode("text",s,r.t("confirm.delete_text"),function(b){D(s),W(t,function(){t.remove(),b()})})})}function X(){S(r.canvas,".ge-text-block").forEach(function(t){if(!E(t,".ge-tools-drawer")){var s=E(t,".ge-content");!s||!l(s)||P(t)}})}var B=v(),x=null;return{methods:{createText:h},textTypes:function(){var t=v(),s=Object.keys(u).filter(function(c){return t.indexOf(c)===-1});return t.concat(s).map(function(c){var p=u[c];return{type:c,label:d(c),offered:t.indexOf(c)!==-1,available:p.available?function(){return p.available()}:null,missingKey:p.missingKey,edit:function(j){var y=j.parentElement;C(y,"ge-text-block")&&!E(y,".ge-tools-drawer")&&P(y),A(j)}}})},toolbar:B.map(function(t){return{label:function(){return B.length>1?r.t("text.add_type",{editor:d(t)}):r.t("text.add")},iconClass:u[t].iconClass,className:"ge-add-text-button",kind:"text",group:"content",inColumn:!0,create:function(){return k(t)}}}),onInit:function(){X(),x&&r.canvas.removeEventListener("click",x),x=U(r.canvas,"click",".ge-content",Q)},onBeforeDeinit:function(){S(r.canvas,".ge-content").forEach(function(t){l(t)&&D(t)})},onDeinit:function(){x&&r.canvas.removeEventListener("click",x),x=null},onContentReady:function(t){L.has(t)&&!T.has(t)&&T.set(t,e(t))}}};Object.assign(g.locales.en,{"text.add":"Text","text.add_type":"Text ({editor})","panel.editor":"Editor","panel.kind_text":"Text"}),L=new WeakMap,T=new WeakMap,q=/^(mce-|cke|ck-|note-)|^(ck|active|ge-rte-active)$/,z=/^(data-mce-|contenteditable$|spellcheck$)/,a.always=!0,g.features.text=a}var L,T,q,z;Object.assign(g.locales.en,{"text.ckeditor":"CKEditor","error.ckeditor_start":"CKEditor could not start: {message}","warning.ckeditor_plugin":"CKEditor has no plugin called {name}, so it is left out."});var $="<p>Lorem initius... </p>",tt=["Essentials","Autoformat","Paragraph","Heading","Bold","Italic","Underline","Strikethrough","Link","AutoLink","List","BlockQuote","Indent","HorizontalLine","Table","TableToolbar","PasteFromOffice"],et={toolbar:["undo","redo","|","heading","|","bold","italic","underline","strikethrough","|","link","bulletedList","numberedList","blockQuote","|","insertTable","horizontalLine"],heading:{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"}].concat([1,2,3,4,5,6].map(function(e){return{model:"heading"+e,view:"h"+e,title:"Heading "+e,class:"ck-heading_heading"+e}}))},table:{contentToolbar:["tableColumn","tableRow","mergeTableCells"]}},M=new WeakMap,m=new WeakMap,I=new WeakMap;function nt(e,o){return o.map(function(i){return typeof i!="string"?i:(window.CKEDITOR[i]||e.warn(e.t("warning.ckeditor_plugin",{name:i})),window.CKEDITOR[i])}).filter(Boolean)}g.texts.ckeditor=function(e){function o(i,a){var r=a.getData(),n=a.destroy().catch(function(){}).then(function(){i.innerHTML=r});return i.innerHTML=r,n}return{labelKey:"text.ckeditor",initialContent:$,missingKey:"error.ckeditor_missing",available:function(){return!!(window.CKEDITOR&&window.CKEDITOR.InlineEditor)},start:function(i){var a=e.settings,r=a.ckeditor&&a.ckeditor.config?a.ckeditor.config:{};i.forEach(function(n){if(!C(n,"active")){n.innerHTML==$&&(n.innerHTML=""),_(n,"active");var u=Object.assign({},et,r);u.plugins=nt(e,r.plugins||tt);var f={};m.set(n,f);var v=(I.get(n)||Promise.resolve()).then(function(){return m.get(n)!==f?null:window.CKEDITOR.InlineEditor.create(n,u)}).then(function(d){return d?m.get(n)!==f?o(n,d):(m.delete(n),M.set(n,d),e.textReady(n),d.editing.view.focus(),null):null}).catch(function(d){m.get(n)===f&&(m.delete(n),O(n,"active")),console.error(e.t("error.ckeditor_start",{message:d&&d.message||d}))});I.set(n,v)}})},stop:function(i){i.filter(function(a){return C(a,"active")}).forEach(function(a){var r=M.get(a);M.delete(a),m.delete(a),r&&I.set(a,o(a,r)),O(a,"active")})}}};})();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/js/register.js", "../../src/js/dom.js", "../../src/js/text/grideditor.text.js", "../../src/js/plugins/grideditor.ckeditor.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * What a plugin's or a locale's classic script imports in place of the\n * editor: the GridEditor the page already loaded.\n *\n * The build points `import { GridEditor } from '../grideditor.js'` here for\n * the classic scripts, so each registers on the editor the page has rather\n * than bringing its own. Loaded before the editor there is nothing to\n * register on, and saying so is better than a TypeError three calls later.\n */\nvar GridEditor = window.GridEditor;\n\nif (!GridEditor || typeof GridEditor.get !== 'function') {\n throw new Error('grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, ' +\n 'its locales and grideditor.jquery.js');\n}\n\nexport { GridEditor };\nexport default GridEditor;\n", "/**\n * The DOM, the way grid-editor uses it.\n *\n * Small helpers over the browser's own API, for the core and the shipped\n * plugins. Not a public API: a plugin of a host's own is free to write its\n * DOM code however it likes, and this file makes no promise to it.\n *\n * Stateless on purpose. The build puts a copy of this file in each plugin's\n * classic script, so anything kept here would be kept once per copy; a\n * module that needs to remember something about a node keeps its own\n * WeakMap.\n */\n\n/** Every element under `root` matching `selector`, as an array. */\nexport function all(root, selector) {\n return root ? Array.prototype.slice.call(root.querySelectorAll(selector)) : [];\n}\n\n/** The first element under `root` matching `selector`, or null. */\nexport function one(root, selector) {\n return root ? root.querySelector(selector) : null;\n}\n\n/** `root` itself when it matches, then every element under it that does. */\nexport function selfAndAll(root, selector) {\n if (!root) { return []; }\n\n var found = all(root, selector);\n if (root.nodeType === 1 && root.matches(selector)) { found.unshift(root); }\n return found;\n}\n\n/** The element children of `node`, those matching `selector` if one is given. */\nexport function children(node, selector) {\n if (!node) { return []; }\n\n return Array.prototype.filter.call(node.children, function(each) {\n return !selector || each.matches(selector);\n });\n}\n\n/** The first element child matching `selector`, or null. */\nexport function child(node, selector) {\n return children(node, selector)[0] || null;\n}\n\n/** The nearest ancestor-or-self matching `selector` below `stopAt`, or null. */\nexport function closest(node, selector, stopAt) {\n var found = node && node.nodeType === 1 ? node.closest(selector) : null;\n\n if (found && stopAt && found !== stopAt && !stopAt.contains(found)) { return null; }\n return found;\n}\n\n/** Whether `node` is an element matching `selector`. */\nexport function is(node, selector) {\n return !!node && node.nodeType === 1 && node.matches(selector);\n}\n\n/** Whether `node` is in the document. */\nexport function attached(node) {\n return !!node && document.documentElement.contains(node);\n}\n\n/** The element siblings after `node` that match `selector`. */\nexport function nextAll(node, selector) {\n var found = [];\n\n for (var next = node.nextElementSibling; next; next = next.nextElementSibling) {\n if (!selector || next.matches(selector)) { found.push(next); }\n }\n return found;\n}\n\n/** The ancestors of `node` up to, and not including, `stop`, nearest first. */\nexport function parentsUntil(node, stop) {\n var found = [];\n\n for (var parent = node.parentElement; parent && parent !== stop; parent = parent.parentElement) {\n found.push(parent);\n }\n return found;\n}\n\n/**\n * The nodes the html parses into, detached. Parsed the way innerHTML parses,\n * so a <script> in it never runs, here or once it is in the page.\n */\nexport function parse(html) {\n var template = document.createElement('template');\n template.innerHTML = html;\n return Array.prototype.slice.call(template.content.childNodes);\n}\n\n/** The one element the html is, detached. */\nexport function create(html) {\n var nodes = parse(html.trim());\n\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].nodeType === 1) { return nodes[i]; }\n }\n return null;\n}\n\n/** An element of `tag`, with `attributes` and `text`. */\nexport function element(tag, attributes, text) {\n var node = document.createElement(tag);\n\n Object.keys(attributes || {}).forEach(function(name) {\n var value = attributes[name];\n if (value !== null && value !== undefined && value !== false) { node.setAttribute(name, value); }\n });\n if (text !== undefined && text !== null) { node.textContent = text; }\n\n return node;\n}\n\n/** Replace what `node` holds with `html`. A <script> in it does not run. */\nexport function setHtml(node, html) {\n node.innerHTML = html === undefined || html === null ? '' : String(html);\n return node;\n}\n\n/** Add one or several space separated classes. */\nexport function addClass(node, names) {\n split(names).forEach(function(name) { node.classList.add(name); });\n return node;\n}\n\nexport function removeClass(node, names) {\n split(names).forEach(function(name) { node.classList.remove(name); });\n return node;\n}\n\n/** Each class on, or off, or flipped when `on` is not given. */\nexport function toggleClass(node, names, state) {\n split(names).forEach(function(name) {\n if (state === undefined) {\n node.classList.toggle(name);\n } else {\n node.classList.toggle(name, !!state);\n }\n });\n return node;\n}\n\nexport function hasClass(node, name) {\n return !!node && node.nodeType === 1 && node.classList.contains(name);\n}\n\nfunction split(names) {\n return String(names || '').split(/\\s+/).filter(Boolean);\n}\n\n/** Take the class attribute off when there is nothing left in it. */\nexport function dropEmptyClass(node) {\n if (!node.getAttribute('class')) { node.removeAttribute('class'); }\n return node;\n}\n\n/** Take the style attribute off when there is nothing left in it. */\nexport function dropEmptyStyle(node) {\n if (!node.getAttribute('style')) { node.removeAttribute('style'); }\n return node;\n}\n\n/** Set attributes; a null or undefined value takes the attribute off. */\nexport function attr(node, attributes) {\n Object.keys(attributes).forEach(function(name) {\n var value = attributes[name];\n\n if (value === null || value === undefined) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, value);\n }\n });\n return node;\n}\n\n/**\n * Inline styles, by css property name. A number is pixels for the properties\n * that take a length, as jQuery had it; an empty string takes one off.\n */\nexport function css(node, styles) {\n Object.keys(styles).forEach(function(property) {\n var value = styles[property];\n\n if (typeof value === 'number' && !UNITLESS[property]) { value = value + 'px'; }\n node.style.setProperty(property, value === null || value === undefined ? '' : String(value));\n });\n return node;\n}\n\nvar UNITLESS = { opacity: true, 'z-index': true, 'flex-grow': true, 'flex-shrink': true, order: true };\n\n/** What an element of this tag shows as when nothing hides it. */\nvar defaultDisplays = {};\n\nfunction defaultDisplay(node) {\n var tag = node.nodeName;\n\n if (!defaultDisplays[tag]) {\n var probe = document.body.appendChild(document.createElement(tag));\n defaultDisplays[tag] = getComputedStyle(probe).display;\n probe.remove();\n if (defaultDisplays[tag] === 'none') { defaultDisplays[tag] = 'block'; }\n }\n return defaultDisplays[tag];\n}\n\n/** Show a node: its inline display:none off, and a display of its own if a stylesheet hides it. */\nexport function show(node) {\n node.style.removeProperty('display');\n if (getComputedStyle(node).display === 'none') { node.style.display = defaultDisplay(node); }\n return node;\n}\n\nexport function hide(node) {\n node.style.display = 'none';\n return node;\n}\n\n/** Show or hide; flip when `on` is not given. */\nexport function toggle(node, state) {\n if (state === undefined) { state = !visible(node); }\n return state ? show(node) : hide(node);\n}\n\n/** Whether a node takes up room: what jQuery's :visible meant. */\nexport function visible(node) {\n return !!(node.offsetWidth || node.offsetHeight || node.getClientRects().length);\n}\n\n/** The border box's width, fractions included. */\nexport function outerWidth(node) {\n return node.getBoundingClientRect().width;\n}\n\nexport function outerHeight(node) {\n return node.getBoundingClientRect().height;\n}\n\n/** The content box's height, which is what jQuery's height() gave. */\nexport function contentHeight(node) {\n var style = getComputedStyle(node);\n return node.clientHeight - parseFloat(style.paddingTop) - parseFloat(style.paddingBottom);\n}\n\n/** Where a node is on the page, not in the window. */\nexport function offset(node) {\n var box = node.getBoundingClientRect();\n return { top: box.top + window.pageYOffset, left: box.left + window.pageXOffset };\n}\n\n/** Its index among its parent's element children, those matching `selector` if given. */\nexport function indexIn(node, selector) {\n return children(node.parentElement, selector).indexOf(node);\n}\n\n/** Put `node` right after `reference`. */\nexport function insertAfter(node, reference) {\n reference.parentNode.insertBefore(node, reference.nextSibling);\n return node;\n}\n\n/** Replace `node` with what it holds. */\nexport function unwrap(node) {\n var parent = node.parentNode;\n\n while (node.firstChild) { parent.insertBefore(node.firstChild, node); }\n node.remove();\n}\n\n/** Put `node` inside `wrapper`, where `node` was. */\nexport function wrap(node, wrapper) {\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n return wrapper;\n}\n\n/**\n * Listen on `root` for `types` (space separated) on descendants that match\n * `selector`, with `this` the matched element, as jQuery's delegated\n * handlers had it. Hands back the listener, for removeEventListener; a\n * signal in `options` removes it too.\n */\nexport function delegate(root, types, selector, handler, options) {\n var listener = function(event) {\n var match = closest(event.target, selector, root);\n if (match && root.contains(match)) { return handler.call(match, event); }\n return undefined;\n };\n\n split(types).forEach(function(type) { root.addEventListener(type, listener, options); });\n return listener;\n}\n\n/** Listen for several space separated event types with one handler. */\nexport function on(target, types, handler, options) {\n split(types).forEach(function(type) { target.addEventListener(type, handler, options); });\n return handler;\n}\n\nexport function off(target, types, handler, options) {\n split(types).forEach(function(type) { target.removeEventListener(type, handler, options); });\n}\n\n/** A mouse event of `type` sent to `node`, the way a pointer would. */\nexport function fire(node, type) {\n node.dispatchEvent(new MouseEvent(type, { bubbles: type !== 'mouseenter' && type !== 'mouseleave' }));\n}\n\n/* ------------------------------------------------------------------\n * Taking a node away, visibly.\n *\n * The durations are jQuery's: 400 ms unless the caller says otherwise. `done` runs once the node is out of sight, which is\n * when the caller removes it; a node that is already out of sight is done at\n * once, on the next task, as jQuery had it.\n * ------------------------------------------------------------------ */\n\nvar DEFAULT_DURATION = 400;\n\nfunction animateAway(node, frames, duration, done) {\n duration = duration === undefined ? DEFAULT_DURATION : duration;\n\n var finish = function() {\n hide(node);\n if (done) { done(); }\n };\n\n if (!visible(node) || !node.animate || duration <= 0) {\n window.setTimeout(finish, 0);\n return;\n }\n\n var animation = node.animate(frames(getComputedStyle(node)), {\n duration: duration,\n easing: 'ease-in-out',\n });\n var called = false;\n var once = function() {\n if (called) { return; }\n called = true;\n finish();\n };\n\n animation.onfinish = once;\n animation.oncancel = once;\n}\n\n/** Fold a node up to nothing, then hide it. */\nexport function slideUp(node, duration, done) {\n if (typeof duration === 'function') {\n done = duration;\n duration = undefined;\n }\n\n node.style.overflow = 'hidden';\n animateAway(node, function(style) {\n return [\n {\n height: style.height,\n paddingTop: style.paddingTop,\n paddingBottom: style.paddingBottom,\n marginTop: style.marginTop,\n marginBottom: style.marginBottom,\n },\n { height: '0px', paddingTop: '0px', paddingBottom: '0px', marginTop: '0px', marginBottom: '0px' },\n ];\n }, duration, function() {\n node.style.removeProperty('overflow');\n if (done) { done(); }\n });\n}\n\n/** Fade a node out, then hide it. */\nexport function fadeOut(node, duration, done) {\n animateAway(node, function(style) {\n return [{ opacity: style.opacity }, { opacity: 0 }];\n }, duration, done);\n}\n\n/** Fade and fold a node, in height and, with `width`, sideways too, then hide it. */\nexport function shrinkAway(node, duration, done, width) {\n node.style.overflow = 'hidden';\n animateAway(node, function(style) {\n var from = { opacity: style.opacity, height: style.height };\n var to = { opacity: 0, height: '0px' };\n\n if (width) {\n from.width = style.width;\n to.width = '0px';\n }\n return [from, to];\n }, duration, function() {\n node.style.removeProperty('overflow');\n if (done) { done(); }\n });\n}\n", "/**\n * Text for grid-editor: what the text editor plugins share.\n *\n * Not a file a page loads. The build puts it at the top of each text editor\n * plugin - grideditor.tinymce.js, grideditor.ckeditor.js,\n * grideditor.summernote.js - and whichever of them loads first installs it:\n * a page with two editors has one of these.\n *\n * It is a feature plugin, `text`, that the `plugins` setting does not choose\n * (content_types does), and it is everything a text is to the editor: the\n * text block's drawer, the Text buttons in the toolbar, createText, opening\n * an editor on a click and closing it again with the host's attributes put\n * back, and making the host's plain content a text through the core's\n * `textTypes` hook.\n *\n * Each editor registers under GridEditor.texts, which is this file's own\n * registry and not a contract: an editor of a host's own is a feature plugin\n * of its own, as example/custom_editor.html shows.\n */\nimport { GridEditor } from '../grideditor.js';\nimport * as dom from '../dom.js';\n\n// However many editors a page loads, each with a copy of this file in its\n// classic script: the first one installs it\nif (!GridEditor.features.text) {\n\n Object.assign(GridEditor.locales.en, {\n 'text.add': 'Text',\n 'text.add_type': 'Text ({editor})',\n 'panel.editor': 'Editor',\n 'panel.kind_text': 'Text',\n });\n\n /**\n * What a content area's attributes were before its editor opened, and\n * once it had: the two readings closeText plays the host's changes\n * back from. Shared by every editor on the page, like the nodes.\n */\n var readBefore = new WeakMap();\n var readReady = new WeakMap();\n\n /** What a text editor puts on a content area while it is open, whenever it likes. */\n var EDITOR_CLASS = /^(mce-|cke|ck-|note-)|^(ck|active|ge-rte-active)$/;\n var EDITOR_ATTRIBUTE = /^(data-mce-|contenteditable$|spellcheck$)/;\n\n function attributesOf(element) {\n var found = {};\n Array.prototype.slice.call(element.attributes).forEach(function(attribute) {\n found[attribute.name] = attribute.value;\n });\n return found;\n }\n\n function classesIn(value) {\n return (value || '').split(/\\s+/).filter(function(name) {\n return name !== '' && !EDITOR_CLASS.test(name);\n });\n }\n\n /** The host's markup, with what changed from `ready` to `open` played back onto it. */\n function restoreAttributes(block, before, ready, open) {\n var result = Object.assign({}, before);\n\n Object.keys(Object.assign({}, ready, open)).forEach(function(name) {\n if (name === 'class' || EDITOR_ATTRIBUTE.test(name) || ready[name] === open[name]) { return; }\n\n if (open[name] === undefined) {\n delete result[name];\n } else {\n result[name] = open[name];\n }\n });\n\n var readyClasses = classesIn(ready['class']);\n var openClasses = classesIn(open['class']);\n var classes = classesIn(before['class']).filter(function(name) {\n return openClasses.indexOf(name) !== -1 || readyClasses.indexOf(name) === -1;\n });\n openClasses.forEach(function(name) {\n if (readyClasses.indexOf(name) === -1 && classes.indexOf(name) === -1) { classes.push(name); }\n });\n\n // In the host's order, class where it was: getHtml should not\n // shuffle a node's attributes because it was edited\n if (classes.length) { result['class'] = classes.join(' '); } else { delete result['class']; }\n\n Object.keys(attributesOf(block)).forEach(function(name) { block.removeAttribute(name); });\n Object.keys(result).forEach(function(name) { block.setAttribute(name, result[name]); });\n }\n\n function textFeature(ge) {\n\n var settings = ge.settings;\n var TEXTS = {};\n var warned = {};\n\n Object.keys(GridEditor.texts).forEach(function(type) {\n TEXTS[type] = GridEditor.texts[type](ge);\n });\n\n // Every editor loaded, in the order the page loaded them, unless the\n // host names the ones it wants\n if (!Array.isArray(settings.content_types)) { settings.content_types = Object.keys(TEXTS); }\n if (!Array.isArray(settings.text_tools)) { settings.text_tools = []; }\n if (!Array.isArray(settings.text_classes)) { settings.text_classes = []; }\n\n /** The text editors this editor offers, in content_types order: the ones loaded. */\n function offeredTexts() {\n return settings.content_types.filter(function(type) { return !!TEXTS[type]; });\n }\n\n /** What a text editor is called: its plugin's label, or its type. */\n function textLabel(type) {\n var text = TEXTS[type];\n return text && text.labelKey ? ge.t(text.labelKey) : type;\n }\n\n /** A detached content area of `type`, holding `content` or the editor's initial content. */\n function makeText(type, content) {\n var text = TEXTS[type];\n var block = dom.element('div', {\n 'class': 'ge-content ge-content-type-' + type,\n 'data-ge-content-type': type,\n });\n\n if (content && content.nodeType) {\n block.appendChild(content);\n } else {\n dom.setHtml(block, content !== undefined ? content : (text && text.initialContent) || '');\n }\n return block;\n }\n\n /**\n * createText(type?, options?): a content area of a text editor's,\n * detached unless a placement is given. The type is the first one\n * offered by default. `options.content` is its html.\n */\n function apiCreateText(type, options) {\n if (type && typeof type === 'object') {\n options = type;\n type = undefined;\n }\n options = options || {};\n type = type || offeredTexts()[0];\n\n if (!type || !TEXTS[type]) {\n if (!warned['createText:' + type]) {\n warned['createText:' + type] = true;\n ge.warn('createText: no text editor \"' + type + '\" is loaded; ' +\n 'load its plugin and name it in content_types');\n }\n return null;\n }\n\n return ge.place(makeText(type, options.content), 'text', options);\n }\n\n /** Whether a content area is a text of one of the editors loaded here. */\n function isOurs(block) {\n return !!TEXTS[block.getAttribute('data-ge-content-type')];\n }\n\n /** Open the editor on a text, once: until it is closed again. */\n function startText(block) {\n if (dom.hasClass(block, 'ge-rte-active')) { return; }\n\n // A content area nobody can see - a tab that is not the open one,\n // a closed accordion item - has no geometry for an editor to lay\n // its toolbar out against, and nothing anyone can type into\n if (!dom.visible(block)) { return; }\n\n // The attribute: it is markup, and the drawer reads it the same way\n var text = TEXTS[block.getAttribute('data-ge-content-type')];\n if (!text) { return; }\n\n // Not marked active, so the next click tries again: the library\n // may be loaded by then\n if (text.available && !text.available()) {\n if (text.missingKey) { console.error(ge.t(text.missingKey)); }\n return;\n }\n\n readBefore.set(block, attributesOf(block));\n readReady.delete(block);\n dom.addClass(block, 'ge-rte-active');\n text.start([block]);\n }\n\n function onClick() {\n startText(this);\n }\n\n /**\n * Close the text editor on one content area, and leave the content\n * area's own attributes as the host left them.\n *\n * An editor adds attributes of its own while it is open, and takes\n * them off again, more or less: CKEditor leaves aria-readonly behind.\n * tinyMCE does worse, and puts back every attribute as it was when it\n * opened, so an id, a class or a plugin's attribute given while it was\n * open is lost. So the attributes are read three times - before the\n * editor opens, once it has opened, and before it closes - and what\n * changed between the second and the third, the host's doing, is\n * played back onto the first, the host's markup. What the editor did\n * is left out either way.\n */\n function closeText(block) {\n var text = TEXTS[block.getAttribute('data-ge-content-type')];\n var before = readBefore.get(block);\n var open = before ? attributesOf(block) : null;\n\n // Every content area is told: one whose editor never\n // started is the plugin's to ignore\n if (text) { text.stop([block]); }\n\n // After stop, not before: an editor that restores the class\n // attribute it snapshotted would put ge-rte-active back\n dom.removeClass(block, 'ge-rte-active');\n\n if (before) {\n restoreAttributes(block, before, readReady.get(block) || before, open);\n readBefore.delete(block);\n readReady.delete(block);\n }\n }\n\n function createTextControls(textBlock) {\n var block = dom.child(textBlock, '.ge-content');\n var type = block.getAttribute('data-ge-content-type');\n var drawer = dom.element('div', { 'class': 'ge-tools-drawer ge-text-drawer' });\n textBlock.insertBefore(drawer, textBlock.firstChild);\n\n ge.createMoveTool(drawer);\n\n var details = ge.addSettingsTool(drawer, block, settings.text_classes);\n\n // Which editor edits it, first in its settings: something to\n // know about it, not something to do with it\n var general = dom.child(details, '.ge-details-general');\n var editor = dom.element('div', { 'class': 'ge-field ge-text-editor' });\n editor.appendChild(dom.element('span', { 'class': 'ge-field-label' }, ge.t('panel.editor')));\n editor.appendChild(dom.element('span', { 'class': 'ge-field-value' }, textLabel(type)));\n general.insertBefore(editor, general.firstChild);\n\n settings.text_tools.forEach(function(hostTool) {\n ge.createTool(drawer, hostTool.title || '', hostTool.className || '',\n hostTool.iconClass || 'bi bi-wrench', hostTool.on);\n });\n\n ge.createTool(drawer, ge.t('tool.delete_text'), 'ge-delete-text', 'bi bi-trash', function() {\n ge.deleteNode('text', block, ge.t('confirm.delete_text'), function(removed) {\n // Its editor lets go first: removed while open, it would\n // be left behind, attached to nothing\n closeText(block);\n dom.slideUp(textBlock, function() {\n textBlock.remove();\n removed();\n });\n });\n });\n }\n\n /** A drawer for each text of ours in a text block that has none yet. */\n function markTexts() {\n dom.all(ge.canvas, '.ge-text-block').forEach(function(textBlock) {\n if (dom.child(textBlock, '.ge-tools-drawer')) { return; }\n\n var block = dom.child(textBlock, '.ge-content');\n if (!block || !isOurs(block)) { return; }\n\n createTextControls(textBlock);\n });\n }\n\n var texts = offeredTexts();\n var clicks = null; // The delegated click listener, while editing\n\n return {\n methods: {\n createText: apiCreateText,\n },\n\n /**\n * The types this plugin edits, for the core: every editor loaded\n * is the owner of its texts, and the ones offered are what the\n * host's plain content can be made.\n */\n textTypes: function() {\n var offered = offeredTexts();\n var others = Object.keys(TEXTS).filter(function(type) { return offered.indexOf(type) === -1; });\n\n return offered.concat(others).map(function(type) {\n var text = TEXTS[type];\n\n return {\n type: type,\n label: textLabel(type),\n offered: offered.indexOf(type) !== -1,\n available: text.available ? function() { return text.available(); } : null,\n missingKey: text.missingKey,\n edit: function(block) {\n var textBlock = block.parentElement;\n if (dom.hasClass(textBlock, 'ge-text-block') && !dom.child(textBlock, '.ge-tools-drawer')) {\n createTextControls(textBlock);\n }\n\n startText(block);\n },\n };\n });\n },\n\n // A text block of each editor offered. Like a container, it goes\n // into a row of its own when clicked, or where it is dropped\n toolbar: texts.map(function(type) {\n return {\n label: function() {\n return texts.length > 1 ? ge.t('text.add_type', { editor: textLabel(type) }) : ge.t('text.add');\n },\n iconClass: TEXTS[type].iconClass,\n className: 'ge-add-text-button',\n kind: 'text',\n inColumn: true,\n create: function() { return makeText(type); },\n };\n }),\n\n onInit: function() {\n markTexts();\n\n if (clicks) { ge.canvas.removeEventListener('click', clicks); }\n clicks = dom.delegate(ge.canvas, 'click', '.ge-content', onClick);\n },\n\n // While the drawers and the text blocks are still there, as the\n // editors left them\n onBeforeDeinit: function() {\n dom.all(ge.canvas, '.ge-content').forEach(function(block) {\n if (isOurs(block)) { closeText(block); }\n });\n },\n\n onDeinit: function() {\n if (clicks) { ge.canvas.removeEventListener('click', clicks); }\n clicks = null;\n },\n\n // The first time only: an undo says ready again, and by then the\n // host may have changed the content area itself\n onContentReady: function(area) {\n if (readBefore.has(area) && !readReady.has(area)) {\n readReady.set(area, attributesOf(area));\n }\n },\n };\n }\n\n // Whatever the plugins setting says: content_types chooses the editors\n textFeature.always = true;\n\n GridEditor.features.text = textFeature;\n\n}\n", "/**\n * CKEditor for grid-editor's content areas.\n *\n * A text editor plugin: load this file after the editor, and CKEditor 5's\n * browser build after or before it, and a text of the ckeditor type is\n * edited with an inline CKEditor. What it can ask the editor for is the\n * handle its factory is called with, described in docs/plugins.md.\n *\n * <link rel=\"stylesheet\" href=\"ckeditor5/ckeditor5.css\">\n * <script src=\"ckeditor5/ckeditor5.umd.js\"></script>\n * <script src=\"dist/grideditor.min.js\"></script>\n * <script src=\"dist/plugins/grideditor.ckeditor.min.js\"></script>\n *\n * CKEditor 5 asks for a license key, GPL or a commercial one, which is the\n * host's to pass in ckeditor.config.\n *\n * It imports what every text editor shares - text blocks, the Text button,\n * createText, making the host's plain content a text - from\n * src/js/text/grideditor.text.js, which the build puts in its classic\n * script, installed once however many editors a page loads.\n */\nimport { GridEditor } from '../grideditor.js';\nimport * as dom from '../dom.js';\nimport '../text/grideditor.text.js';\n\nObject.assign(GridEditor.locales.en, {\n 'text.ckeditor': 'CKEditor',\n 'error.ckeditor_start': 'CKEditor could not start: {message}',\n 'warning.ckeditor_plugin': 'CKEditor has no plugin called {name}, so it is left out.',\n});\n\nvar INITIAL_CONTENT = '<p>Lorem initius... </p>';\n\n// What CKEditor 5 is started with when the host's config does not say. It\n// has no plugins of its own, so these are what a text can do. Names, looked\n// up on window.CKEDITOR.\nvar PLUGINS = [\n 'Essentials', 'Autoformat', 'Paragraph', 'Heading', 'Bold', 'Italic', 'Underline', 'Strikethrough',\n 'Link', 'AutoLink', 'List', 'BlockQuote', 'Indent', 'HorizontalLine', 'Table', 'TableToolbar',\n 'PasteFromOffice',\n];\n\nvar DEFAULTS = {\n toolbar: [\n 'undo', 'redo', '|', 'heading', '|', 'bold', 'italic', 'underline', 'strikethrough', '|',\n 'link', 'bulletedList', 'numberedList', 'blockQuote', '|', 'insertTable', 'horizontalLine',\n ],\n // CKEditor's own headings start at h2, and make every h1 in the content\n // an h2: a column's text keeps the headings it has\n heading: {\n options: [\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\n ].concat([1, 2, 3, 4, 5, 6].map(function(level) {\n return {\n model: 'heading' + level, view: 'h' + level,\n title: 'Heading ' + level, class: 'ck-heading_heading' + level,\n };\n })),\n },\n table: { contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells'] },\n};\n\n// What this file keeps about a content area: its editor once it is ready,\n// the start that is still to have one, and a promise of the content area\n// being free again, with no editor starting or being destroyed on it:\n// CKEditor does both asynchronously, and two at once on one element clash\nvar editors = new WeakMap();\nvar starting = new WeakMap();\nvar busy = new WeakMap();\n\n/** The plugins the config names, as CKEditor wants them: constructors. */\nfunction pluginsFor(ge, names) {\n return names.map(function(plugin) {\n if (typeof plugin !== 'string') { return plugin; }\n if (!window.CKEDITOR[plugin]) { ge.warn(ge.t('warning.ckeditor_plugin', { name: plugin })); }\n return window.CKEDITOR[plugin];\n }).filter(Boolean);\n}\n\nGridEditor.texts.ckeditor = function(ge) {\n\n /**\n * Take the editor off a content area and leave its content behind, now:\n * getHtml reads the content area the moment its editor is stopped.\n *\n * CKEditor puts the attributes back as destroy() is called, but its\n * content only as it finishes, and then as nothing: it empties the\n * element unless told otherwise. So the content goes back in twice, now\n * and once CKEditor is done. The promise is of that.\n */\n function destroy(contentArea, editor) {\n var data = editor.getData();\n var done = editor.destroy().catch(function() {}).then(function() {\n contentArea.innerHTML = data;\n });\n\n contentArea.innerHTML = data;\n return done;\n }\n\n return {\n labelKey: 'text.ckeditor',\n initialContent: INITIAL_CONTENT,\n missingKey: 'error.ckeditor_missing',\n\n // CKEditor 4 is window.CKEDITOR too, without an InlineEditor\n available: function() { return !!(window.CKEDITOR && window.CKEDITOR.InlineEditor); },\n\n start: function(contentAreas) {\n var settings = ge.settings;\n var userConfig = (settings.ckeditor && settings.ckeditor.config) ? settings.ckeditor.config : {};\n\n contentAreas.forEach(function(contentArea) {\n if (dom.hasClass(contentArea, 'active')) { return; }\n\n if (contentArea.innerHTML == INITIAL_CONTENT) {\n contentArea.innerHTML = '';\n }\n dom.addClass(contentArea, 'active');\n\n var configuration = Object.assign({}, DEFAULTS, userConfig);\n configuration.plugins = pluginsFor(ge, userConfig.plugins || PLUGINS);\n\n var ticket = {};\n starting.set(contentArea, ticket);\n\n var run = (busy.get(contentArea) || Promise.resolve()).then(function() {\n // Stopped again while it waited for the last editor to go\n if (starting.get(contentArea) !== ticket) { return null; }\n\n return window.CKEDITOR.InlineEditor.create(contentArea, configuration);\n }).then(function(editor) {\n if (!editor) { return null; }\n\n // Stopped while it started, so it goes again\n if (starting.get(contentArea) !== ticket) {\n return destroy(contentArea, editor);\n }\n starting.delete(contentArea);\n editors.set(contentArea, editor);\n\n // The editor owns what is inside the content area now,\n // so the grid editor is told to put its own furniture back\n ge.textReady(contentArea);\n\n editor.editing.view.focus();\n return null;\n }).catch(function(error) {\n // A licenseKey missing is the likely one\n if (starting.get(contentArea) === ticket) {\n starting.delete(contentArea);\n dom.removeClass(contentArea, 'active');\n }\n console.error(ge.t('error.ckeditor_start', { message: (error && error.message) || error }));\n });\n busy.set(contentArea, run);\n });\n },\n\n stop: function(contentAreas) {\n contentAreas.filter(function(contentArea) {\n return dom.hasClass(contentArea, 'active');\n }).forEach(function(contentArea) {\n // This content area's editor, and no other: the other\n // CKEditors on the page, the host's own included, stay\n var editor = editors.get(contentArea);\n editors.delete(contentArea);\n // One still starting sees this and goes as it is ready\n starting.delete(contentArea);\n\n if (editor) { busy.set(contentArea, destroy(contentArea, editor)); }\n\n dom.removeClass(contentArea, 'active');\n });\n },\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * What a plugin's or a locale's classic script imports in place of the\n * editor: the GridEditor the page already loaded.\n *\n * The build points `import { GridEditor } from '../grideditor.js'` here for\n * the classic scripts, so each registers on the editor the page has rather\n * than bringing its own. Loaded before the editor there is nothing to\n * register on, and saying so is better than a TypeError three calls later.\n */\nvar GridEditor = window.GridEditor;\n\nif (!GridEditor || typeof GridEditor.get !== 'function') {\n throw new Error('grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, ' +\n 'its locales and grideditor.jquery.js');\n}\n\nexport { GridEditor };\nexport default GridEditor;\n", "/**\n * The DOM, the way grid-editor uses it.\n *\n * Small helpers over the browser's own API, for the core and the shipped\n * plugins. Not a public API: a plugin of a host's own is free to write its\n * DOM code however it likes, and this file makes no promise to it.\n *\n * Stateless on purpose. The build puts a copy of this file in each plugin's\n * classic script, so anything kept here would be kept once per copy; a\n * module that needs to remember something about a node keeps its own\n * WeakMap.\n */\n\n/** Every element under `root` matching `selector`, as an array. */\nexport function all(root, selector) {\n return root ? Array.prototype.slice.call(root.querySelectorAll(selector)) : [];\n}\n\n/** The first element under `root` matching `selector`, or null. */\nexport function one(root, selector) {\n return root ? root.querySelector(selector) : null;\n}\n\n/** `root` itself when it matches, then every element under it that does. */\nexport function selfAndAll(root, selector) {\n if (!root) { return []; }\n\n var found = all(root, selector);\n if (root.nodeType === 1 && root.matches(selector)) { found.unshift(root); }\n return found;\n}\n\n/** The element children of `node`, those matching `selector` if one is given. */\nexport function children(node, selector) {\n if (!node) { return []; }\n\n return Array.prototype.filter.call(node.children, function(each) {\n return !selector || each.matches(selector);\n });\n}\n\n/** The first element child matching `selector`, or null. */\nexport function child(node, selector) {\n return children(node, selector)[0] || null;\n}\n\n/** The nearest ancestor-or-self matching `selector` below `stopAt`, or null. */\nexport function closest(node, selector, stopAt) {\n var found = node && node.nodeType === 1 ? node.closest(selector) : null;\n\n if (found && stopAt && found !== stopAt && !stopAt.contains(found)) { return null; }\n return found;\n}\n\n/** Whether `node` is an element matching `selector`. */\nexport function is(node, selector) {\n return !!node && node.nodeType === 1 && node.matches(selector);\n}\n\n/** Whether `node` is in the document. */\nexport function attached(node) {\n return !!node && document.documentElement.contains(node);\n}\n\n/** The element siblings after `node` that match `selector`. */\nexport function nextAll(node, selector) {\n var found = [];\n\n for (var next = node.nextElementSibling; next; next = next.nextElementSibling) {\n if (!selector || next.matches(selector)) { found.push(next); }\n }\n return found;\n}\n\n/** The ancestors of `node` up to, and not including, `stop`, nearest first. */\nexport function parentsUntil(node, stop) {\n var found = [];\n\n for (var parent = node.parentElement; parent && parent !== stop; parent = parent.parentElement) {\n found.push(parent);\n }\n return found;\n}\n\n/**\n * The nodes the html parses into, detached. Parsed the way innerHTML parses,\n * so a <script> in it never runs, here or once it is in the page.\n */\nexport function parse(html) {\n var template = document.createElement('template');\n template.innerHTML = html;\n return Array.prototype.slice.call(template.content.childNodes);\n}\n\n/** The one element the html is, detached. */\nexport function create(html) {\n var nodes = parse(html.trim());\n\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].nodeType === 1) { return nodes[i]; }\n }\n return null;\n}\n\n/** An element of `tag`, with `attributes` and `text`. */\nexport function element(tag, attributes, text) {\n var node = document.createElement(tag);\n\n Object.keys(attributes || {}).forEach(function(name) {\n var value = attributes[name];\n if (value !== null && value !== undefined && value !== false) { node.setAttribute(name, value); }\n });\n if (text !== undefined && text !== null) { node.textContent = text; }\n\n return node;\n}\n\n/** Replace what `node` holds with `html`. A <script> in it does not run. */\nexport function setHtml(node, html) {\n node.innerHTML = html === undefined || html === null ? '' : String(html);\n return node;\n}\n\n/** Add one or several space separated classes. */\nexport function addClass(node, names) {\n split(names).forEach(function(name) { node.classList.add(name); });\n return node;\n}\n\nexport function removeClass(node, names) {\n split(names).forEach(function(name) { node.classList.remove(name); });\n return node;\n}\n\n/** Each class on, or off, or flipped when `on` is not given. */\nexport function toggleClass(node, names, state) {\n split(names).forEach(function(name) {\n if (state === undefined) {\n node.classList.toggle(name);\n } else {\n node.classList.toggle(name, !!state);\n }\n });\n return node;\n}\n\nexport function hasClass(node, name) {\n return !!node && node.nodeType === 1 && node.classList.contains(name);\n}\n\nfunction split(names) {\n return String(names || '').split(/\\s+/).filter(Boolean);\n}\n\n/** Take the class attribute off when there is nothing left in it. */\nexport function dropEmptyClass(node) {\n if (!node.getAttribute('class')) { node.removeAttribute('class'); }\n return node;\n}\n\n/** Take the style attribute off when there is nothing left in it. */\nexport function dropEmptyStyle(node) {\n if (!node.getAttribute('style')) { node.removeAttribute('style'); }\n return node;\n}\n\n/** Set attributes; a null or undefined value takes the attribute off. */\nexport function attr(node, attributes) {\n Object.keys(attributes).forEach(function(name) {\n var value = attributes[name];\n\n if (value === null || value === undefined) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, value);\n }\n });\n return node;\n}\n\n/**\n * Inline styles, by css property name. A number is pixels for the properties\n * that take a length, as jQuery had it; an empty string takes one off.\n */\nexport function css(node, styles) {\n Object.keys(styles).forEach(function(property) {\n var value = styles[property];\n\n if (typeof value === 'number' && !UNITLESS[property]) { value = value + 'px'; }\n node.style.setProperty(property, value === null || value === undefined ? '' : String(value));\n });\n return node;\n}\n\nvar UNITLESS = { opacity: true, 'z-index': true, 'flex-grow': true, 'flex-shrink': true, order: true };\n\n/** What an element of this tag shows as when nothing hides it. */\nvar defaultDisplays = {};\n\nfunction defaultDisplay(node) {\n var tag = node.nodeName;\n\n if (!defaultDisplays[tag]) {\n var probe = document.body.appendChild(document.createElement(tag));\n defaultDisplays[tag] = getComputedStyle(probe).display;\n probe.remove();\n if (defaultDisplays[tag] === 'none') { defaultDisplays[tag] = 'block'; }\n }\n return defaultDisplays[tag];\n}\n\n/** Show a node: its inline display:none off, and a display of its own if a stylesheet hides it. */\nexport function show(node) {\n node.style.removeProperty('display');\n if (getComputedStyle(node).display === 'none') { node.style.display = defaultDisplay(node); }\n return node;\n}\n\nexport function hide(node) {\n node.style.display = 'none';\n return node;\n}\n\n/** Show or hide; flip when `on` is not given. */\nexport function toggle(node, state) {\n if (state === undefined) { state = !visible(node); }\n return state ? show(node) : hide(node);\n}\n\n/** Whether a node takes up room: what jQuery's :visible meant. */\nexport function visible(node) {\n return !!(node.offsetWidth || node.offsetHeight || node.getClientRects().length);\n}\n\n/** The border box's width, fractions included. */\nexport function outerWidth(node) {\n return node.getBoundingClientRect().width;\n}\n\nexport function outerHeight(node) {\n return node.getBoundingClientRect().height;\n}\n\n/** The content box's height, which is what jQuery's height() gave. */\nexport function contentHeight(node) {\n var style = getComputedStyle(node);\n return node.clientHeight - parseFloat(style.paddingTop) - parseFloat(style.paddingBottom);\n}\n\n/** Where a node is on the page, not in the window. */\nexport function offset(node) {\n var box = node.getBoundingClientRect();\n return { top: box.top + window.pageYOffset, left: box.left + window.pageXOffset };\n}\n\n/** Its index among its parent's element children, those matching `selector` if given. */\nexport function indexIn(node, selector) {\n return children(node.parentElement, selector).indexOf(node);\n}\n\n/** Put `node` right after `reference`. */\nexport function insertAfter(node, reference) {\n reference.parentNode.insertBefore(node, reference.nextSibling);\n return node;\n}\n\n/** Replace `node` with what it holds. */\nexport function unwrap(node) {\n var parent = node.parentNode;\n\n while (node.firstChild) { parent.insertBefore(node.firstChild, node); }\n node.remove();\n}\n\n/** Put `node` inside `wrapper`, where `node` was. */\nexport function wrap(node, wrapper) {\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n return wrapper;\n}\n\n/**\n * Listen on `root` for `types` (space separated) on descendants that match\n * `selector`, with `this` the matched element, as jQuery's delegated\n * handlers had it. Hands back the listener, for removeEventListener; a\n * signal in `options` removes it too.\n */\nexport function delegate(root, types, selector, handler, options) {\n var listener = function(event) {\n var match = closest(event.target, selector, root);\n if (match && root.contains(match)) { return handler.call(match, event); }\n return undefined;\n };\n\n split(types).forEach(function(type) { root.addEventListener(type, listener, options); });\n return listener;\n}\n\n/** Listen for several space separated event types with one handler. */\nexport function on(target, types, handler, options) {\n split(types).forEach(function(type) { target.addEventListener(type, handler, options); });\n return handler;\n}\n\nexport function off(target, types, handler, options) {\n split(types).forEach(function(type) { target.removeEventListener(type, handler, options); });\n}\n\n/** A mouse event of `type` sent to `node`, the way a pointer would. */\nexport function fire(node, type) {\n node.dispatchEvent(new MouseEvent(type, { bubbles: type !== 'mouseenter' && type !== 'mouseleave' }));\n}\n\n/* ------------------------------------------------------------------\n * Taking a node away, visibly.\n *\n * The durations are jQuery's: 400 ms unless the caller says otherwise. `done` runs once the node is out of sight, which is\n * when the caller removes it; a node that is already out of sight is done at\n * once, on the next task, as jQuery had it.\n * ------------------------------------------------------------------ */\n\nvar DEFAULT_DURATION = 400;\n\nfunction animateAway(node, frames, duration, done) {\n duration = duration === undefined ? DEFAULT_DURATION : duration;\n\n var finish = function() {\n hide(node);\n if (done) { done(); }\n };\n\n if (!visible(node) || !node.animate || duration <= 0) {\n window.setTimeout(finish, 0);\n return;\n }\n\n var animation = node.animate(frames(getComputedStyle(node)), {\n duration: duration,\n easing: 'ease-in-out',\n });\n var called = false;\n var once = function() {\n if (called) { return; }\n called = true;\n finish();\n };\n\n animation.onfinish = once;\n animation.oncancel = once;\n}\n\n/** Fold a node up to nothing, then hide it. */\nexport function slideUp(node, duration, done) {\n if (typeof duration === 'function') {\n done = duration;\n duration = undefined;\n }\n\n node.style.overflow = 'hidden';\n animateAway(node, function(style) {\n return [\n {\n height: style.height,\n paddingTop: style.paddingTop,\n paddingBottom: style.paddingBottom,\n marginTop: style.marginTop,\n marginBottom: style.marginBottom,\n },\n { height: '0px', paddingTop: '0px', paddingBottom: '0px', marginTop: '0px', marginBottom: '0px' },\n ];\n }, duration, function() {\n node.style.removeProperty('overflow');\n if (done) { done(); }\n });\n}\n\n/** Fade a node out, then hide it. */\nexport function fadeOut(node, duration, done) {\n animateAway(node, function(style) {\n return [{ opacity: style.opacity }, { opacity: 0 }];\n }, duration, done);\n}\n\n/** Fade and fold a node, in height and, with `width`, sideways too, then hide it. */\nexport function shrinkAway(node, duration, done, width) {\n node.style.overflow = 'hidden';\n animateAway(node, function(style) {\n var from = { opacity: style.opacity, height: style.height };\n var to = { opacity: 0, height: '0px' };\n\n if (width) {\n from.width = style.width;\n to.width = '0px';\n }\n return [from, to];\n }, duration, function() {\n node.style.removeProperty('overflow');\n if (done) { done(); }\n });\n}\n", "/**\n * Text for grid-editor: what the text editor plugins share.\n *\n * Not a file a page loads. The build puts it at the top of each text editor\n * plugin - grideditor.tinymce.js, grideditor.ckeditor.js,\n * grideditor.summernote.js - and whichever of them loads first installs it:\n * a page with two editors has one of these.\n *\n * It is a feature plugin, `text`, that the `plugins` setting does not choose\n * (content_types does), and it is everything a text is to the editor: the\n * text block's drawer, the Text buttons in the toolbar, createText, opening\n * an editor on a click and closing it again with the host's attributes put\n * back, and making the host's plain content a text through the core's\n * `textTypes` hook.\n *\n * Each editor registers under GridEditor.texts, which is this file's own\n * registry and not a contract: an editor of a host's own is a feature plugin\n * of its own, as example/custom_editor.html shows.\n */\nimport { GridEditor } from '../grideditor.js';\nimport * as dom from '../dom.js';\n\n// However many editors a page loads, each with a copy of this file in its\n// classic script: the first one installs it\nif (!GridEditor.features.text) {\n\n Object.assign(GridEditor.locales.en, {\n 'text.add': 'Text',\n 'text.add_type': 'Text ({editor})',\n 'panel.editor': 'Editor',\n 'panel.kind_text': 'Text',\n });\n\n /**\n * What a content area's attributes were before its editor opened, and\n * once it had: the two readings closeText plays the host's changes\n * back from. Shared by every editor on the page, like the nodes.\n */\n var readBefore = new WeakMap();\n var readReady = new WeakMap();\n\n /** What a text editor puts on a content area while it is open, whenever it likes. */\n var EDITOR_CLASS = /^(mce-|cke|ck-|note-)|^(ck|active|ge-rte-active)$/;\n var EDITOR_ATTRIBUTE = /^(data-mce-|contenteditable$|spellcheck$)/;\n\n function attributesOf(element) {\n var found = {};\n Array.prototype.slice.call(element.attributes).forEach(function(attribute) {\n found[attribute.name] = attribute.value;\n });\n return found;\n }\n\n function classesIn(value) {\n return (value || '').split(/\\s+/).filter(function(name) {\n return name !== '' && !EDITOR_CLASS.test(name);\n });\n }\n\n /** The host's markup, with what changed from `ready` to `open` played back onto it. */\n function restoreAttributes(block, before, ready, open) {\n var result = Object.assign({}, before);\n\n Object.keys(Object.assign({}, ready, open)).forEach(function(name) {\n if (name === 'class' || EDITOR_ATTRIBUTE.test(name) || ready[name] === open[name]) { return; }\n\n if (open[name] === undefined) {\n delete result[name];\n } else {\n result[name] = open[name];\n }\n });\n\n var readyClasses = classesIn(ready['class']);\n var openClasses = classesIn(open['class']);\n var classes = classesIn(before['class']).filter(function(name) {\n return openClasses.indexOf(name) !== -1 || readyClasses.indexOf(name) === -1;\n });\n openClasses.forEach(function(name) {\n if (readyClasses.indexOf(name) === -1 && classes.indexOf(name) === -1) { classes.push(name); }\n });\n\n // In the host's order, class where it was: getHtml should not\n // shuffle a node's attributes because it was edited\n if (classes.length) { result['class'] = classes.join(' '); } else { delete result['class']; }\n\n Object.keys(attributesOf(block)).forEach(function(name) { block.removeAttribute(name); });\n Object.keys(result).forEach(function(name) { block.setAttribute(name, result[name]); });\n }\n\n function textFeature(ge) {\n\n var settings = ge.settings;\n var TEXTS = {};\n var warned = {};\n\n Object.keys(GridEditor.texts).forEach(function(type) {\n TEXTS[type] = GridEditor.texts[type](ge);\n });\n\n // Every editor loaded, in the order the page loaded them, unless the\n // host names the ones it wants\n if (!Array.isArray(settings.content_types)) { settings.content_types = Object.keys(TEXTS); }\n if (!Array.isArray(settings.text_tools)) { settings.text_tools = []; }\n if (!Array.isArray(settings.text_classes)) { settings.text_classes = []; }\n\n /** The text editors this editor offers, in content_types order: the ones loaded. */\n function offeredTexts() {\n return settings.content_types.filter(function(type) { return !!TEXTS[type]; });\n }\n\n /** What a text editor is called: its plugin's label, or its type. */\n function textLabel(type) {\n var text = TEXTS[type];\n return text && text.labelKey ? ge.t(text.labelKey) : type;\n }\n\n /** A detached content area of `type`, holding `content` or the editor's initial content. */\n function makeText(type, content) {\n var text = TEXTS[type];\n var block = dom.element('div', {\n 'class': 'ge-content ge-content-type-' + type,\n 'data-ge-content-type': type,\n });\n\n if (content && content.nodeType) {\n block.appendChild(content);\n } else {\n dom.setHtml(block, content !== undefined ? content : (text && text.initialContent) || '');\n }\n return block;\n }\n\n /**\n * createText(type?, options?): a content area of a text editor's,\n * detached unless a placement is given. The type is the first one\n * offered by default. `options.content` is its html.\n */\n function apiCreateText(type, options) {\n if (type && typeof type === 'object') {\n options = type;\n type = undefined;\n }\n options = options || {};\n type = type || offeredTexts()[0];\n\n if (!type || !TEXTS[type]) {\n if (!warned['createText:' + type]) {\n warned['createText:' + type] = true;\n ge.warn('createText: no text editor \"' + type + '\" is loaded; ' +\n 'load its plugin and name it in content_types');\n }\n return null;\n }\n\n return ge.place(makeText(type, options.content), 'text', options);\n }\n\n /** Whether a content area is a text of one of the editors loaded here. */\n function isOurs(block) {\n return !!TEXTS[block.getAttribute('data-ge-content-type')];\n }\n\n /** Open the editor on a text, once: until it is closed again. */\n function startText(block) {\n if (dom.hasClass(block, 'ge-rte-active')) { return; }\n\n // A content area nobody can see - a tab that is not the open one,\n // a closed accordion item - has no geometry for an editor to lay\n // its toolbar out against, and nothing anyone can type into\n if (!dom.visible(block)) { return; }\n\n // The attribute: it is markup, and the drawer reads it the same way\n var text = TEXTS[block.getAttribute('data-ge-content-type')];\n if (!text) { return; }\n\n // Not marked active, so the next click tries again: the library\n // may be loaded by then\n if (text.available && !text.available()) {\n if (text.missingKey) { console.error(ge.t(text.missingKey)); }\n return;\n }\n\n readBefore.set(block, attributesOf(block));\n readReady.delete(block);\n dom.addClass(block, 'ge-rte-active');\n text.start([block]);\n }\n\n function onClick() {\n startText(this);\n }\n\n /**\n * Close the text editor on one content area, and leave the content\n * area's own attributes as the host left them.\n *\n * An editor adds attributes of its own while it is open, and takes\n * them off again, more or less: CKEditor leaves aria-readonly behind.\n * tinyMCE does worse, and puts back every attribute as it was when it\n * opened, so an id, a class or a plugin's attribute given while it was\n * open is lost. So the attributes are read three times - before the\n * editor opens, once it has opened, and before it closes - and what\n * changed between the second and the third, the host's doing, is\n * played back onto the first, the host's markup. What the editor did\n * is left out either way.\n */\n function closeText(block) {\n var text = TEXTS[block.getAttribute('data-ge-content-type')];\n var before = readBefore.get(block);\n var open = before ? attributesOf(block) : null;\n\n // Every content area is told: one whose editor never\n // started is the plugin's to ignore\n if (text) { text.stop([block]); }\n\n // After stop, not before: an editor that restores the class\n // attribute it snapshotted would put ge-rte-active back\n dom.removeClass(block, 'ge-rte-active');\n\n if (before) {\n restoreAttributes(block, before, readReady.get(block) || before, open);\n readBefore.delete(block);\n readReady.delete(block);\n }\n }\n\n function createTextControls(textBlock) {\n var block = dom.child(textBlock, '.ge-content');\n var type = block.getAttribute('data-ge-content-type');\n var drawer = dom.element('div', { 'class': 'ge-tools-drawer ge-text-drawer' });\n textBlock.insertBefore(drawer, textBlock.firstChild);\n\n ge.createMoveTool(drawer);\n\n var details = ge.addSettingsTool(drawer, block, settings.text_classes);\n\n // Which editor edits it, first in its settings: something to\n // know about it, not something to do with it\n var general = dom.child(details, '.ge-details-general');\n var editor = dom.element('div', { 'class': 'ge-field ge-text-editor' });\n editor.appendChild(dom.element('span', { 'class': 'ge-field-label' }, ge.t('panel.editor')));\n editor.appendChild(dom.element('span', { 'class': 'ge-field-value' }, textLabel(type)));\n general.insertBefore(editor, general.firstChild);\n\n settings.text_tools.forEach(function(hostTool) {\n ge.createTool(drawer, hostTool.title || '', hostTool.className || '',\n hostTool.iconClass || 'bi bi-wrench', hostTool.on);\n });\n\n ge.createTool(drawer, ge.t('tool.delete_text'), 'ge-delete-text', 'bi bi-trash', function() {\n ge.deleteNode('text', block, ge.t('confirm.delete_text'), function(removed) {\n // Its editor lets go first: removed while open, it would\n // be left behind, attached to nothing\n closeText(block);\n dom.slideUp(textBlock, function() {\n textBlock.remove();\n removed();\n });\n });\n });\n }\n\n /** A drawer for each text of ours in a text block that has none yet. */\n function markTexts() {\n dom.all(ge.canvas, '.ge-text-block').forEach(function(textBlock) {\n if (dom.child(textBlock, '.ge-tools-drawer')) { return; }\n\n var block = dom.child(textBlock, '.ge-content');\n if (!block || !isOurs(block)) { return; }\n\n createTextControls(textBlock);\n });\n }\n\n var texts = offeredTexts();\n var clicks = null; // The delegated click listener, while editing\n\n return {\n methods: {\n createText: apiCreateText,\n },\n\n /**\n * The types this plugin edits, for the core: every editor loaded\n * is the owner of its texts, and the ones offered are what the\n * host's plain content can be made.\n */\n textTypes: function() {\n var offered = offeredTexts();\n var others = Object.keys(TEXTS).filter(function(type) { return offered.indexOf(type) === -1; });\n\n return offered.concat(others).map(function(type) {\n var text = TEXTS[type];\n\n return {\n type: type,\n label: textLabel(type),\n offered: offered.indexOf(type) !== -1,\n available: text.available ? function() { return text.available(); } : null,\n missingKey: text.missingKey,\n edit: function(block) {\n var textBlock = block.parentElement;\n if (dom.hasClass(textBlock, 'ge-text-block') && !dom.child(textBlock, '.ge-tools-drawer')) {\n createTextControls(textBlock);\n }\n\n startText(block);\n },\n };\n });\n },\n\n // A text block of each editor offered. Like a container, it goes\n // into a row of its own when clicked, or where it is dropped\n toolbar: texts.map(function(type) {\n return {\n label: function() {\n return texts.length > 1 ? ge.t('text.add_type', { editor: textLabel(type) }) : ge.t('text.add');\n },\n iconClass: TEXTS[type].iconClass,\n className: 'ge-add-text-button',\n kind: 'text',\n group: 'content',\n inColumn: true,\n create: function() { return makeText(type); },\n };\n }),\n\n onInit: function() {\n markTexts();\n\n if (clicks) { ge.canvas.removeEventListener('click', clicks); }\n clicks = dom.delegate(ge.canvas, 'click', '.ge-content', onClick);\n },\n\n // While the drawers and the text blocks are still there, as the\n // editors left them\n onBeforeDeinit: function() {\n dom.all(ge.canvas, '.ge-content').forEach(function(block) {\n if (isOurs(block)) { closeText(block); }\n });\n },\n\n onDeinit: function() {\n if (clicks) { ge.canvas.removeEventListener('click', clicks); }\n clicks = null;\n },\n\n // The first time only: an undo says ready again, and by then the\n // host may have changed the content area itself\n onContentReady: function(area) {\n if (readBefore.has(area) && !readReady.has(area)) {\n readReady.set(area, attributesOf(area));\n }\n },\n };\n }\n\n // Whatever the plugins setting says: content_types chooses the editors\n textFeature.always = true;\n\n GridEditor.features.text = textFeature;\n\n}\n", "/**\n * CKEditor for grid-editor's content areas.\n *\n * A text editor plugin: load this file after the editor, and CKEditor 5's\n * browser build after or before it, and a text of the ckeditor type is\n * edited with an inline CKEditor. What it can ask the editor for is the\n * handle its factory is called with, described in docs/plugins.md.\n *\n * <link rel=\"stylesheet\" href=\"ckeditor5/ckeditor5.css\">\n * <script src=\"ckeditor5/ckeditor5.umd.js\"></script>\n * <script src=\"dist/grideditor.min.js\"></script>\n * <script src=\"dist/plugins/grideditor.ckeditor.min.js\"></script>\n *\n * CKEditor 5 asks for a license key, GPL or a commercial one, which is the\n * host's to pass in ckeditor.config.\n *\n * It imports what every text editor shares - text blocks, the Text button,\n * createText, making the host's plain content a text - from\n * src/js/text/grideditor.text.js, which the build puts in its classic\n * script, installed once however many editors a page loads.\n */\nimport { GridEditor } from '../grideditor.js';\nimport * as dom from '../dom.js';\nimport '../text/grideditor.text.js';\n\nObject.assign(GridEditor.locales.en, {\n 'text.ckeditor': 'CKEditor',\n 'error.ckeditor_start': 'CKEditor could not start: {message}',\n 'warning.ckeditor_plugin': 'CKEditor has no plugin called {name}, so it is left out.',\n});\n\nvar INITIAL_CONTENT = '<p>Lorem initius... </p>';\n\n// What CKEditor 5 is started with when the host's config does not say. It\n// has no plugins of its own, so these are what a text can do. Names, looked\n// up on window.CKEDITOR.\nvar PLUGINS = [\n 'Essentials', 'Autoformat', 'Paragraph', 'Heading', 'Bold', 'Italic', 'Underline', 'Strikethrough',\n 'Link', 'AutoLink', 'List', 'BlockQuote', 'Indent', 'HorizontalLine', 'Table', 'TableToolbar',\n 'PasteFromOffice',\n];\n\nvar DEFAULTS = {\n toolbar: [\n 'undo', 'redo', '|', 'heading', '|', 'bold', 'italic', 'underline', 'strikethrough', '|',\n 'link', 'bulletedList', 'numberedList', 'blockQuote', '|', 'insertTable', 'horizontalLine',\n ],\n // CKEditor's own headings start at h2, and make every h1 in the content\n // an h2: a column's text keeps the headings it has\n heading: {\n options: [\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\n ].concat([1, 2, 3, 4, 5, 6].map(function(level) {\n return {\n model: 'heading' + level, view: 'h' + level,\n title: 'Heading ' + level, class: 'ck-heading_heading' + level,\n };\n })),\n },\n table: { contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells'] },\n};\n\n// What this file keeps about a content area: its editor once it is ready,\n// the start that is still to have one, and a promise of the content area\n// being free again, with no editor starting or being destroyed on it:\n// CKEditor does both asynchronously, and two at once on one element clash\nvar editors = new WeakMap();\nvar starting = new WeakMap();\nvar busy = new WeakMap();\n\n/** The plugins the config names, as CKEditor wants them: constructors. */\nfunction pluginsFor(ge, names) {\n return names.map(function(plugin) {\n if (typeof plugin !== 'string') { return plugin; }\n if (!window.CKEDITOR[plugin]) { ge.warn(ge.t('warning.ckeditor_plugin', { name: plugin })); }\n return window.CKEDITOR[plugin];\n }).filter(Boolean);\n}\n\nGridEditor.texts.ckeditor = function(ge) {\n\n /**\n * Take the editor off a content area and leave its content behind, now:\n * getHtml reads the content area the moment its editor is stopped.\n *\n * CKEditor puts the attributes back as destroy() is called, but its\n * content only as it finishes, and then as nothing: it empties the\n * element unless told otherwise. So the content goes back in twice, now\n * and once CKEditor is done. The promise is of that.\n */\n function destroy(contentArea, editor) {\n var data = editor.getData();\n var done = editor.destroy().catch(function() {}).then(function() {\n contentArea.innerHTML = data;\n });\n\n contentArea.innerHTML = data;\n return done;\n }\n\n return {\n labelKey: 'text.ckeditor',\n initialContent: INITIAL_CONTENT,\n missingKey: 'error.ckeditor_missing',\n\n // CKEditor 4 is window.CKEDITOR too, without an InlineEditor\n available: function() { return !!(window.CKEDITOR && window.CKEDITOR.InlineEditor); },\n\n start: function(contentAreas) {\n var settings = ge.settings;\n var userConfig = (settings.ckeditor && settings.ckeditor.config) ? settings.ckeditor.config : {};\n\n contentAreas.forEach(function(contentArea) {\n if (dom.hasClass(contentArea, 'active')) { return; }\n\n if (contentArea.innerHTML == INITIAL_CONTENT) {\n contentArea.innerHTML = '';\n }\n dom.addClass(contentArea, 'active');\n\n var configuration = Object.assign({}, DEFAULTS, userConfig);\n configuration.plugins = pluginsFor(ge, userConfig.plugins || PLUGINS);\n\n var ticket = {};\n starting.set(contentArea, ticket);\n\n var run = (busy.get(contentArea) || Promise.resolve()).then(function() {\n // Stopped again while it waited for the last editor to go\n if (starting.get(contentArea) !== ticket) { return null; }\n\n return window.CKEDITOR.InlineEditor.create(contentArea, configuration);\n }).then(function(editor) {\n if (!editor) { return null; }\n\n // Stopped while it started, so it goes again\n if (starting.get(contentArea) !== ticket) {\n return destroy(contentArea, editor);\n }\n starting.delete(contentArea);\n editors.set(contentArea, editor);\n\n // The editor owns what is inside the content area now,\n // so the grid editor is told to put its own furniture back\n ge.textReady(contentArea);\n\n editor.editing.view.focus();\n return null;\n }).catch(function(error) {\n // A licenseKey missing is the likely one\n if (starting.get(contentArea) === ticket) {\n starting.delete(contentArea);\n dom.removeClass(contentArea, 'active');\n }\n console.error(ge.t('error.ckeditor_start', { message: (error && error.message) || error }));\n });\n busy.set(contentArea, run);\n });\n },\n\n stop: function(contentAreas) {\n contentAreas.filter(function(contentArea) {\n return dom.hasClass(contentArea, 'active');\n }).forEach(function(contentArea) {\n // This content area's editor, and no other: the other\n // CKEditors on the page, the host's own included, stay\n var editor = editors.get(contentArea);\n editors.delete(contentArea);\n // One still starting sees this and goes as it is ready\n starting.delete(contentArea);\n\n if (editor) { busy.set(contentArea, destroy(contentArea, editor)); }\n\n dom.removeClass(contentArea, 'active');\n });\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["GridEditor", "all", "root", "selector", "children", "node", "selector", "each", "child", "closest", "stopAt", "found", "element", "tag", "attributes", "text", "node", "name", "value", "setHtml", "html", "addClass", "names", "split", "removeClass", "hasClass", "node", "name", "split", "names", "hide", "node", "visible", "node", "delegate", "root", "types", "selector", "handler", "options", "listener", "event", "match", "closest", "split", "type", "DEFAULT_DURATION", "animateAway", "node", "frames", "duration", "done", "finish", "hide", "visible", "animation", "called", "once", "slideUp", "style", "GridEditor", "attributesOf", "element", "found", "attribute", "classesIn", "value", "name", "EDITOR_CLASS", "restoreAttributes", "block", "before", "ready", "open", "result", "EDITOR_ATTRIBUTE", "readyClasses", "openClasses", "classes", "textFeature", "ge", "settings", "TEXTS", "warned", "type", "offeredTexts", "textLabel", "text", "makeText", "content", "setHtml", "apiCreateText", "options", "isOurs", "startText", "hasClass", "visible", "readBefore", "readReady", "addClass", "onClick", "closeText", "removeClass", "createTextControls", "textBlock", "child", "drawer", "details", "general", "editor", "hostTool", "removed", "slideUp", "markTexts", "all", "texts", "clicks", "offered", "others", "delegate", "area", "GridEditor", "INITIAL_CONTENT", "PLUGINS", "DEFAULTS", "level", "editors", "starting", "busy", "pluginsFor", "ge", "names", "plugin", "destroy", "contentArea", "editor", "data", "done", "contentAreas", "settings", "userConfig", "hasClass", "addClass", "configuration", "ticket", "run", "error", "removeClass"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var h=window.GridEditor;if(!h||typeof h.get!="function")throw new Error("grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, its locales and grideditor.jquery.js");function b(t,n){return t?t.querySelector(n):null}function g(t,n){return t?Array.prototype.filter.call(t.children,function(i){return!n||i.matches(n)}):[]}function C(t,n){return g(t,n)[0]||null}function c(t,n,i){var o=document.createElement(t);return Object.keys(n||{}).forEach(function(u){var l=n[u];l!=null&&l!==!1&&o.setAttribute(u,l)}),i!=null&&(o.textContent=i),o}function y(t,n){return T(n).forEach(function(i){t.classList.add(i)}),t}function w(t,n){return T(n).forEach(function(i){t.classList.remove(i)}),t}function m(t,n){return!!t&&t.nodeType===1&&t.classList.contains(n)}function T(t){return String(t||"").split(/\s+/).filter(Boolean)}function _(t){return t.style.display="none",t}function j(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)}var F=400;function D(t,n,i,o){i=i===void 0?F:i;var u=function(){_(t),o&&o()};if(!j(t)||!t.animate||i<=0){window.setTimeout(u,0);return}var l=t.animate(n(getComputedStyle(t)),{duration:i,easing:"ease-in-out"}),v=!1,x=function(){v||(v=!0,u())};l.onfinish=x,l.oncancel=x}function S(t,n,i){typeof n=="function"&&(i=n,n=void 0),t.style.overflow="hidden",D(t,function(o){return[{height:o.height,paddingTop:o.paddingTop,paddingBottom:o.paddingBottom,marginTop:o.marginTop,marginBottom:o.marginBottom},{height:"0px",paddingTop:"0px",paddingBottom:"0px",marginTop:"0px",marginBottom:"0px"}]},n,function(){t.style.removeProperty("overflow"),i&&i()})}Object.assign(h.locales.en,{"section.add":"Section","section.width":"Width","section.fixed":"Fixed","section.fluid":"Full width","section.from":"Fixed from {breakpoint}","tool.add_row_to_section":"Add row","tool.delete_section":"Remove section","confirm.delete_section":"Delete this section and everything in it?"});var f={fixed:"container",fluid:"container-fluid",sm:"container-sm",md:"container-md",lg:"container-lg",xl:"container-xl",xxl:"container-xxl"},A=["fixed","sm","md","lg","xl","xxl","fluid"];h.features.sections=function(t){var n=Object.assign({widths:A},t.settings.sections);function i(e){var r=null;return Object.keys(f).forEach(function(a){!r&&m(e,f[a])&&(r=a)}),r}function o(e){return e.parentElement===t.canvas&&i(e)!==null}function u(){return g(t.canvas).filter(o)}function l(e){return e==="fixed"?t.t("section.fixed"):e==="fluid"?t.t("section.fluid"):t.t("section.from",{breakpoint:e})}function v(e,r,a){var s=i(e);return s===r||!f[r]?!1:t.operate(function(){var d=t.payloadFor("section",e,{family:"section",breakpoint:"all",tiers:[],from:s,to:r,source:a||"api"});if(!t.emit("before-utility",d)){var p=b(t.detailsOf(e),".ge-section-width select");return p&&(p.value=s),!1}return w(e,f[s]),y(e,f[r]),t.emit("after-utility",d),!0})}function x(e){var r=c("select",{class:"form-select form-select-sm"}),a=i(e),s=n.widths.indexOf(a)===-1?n.widths.concat([a]):n.widths;A.forEach(function(p){s.indexOf(p)!==-1&&r.appendChild(c("option",{value:p},l(p)))}),r.value=a,r.addEventListener("change",function(){v(e,this.value,"panel")});var d=c("label",{class:"ge-utility ge-section-width"});return d.appendChild(c("span",{class:"ge-utility-label"},t.t("section.width"))),d.appendChild(r),d}function O(e){var r=c("div",{class:"ge-tools-drawer ge-section-drawer"});e.insertBefore(r,e.firstChild),t.createMoveTool(r),t.addSettingsTool(r,e,t.settings.section_classes||[]).appendChild(x(e)),t.createTool(r,t.t("tool.delete_section"),"ge-delete-section","bi bi-trash",function(){t.deleteNode("section",e,t.t("confirm.delete_section"),function(a){S(e,a)})}),t.createTool(r,t.t("tool.add_row_to_section"),"ge-add-row","bi bi-plus-circle",function(){t.place(t.rowFromLayout([12]),"row",{appendTo:e})})}function k(){u().forEach(function(e){y(e,"ge-section"),C(e,".ge-tools-drawer")||O(e)})}function B(){g(t.canvas,".ge-section").forEach(function(e){w(e,"ge-section")})}function E(e){e=e||{};var r=c("div",{class:f[e.width]||f.fixed});return(e.rows||[[12]]).forEach(function(a){r.appendChild(t.rowFromLayout(a))}),t.place(r,"section",e)}return{methods:{createSection:E},kindOf:function(e){return m(e,"ge-section")?"section":null},blocks:".ge-section",regions:".ge-section",accepts:function(e,r){return m(r,"ge-section")||L(r)?e===t.canvas:m(e,"ge-section")?m(r,"row"):!0},toolbar:[{labelKey:"section.add",kind:"section",create:function(){return E()}}],onInit:k,onDeinit:B};function L(e){return!e.parentElement&&i(e)!==null}};})();
|
|
1
|
+
(()=>{var h=window.GridEditor;if(!h||typeof h.get!="function")throw new Error("grid-editor: load grideditor.js (or grideditor.bundle.min.js) before its plugins, its locales and grideditor.jquery.js");function b(t,n){return t?t.querySelector(n):null}function g(t,n){return t?Array.prototype.filter.call(t.children,function(i){return!n||i.matches(n)}):[]}function C(t,n){return g(t,n)[0]||null}function c(t,n,i){var o=document.createElement(t);return Object.keys(n||{}).forEach(function(u){var l=n[u];l!=null&&l!==!1&&o.setAttribute(u,l)}),i!=null&&(o.textContent=i),o}function y(t,n){return T(n).forEach(function(i){t.classList.add(i)}),t}function w(t,n){return T(n).forEach(function(i){t.classList.remove(i)}),t}function m(t,n){return!!t&&t.nodeType===1&&t.classList.contains(n)}function T(t){return String(t||"").split(/\s+/).filter(Boolean)}function _(t){return t.style.display="none",t}function j(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)}var F=400;function D(t,n,i,o){i=i===void 0?F:i;var u=function(){_(t),o&&o()};if(!j(t)||!t.animate||i<=0){window.setTimeout(u,0);return}var l=t.animate(n(getComputedStyle(t)),{duration:i,easing:"ease-in-out"}),v=!1,x=function(){v||(v=!0,u())};l.onfinish=x,l.oncancel=x}function S(t,n,i){typeof n=="function"&&(i=n,n=void 0),t.style.overflow="hidden",D(t,function(o){return[{height:o.height,paddingTop:o.paddingTop,paddingBottom:o.paddingBottom,marginTop:o.marginTop,marginBottom:o.marginBottom},{height:"0px",paddingTop:"0px",paddingBottom:"0px",marginTop:"0px",marginBottom:"0px"}]},n,function(){t.style.removeProperty("overflow"),i&&i()})}Object.assign(h.locales.en,{"section.add":"Section","section.width":"Width","section.fixed":"Fixed","section.fluid":"Full width","section.from":"Fixed from {breakpoint}","tool.add_row_to_section":"Add row","tool.delete_section":"Remove section","confirm.delete_section":"Delete this section and everything in it?"});var f={fixed:"container",fluid:"container-fluid",sm:"container-sm",md:"container-md",lg:"container-lg",xl:"container-xl",xxl:"container-xxl"},A=["fixed","sm","md","lg","xl","xxl","fluid"];h.features.sections=function(t){var n=Object.assign({widths:A},t.settings.sections);function i(e){var r=null;return Object.keys(f).forEach(function(a){!r&&m(e,f[a])&&(r=a)}),r}function o(e){return e.parentElement===t.canvas&&i(e)!==null}function u(){return g(t.canvas).filter(o)}function l(e){return e==="fixed"?t.t("section.fixed"):e==="fluid"?t.t("section.fluid"):t.t("section.from",{breakpoint:e})}function v(e,r,a){var s=i(e);return s===r||!f[r]?!1:t.operate(function(){var d=t.payloadFor("section",e,{family:"section",breakpoint:"all",tiers:[],from:s,to:r,source:a||"api"});if(!t.emit("before-utility",d)){var p=b(t.detailsOf(e),".ge-section-width select");return p&&(p.value=s),!1}return w(e,f[s]),y(e,f[r]),t.emit("after-utility",d),!0})}function x(e){var r=c("select",{class:"form-select form-select-sm"}),a=i(e),s=n.widths.indexOf(a)===-1?n.widths.concat([a]):n.widths;A.forEach(function(p){s.indexOf(p)!==-1&&r.appendChild(c("option",{value:p},l(p)))}),r.value=a,r.addEventListener("change",function(){v(e,this.value,"panel")});var d=c("label",{class:"ge-utility ge-section-width"});return d.appendChild(c("span",{class:"ge-utility-label"},t.t("section.width"))),d.appendChild(r),d}function O(e){var r=c("div",{class:"ge-tools-drawer ge-section-drawer"});e.insertBefore(r,e.firstChild),t.createMoveTool(r),t.addSettingsTool(r,e,t.settings.section_classes||[]).appendChild(x(e)),t.createTool(r,t.t("tool.delete_section"),"ge-delete-section","bi bi-trash",function(){t.deleteNode("section",e,t.t("confirm.delete_section"),function(a){S(e,a)})}),t.createTool(r,t.t("tool.add_row_to_section"),"ge-add-row","bi bi-plus-circle",function(){t.place(t.rowFromLayout([12]),"row",{appendTo:e})})}function k(){u().forEach(function(e){y(e,"ge-section"),C(e,".ge-tools-drawer")||O(e)})}function B(){g(t.canvas,".ge-section").forEach(function(e){w(e,"ge-section")})}function E(e){e=e||{};var r=c("div",{class:f[e.width]||f.fixed});return(e.rows||[[12]]).forEach(function(a){r.appendChild(t.rowFromLayout(a))}),t.place(r,"section",e)}return{methods:{createSection:E},kindOf:function(e){return m(e,"ge-section")?"section":null},blocks:".ge-section",regions:".ge-section",accepts:function(e,r){return m(r,"ge-section")||L(r)?e===t.canvas:m(e,"ge-section")?m(r,"row"):!0},toolbar:[{labelKey:"section.add",kind:"section",group:"content",create:function(){return E()}}],onInit:k,onDeinit:B};function L(e){return!e.parentElement&&i(e)!==null}};})();
|