Support text direction (#235)
* fix: Add text direction * fix: Add element * fix: add js if and update test * fix example * spec: update snaps * updatemain
parent
c2a96f6952
commit
f14fbdcb75
|
@ -12,7 +12,8 @@ pub fn main() -> Result<(), DocxError> {
|
|||
TableCell::new()
|
||||
.add_paragraph(Paragraph::new().add_run(Run::new().add_text("Hello")))
|
||||
.vertical_align(VAlignType::Center)
|
||||
.vertical_merge(VMergeType::Restart),
|
||||
.vertical_merge(VMergeType::Restart)
|
||||
.text_direction(TextDirectionType::TbRlV),
|
||||
]),
|
||||
TableRow::new(vec![
|
||||
TableCell::new()
|
||||
|
|
|
@ -75,6 +75,7 @@ mod table_style;
|
|||
mod table_width;
|
||||
mod text;
|
||||
mod text_box_content;
|
||||
mod text_direction;
|
||||
mod underline;
|
||||
mod vanish;
|
||||
mod vertical_align;
|
||||
|
@ -161,6 +162,7 @@ pub use table_style::*;
|
|||
pub use table_width::*;
|
||||
pub use text::*;
|
||||
pub use text_box_content::*;
|
||||
pub use text_direction::*;
|
||||
pub use underline::*;
|
||||
pub use vanish::*;
|
||||
pub use vertical_align::*;
|
||||
|
|
|
@ -58,6 +58,11 @@ impl TableCell {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn text_direction(mut self, t: TextDirectionType) -> TableCell {
|
||||
self.property = self.property.text_direction(t);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn grid_span(mut self, v: usize) -> TableCell {
|
||||
self.property = self.property.grid_span(v);
|
||||
self
|
||||
|
@ -146,7 +151,7 @@ mod tests {
|
|||
.grid_span(2);
|
||||
assert_eq!(
|
||||
serde_json::to_string(&c).unwrap(),
|
||||
r#"{"children":[{"type":"paragraph","data":{"id":"12345678","children":[{"type":"run","data":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null,"spacing":null,"fonts":null},"children":[{"type":"text","data":{"preserveSpace":true,"text":"Hello"}}]}}],"property":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null,"spacing":null,"fonts":null},"style":null,"numberingProperty":null,"alignment":null,"indent":null,"lineHeight":null},"hasNumbering":false}}],"property":{"width":null,"borders":null,"gridSpan":2,"verticalMerge":null,"verticalAlign":null},"hasNumbering":false}"#
|
||||
r#"{"children":[{"type":"paragraph","data":{"id":"12345678","children":[{"type":"run","data":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null,"spacing":null,"fonts":null},"children":[{"type":"text","data":{"preserveSpace":true,"text":"Hello"}}]}}],"property":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null,"spacing":null,"fonts":null},"style":null,"numberingProperty":null,"alignment":null,"indent":null,"lineHeight":null},"hasNumbering":false}}],"property":{"width":null,"borders":null,"gridSpan":2,"verticalMerge":null,"verticalAlign":null,"textDirection":null},"hasNumbering":false}"#
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ pub struct TableCellProperty {
|
|||
grid_span: Option<GridSpan>,
|
||||
vertical_merge: Option<VMerge>,
|
||||
vertical_align: Option<VAlign>,
|
||||
text_direction: Option<TextDirection>,
|
||||
}
|
||||
|
||||
impl TableCellProperty {
|
||||
|
@ -35,6 +36,11 @@ impl TableCellProperty {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn text_direction(mut self, t: TextDirectionType) -> Self {
|
||||
self.text_direction = Some(TextDirection::new(t));
|
||||
self
|
||||
}
|
||||
|
||||
pub fn grid_span(mut self, v: usize) -> TableCellProperty {
|
||||
self.grid_span = Some(GridSpan::new(v));
|
||||
self
|
||||
|
@ -69,6 +75,7 @@ impl Default for TableCellProperty {
|
|||
grid_span: None,
|
||||
vertical_merge: None,
|
||||
vertical_align: None,
|
||||
text_direction: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +89,7 @@ impl BuildXML for TableCellProperty {
|
|||
.add_optional_child(&self.grid_span)
|
||||
.add_optional_child(&self.vertical_merge)
|
||||
.add_optional_child(&self.vertical_align)
|
||||
.add_optional_child(&self.text_direction)
|
||||
.close()
|
||||
.build()
|
||||
}
|
||||
|
@ -140,7 +148,7 @@ mod tests {
|
|||
.width(200, WidthType::DXA);
|
||||
assert_eq!(
|
||||
serde_json::to_string(&c).unwrap(),
|
||||
r#"{"width":{"width":200,"widthType":"DXA"},"borders":null,"gridSpan":3,"verticalMerge":"continue","verticalAlign":null}"#
|
||||
r#"{"width":{"width":200,"widthType":"DXA"},"borders":null,"gridSpan":3,"verticalMerge":"continue","verticalAlign":null,"textDirection":null}"#
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -149,7 +157,7 @@ mod tests {
|
|||
let c = TableCellProperty::new().vertical_align(VAlignType::Center);
|
||||
assert_eq!(
|
||||
serde_json::to_string(&c).unwrap(),
|
||||
r#"{"width":null,"borders":null,"gridSpan":null,"verticalMerge":null,"verticalAlign":"center"}"#
|
||||
r#"{"width":null,"borders":null,"gridSpan":null,"verticalMerge":null,"verticalAlign":"center","textDirection":null}"#
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ mod tests {
|
|||
let r = TableRow::new(vec![TableCell::new()]);
|
||||
assert_eq!(
|
||||
serde_json::to_string(&r).unwrap(),
|
||||
r#"{"cells":[{"children":[],"property":{"width":null,"borders":null,"gridSpan":null,"verticalMerge":null,"verticalAlign":null},"hasNumbering":false}],"hasNumbering":false,"property":{"gridAfter":null,"widthAfter":null,"rowHeight":null,"heightRule":null}}"#
|
||||
r#"{"cells":[{"children":[],"property":{"width":null,"borders":null,"gridSpan":null,"verticalMerge":null,"verticalAlign":null,"textDirection":null},"hasNumbering":false}],"hasNumbering":false,"property":{"gridAfter":null,"widthAfter":null,"rowHeight":null,"heightRule":null}}"#
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
use serde::{Serialize, Serializer};
|
||||
|
||||
use crate::documents::BuildXML;
|
||||
use crate::types::*;
|
||||
use crate::xml_builder::*;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub struct TextDirection {
|
||||
val: TextDirectionType,
|
||||
}
|
||||
|
||||
impl TextDirection {
|
||||
pub fn new(t: TextDirectionType) -> TextDirection {
|
||||
TextDirection { val: t }
|
||||
}
|
||||
}
|
||||
|
||||
impl BuildXML for TextDirection {
|
||||
fn build(&self) -> Vec<u8> {
|
||||
XMLBuilder::new()
|
||||
.text_direction(&self.val.to_string())
|
||||
.build()
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for TextDirection {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
serializer.serialize_str(&format!("{}", &self.val))
|
||||
}
|
||||
}
|
|
@ -75,6 +75,14 @@ impl ElementReader for TableCell {
|
|||
)?);
|
||||
}
|
||||
}
|
||||
XMLElement::TextDirection => {
|
||||
if let Some(a) = &attributes.get(0) {
|
||||
if let Ok(v) = TextDirectionType::from_str(&a.value)
|
||||
{
|
||||
cell = cell.text_direction(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
XMLElement::TableCellBorders => {
|
||||
let borders = TableCellBorders::read(r, &attributes)?;
|
||||
cell = cell.set_borders(borders);
|
||||
|
|
|
@ -50,6 +50,7 @@ pub enum XMLElement {
|
|||
CommentExtended,
|
||||
CommentsExtended,
|
||||
VAlign,
|
||||
TextDirection,
|
||||
Table,
|
||||
TableProperty,
|
||||
TableRow,
|
||||
|
@ -225,6 +226,7 @@ impl FromStr for XMLElement {
|
|||
"gridSpan" => Ok(XMLElement::TableGridSpan),
|
||||
"gridAfter" => Ok(XMLElement::GridAfter),
|
||||
"wAfter" => Ok(XMLElement::WidthAfter),
|
||||
"textDirection" => Ok(XMLElement::TextDirection),
|
||||
"tblW" => Ok(XMLElement::TableWidth),
|
||||
"tblInd" => Ok(XMLElement::TableIndent),
|
||||
"tblBorders" => Ok(XMLElement::TableBorders),
|
||||
|
|
|
@ -5,6 +5,7 @@ pub mod break_type;
|
|||
pub mod emu;
|
||||
pub mod errors;
|
||||
pub mod font_pitch_type;
|
||||
pub mod height_rule;
|
||||
pub mod level_suffix_type;
|
||||
pub mod page_margin;
|
||||
pub mod section_type;
|
||||
|
@ -12,10 +13,10 @@ pub mod spacing;
|
|||
pub mod special_indent_type;
|
||||
pub mod style_type;
|
||||
pub mod table_alignment_type;
|
||||
pub mod text_direction_type;
|
||||
pub mod vertical_align_type;
|
||||
pub mod vertical_merge_type;
|
||||
pub mod width_type;
|
||||
pub mod height_rule;
|
||||
|
||||
pub use alignment_type::*;
|
||||
pub use border_position::*;
|
||||
|
@ -24,6 +25,7 @@ pub use break_type::*;
|
|||
pub use emu::*;
|
||||
pub use errors::*;
|
||||
pub use font_pitch_type::*;
|
||||
pub use height_rule::*;
|
||||
pub use level_suffix_type::*;
|
||||
pub use page_margin::*;
|
||||
pub use section_type::*;
|
||||
|
@ -31,7 +33,7 @@ pub use spacing::*;
|
|||
pub use special_indent_type::*;
|
||||
pub use style_type::*;
|
||||
pub use table_alignment_type::*;
|
||||
pub use text_direction_type::*;
|
||||
pub use vertical_align_type::*;
|
||||
pub use vertical_merge_type::*;
|
||||
pub use width_type::*;
|
||||
pub use height_rule::*;
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
use std::fmt;
|
||||
use wasm_bindgen::prelude::*;
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use super::errors;
|
||||
use std::str::FromStr;
|
||||
|
||||
// ST_TextDirection defines `lr`, `lrV`, `rl`, `rlV`, `tb`, `tbV`.
|
||||
// However Microsoft word use `tbRlV`, `tbRl`, `btLr`, `lrTbV`.
|
||||
#[wasm_bindgen]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum TextDirectionType {
|
||||
Lr,
|
||||
LrV,
|
||||
Rl,
|
||||
RlV,
|
||||
Tb,
|
||||
TbV,
|
||||
TbRlV,
|
||||
TbRl,
|
||||
BtLr,
|
||||
LrTbV,
|
||||
}
|
||||
|
||||
impl fmt::Display for TextDirectionType {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match *self {
|
||||
TextDirectionType::Lr => write!(f, "lr"),
|
||||
TextDirectionType::LrV => write!(f, "lrV"),
|
||||
TextDirectionType::Rl => write!(f, "rl"),
|
||||
TextDirectionType::RlV => write!(f, "rlV"),
|
||||
TextDirectionType::Tb => write!(f, "tb"),
|
||||
TextDirectionType::TbV => write!(f, "tbV"),
|
||||
TextDirectionType::TbRlV => write!(f, "tbRlV"),
|
||||
TextDirectionType::TbRl => write!(f, "tbRl"),
|
||||
TextDirectionType::BtLr => write!(f, "btLr"),
|
||||
TextDirectionType::LrTbV => write!(f, "lrTbV"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for TextDirectionType {
|
||||
type Err = errors::TypeError;
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
match s {
|
||||
"lr" => Ok(TextDirectionType::Lr),
|
||||
"lrV" => Ok(TextDirectionType::LrV),
|
||||
"rl" => Ok(TextDirectionType::Rl),
|
||||
"rlV" => Ok(TextDirectionType::RlV),
|
||||
"tb" => Ok(TextDirectionType::Tb),
|
||||
"tbV" => Ok(TextDirectionType::TbV),
|
||||
"tbRlV" => Ok(TextDirectionType::TbRlV),
|
||||
"tbRl" => Ok(TextDirectionType::TbRl),
|
||||
"btLr" => Ok(TextDirectionType::BtLr),
|
||||
"lrTbV" => Ok(TextDirectionType::LrTbV),
|
||||
_ => Err(errors::TypeError::FromStrError),
|
||||
}
|
||||
}
|
||||
}
|
|
@ -82,6 +82,8 @@ impl XMLBuilder {
|
|||
// i.e. <w:szCs ... >
|
||||
closed_with_usize!(sz_cs, "w:szCs");
|
||||
|
||||
closed_with_str!(text_direction, "w:textDirection");
|
||||
|
||||
closed!(b, "w:b");
|
||||
closed!(b_cs, "w:bCs");
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@ import { Insert } from "./insert";
|
|||
import { Delete } from "./delete";
|
||||
import { DeleteText } from "./delete-text";
|
||||
import { Table } from "./table";
|
||||
import { TableCell } from "./table-cell";
|
||||
import { TableCell, toTextDirectionWasmType } from "./table-cell";
|
||||
import { BorderType } from "./table-cell-border";
|
||||
import { Run, RunFonts } from "./run";
|
||||
import { Text } from "./text";
|
||||
|
@ -470,6 +470,13 @@ export class Docx {
|
|||
if (typeof c.property.width !== "undefined") {
|
||||
cell = cell.width(c.property.width);
|
||||
}
|
||||
|
||||
if (typeof c.property.textDirection !== "undefined") {
|
||||
cell = cell.text_direction(
|
||||
toTextDirectionWasmType(c.property.textDirection)
|
||||
);
|
||||
}
|
||||
|
||||
if (typeof c.property.borders !== "undefined") {
|
||||
if (c.property.borders.top) {
|
||||
const border = wasm
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
import { ParagraphJSON } from "./paragraph";
|
||||
import { BorderJSON } from "./border";
|
||||
import { HeightRule } from "../table-row";
|
||||
import { TextDirectionType } from "../table-cell";
|
||||
|
||||
export type TableCellChildJSON = ParagraphJSON;
|
||||
|
||||
export type WidthType = "DXA" | "Auto" | "Pct";
|
||||
export { TextDirectionType } from "../table-cell";
|
||||
|
||||
export { HeightRule } from "../table-row";
|
||||
|
||||
|
@ -17,6 +19,7 @@ export type TableCellPropertyJSON = {
|
|||
gridSpan: number | null;
|
||||
verticalMerge: "restart" | "continue" | null;
|
||||
verticalAlign: "top" | "center" | "bottom" | null;
|
||||
textDirection: TextDirectionType | null;
|
||||
hasNumbering: boolean;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,17 +1,60 @@
|
|||
import { Paragraph } from "./paragraph";
|
||||
import { TableCellBorders, PositionKeys } from "./table-cell-borders";
|
||||
import { BorderPosition, TableCellBorder } from "./table-cell-border";
|
||||
import * as wasm from "./pkg";
|
||||
|
||||
export type VMergeType = "restart" | "continue";
|
||||
|
||||
export type VAlignType = "top" | "center" | "bottom";
|
||||
|
||||
export type TextDirectionType =
|
||||
| "lr"
|
||||
| "lrV"
|
||||
| "rl"
|
||||
| "rlV"
|
||||
| "tb"
|
||||
| "tbV"
|
||||
| "tbRlV"
|
||||
| "tbRl"
|
||||
| "btLr"
|
||||
| "lrTbV";
|
||||
|
||||
export const toTextDirectionWasmType = (
|
||||
t: TextDirectionType
|
||||
): wasm.TextDirectionType => {
|
||||
switch (t) {
|
||||
case "lr":
|
||||
return wasm.TextDirectionType.Lr;
|
||||
case "lrV":
|
||||
return wasm.TextDirectionType.LrV;
|
||||
case "rl":
|
||||
return wasm.TextDirectionType.Rl;
|
||||
case "rlV":
|
||||
return wasm.TextDirectionType.RlV;
|
||||
case "tb":
|
||||
return wasm.TextDirectionType.Tb;
|
||||
case "tbV":
|
||||
return wasm.TextDirectionType.TbV;
|
||||
case "tbRlV":
|
||||
return wasm.TextDirectionType.TbRlV;
|
||||
case "tbRl":
|
||||
return wasm.TextDirectionType.TbRl;
|
||||
case "btLr":
|
||||
return wasm.TextDirectionType.BtLr;
|
||||
case "lrTbV":
|
||||
return wasm.TextDirectionType.LrTbV;
|
||||
default:
|
||||
throw new Error("unreachable");
|
||||
}
|
||||
};
|
||||
|
||||
export type CellProperty = {
|
||||
borders: TableCellBorders;
|
||||
verticalMerge?: VMergeType;
|
||||
verticalAlign?: VAlignType;
|
||||
gridSpan?: number;
|
||||
width?: number;
|
||||
textDirection?: TextDirectionType;
|
||||
};
|
||||
|
||||
export class TableCell {
|
||||
|
@ -49,6 +92,11 @@ export class TableCell {
|
|||
return this;
|
||||
}
|
||||
|
||||
textDirection(t: TextDirectionType) {
|
||||
this.property.textDirection = t;
|
||||
return this;
|
||||
}
|
||||
|
||||
setBorder(position: BorderPosition, border: TableCellBorder) {
|
||||
this.property.borders[position.toLowerCase() as PositionKeys] = border;
|
||||
return this;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "docx-wasm",
|
||||
"version": "0.0.143",
|
||||
"version": "0.0.144",
|
||||
"main": "dist/node/index.js",
|
||||
"browser": "dist/web/index.js",
|
||||
"author": "bokuweb <bokuweb12@gmail.com>",
|
||||
|
|
|
@ -45,6 +45,11 @@ impl TableCell {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn text_direction(mut self, t: docx_rs::TextDirectionType) -> TableCell {
|
||||
self.0.property = self.0.property.text_direction(t);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn set_border(mut self, border: TableCellBorder) -> TableCell {
|
||||
self.0.property = self.0.property.set_border(border.take());
|
||||
self
|
||||
|
|
|
@ -1003,6 +1003,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": 5,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1089,6 +1090,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": 3,
|
||||
"textDirection": null,
|
||||
"verticalAlign": "center",
|
||||
"verticalMerge": "restart",
|
||||
"width": Object {
|
||||
|
@ -1164,6 +1166,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": "center",
|
||||
"verticalMerge": "restart",
|
||||
"width": Object {
|
||||
|
@ -1250,6 +1253,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": 3,
|
||||
"textDirection": null,
|
||||
"verticalAlign": "center",
|
||||
"verticalMerge": "continue",
|
||||
"width": Object {
|
||||
|
@ -1325,6 +1329,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": "center",
|
||||
"verticalMerge": "continue",
|
||||
"width": Object {
|
||||
|
@ -1411,6 +1416,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": 2,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1486,6 +1492,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1572,6 +1579,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1647,6 +1655,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": 2,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1733,6 +1742,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1808,6 +1818,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1883,6 +1894,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -1969,6 +1981,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2044,6 +2057,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2119,6 +2133,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2199,6 +2214,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2268,6 +2284,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2343,6 +2360,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2429,6 +2447,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2504,6 +2523,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -2579,6 +2599,7 @@ Object {
|
|||
},
|
||||
},
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9176,6 +9197,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9220,6 +9242,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9264,6 +9287,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9308,6 +9332,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9363,6 +9388,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9407,6 +9433,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9451,6 +9478,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9495,6 +9523,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9550,6 +9579,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9594,6 +9624,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9638,6 +9669,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
@ -9682,6 +9714,7 @@ Object {
|
|||
"property": Object {
|
||||
"borders": null,
|
||||
"gridSpan": null,
|
||||
"textDirection": null,
|
||||
"verticalAlign": null,
|
||||
"verticalMerge": null,
|
||||
"width": Object {
|
||||
|
|
Loading…
Reference in New Issue