|  | @@ -2174,7 +2174,7 @@ impl ::protobuf::reflect::ProtobufValue for FieldTypeOptionContext {
 | 
											
												
													
														|  |  pub struct FieldTypeOptionData {
 |  |  pub struct FieldTypeOptionData {
 | 
											
												
													
														|  |      // message fields
 |  |      // message fields
 | 
											
												
													
														|  |      pub grid_id: ::std::string::String,
 |  |      pub grid_id: ::std::string::String,
 | 
											
												
													
														|  | -    pub field_id: ::std::string::String,
 |  | 
 | 
											
												
													
														|  | 
 |  | +    pub field: ::protobuf::SingularPtrField<Field>,
 | 
											
												
													
														|  |      pub type_option_data: ::std::vec::Vec<u8>,
 |  |      pub type_option_data: ::std::vec::Vec<u8>,
 | 
											
												
													
														|  |      // special fields
 |  |      // special fields
 | 
											
												
													
														|  |      pub unknown_fields: ::protobuf::UnknownFields,
 |  |      pub unknown_fields: ::protobuf::UnknownFields,
 | 
											
										
											
												
													
														|  | @@ -2218,30 +2218,37 @@ impl FieldTypeOptionData {
 | 
											
												
													
														|  |          ::std::mem::replace(&mut self.grid_id, ::std::string::String::new())
 |  |          ::std::mem::replace(&mut self.grid_id, ::std::string::String::new())
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    // string field_id = 2;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // .Field field = 2;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    pub fn get_field_id(&self) -> &str {
 |  | 
 | 
											
												
													
														|  | -        &self.field_id
 |  | 
 | 
											
												
													
														|  | 
 |  | +    pub fn get_field(&self) -> &Field {
 | 
											
												
													
														|  | 
 |  | +        self.field.as_ref().unwrap_or_else(|| <Field as ::protobuf::Message>::default_instance())
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    pub fn clear_field_id(&mut self) {
 |  | 
 | 
											
												
													
														|  | -        self.field_id.clear();
 |  | 
 | 
											
												
													
														|  | 
 |  | +    pub fn clear_field(&mut self) {
 | 
											
												
													
														|  | 
 |  | +        self.field.clear();
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    pub fn has_field(&self) -> bool {
 | 
											
												
													
														|  | 
 |  | +        self.field.is_some()
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      // Param is passed by value, moved
 |  |      // Param is passed by value, moved
 | 
											
												
													
														|  | -    pub fn set_field_id(&mut self, v: ::std::string::String) {
 |  | 
 | 
											
												
													
														|  | -        self.field_id = v;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    pub fn set_field(&mut self, v: Field) {
 | 
											
												
													
														|  | 
 |  | +        self.field = ::protobuf::SingularPtrField::some(v);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      // Mutable pointer to the field.
 |  |      // Mutable pointer to the field.
 | 
											
												
													
														|  |      // If field is not initialized, it is initialized with default value first.
 |  |      // If field is not initialized, it is initialized with default value first.
 | 
											
												
													
														|  | -    pub fn mut_field_id(&mut self) -> &mut ::std::string::String {
 |  | 
 | 
											
												
													
														|  | -        &mut self.field_id
 |  | 
 | 
											
												
													
														|  | 
 |  | +    pub fn mut_field(&mut self) -> &mut Field {
 | 
											
												
													
														|  | 
 |  | +        if self.field.is_none() {
 | 
											
												
													
														|  | 
 |  | +            self.field.set_default();
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        self.field.as_mut().unwrap()
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      // Take field
 |  |      // Take field
 | 
											
												
													
														|  | -    pub fn take_field_id(&mut self) -> ::std::string::String {
 |  | 
 | 
											
												
													
														|  | -        ::std::mem::replace(&mut self.field_id, ::std::string::String::new())
 |  | 
 | 
											
												
													
														|  | 
 |  | +    pub fn take_field(&mut self) -> Field {
 | 
											
												
													
														|  | 
 |  | +        self.field.take().unwrap_or_else(|| Field::new())
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      // bytes type_option_data = 3;
 |  |      // bytes type_option_data = 3;
 | 
											
										
											
												
													
														|  | @@ -2273,6 +2280,11 @@ impl FieldTypeOptionData {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  impl ::protobuf::Message for FieldTypeOptionData {
 |  |  impl ::protobuf::Message for FieldTypeOptionData {
 | 
											
												
													
														|  |      fn is_initialized(&self) -> bool {
 |  |      fn is_initialized(&self) -> bool {
 | 
											
												
													
														|  | 
 |  | +        for v in &self.field {
 | 
											
												
													
														|  | 
 |  | +            if !v.is_initialized() {
 | 
											
												
													
														|  | 
 |  | +                return false;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        };
 | 
											
												
													
														|  |          true
 |  |          true
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -2284,7 +2296,7 @@ impl ::protobuf::Message for FieldTypeOptionData {
 | 
											
												
													
														|  |                      ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.grid_id)?;
 |  |                      ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.grid_id)?;
 | 
											
												
													
														|  |                  },
 |  |                  },
 | 
											
												
													
														|  |                  2 => {
 |  |                  2 => {
 | 
											
												
													
														|  | -                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.field_id)?;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.field)?;
 | 
											
												
													
														|  |                  },
 |  |                  },
 | 
											
												
													
														|  |                  3 => {
 |  |                  3 => {
 | 
											
												
													
														|  |                      ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.type_option_data)?;
 |  |                      ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.type_option_data)?;
 | 
											
										
											
												
													
														|  | @@ -2304,8 +2316,9 @@ impl ::protobuf::Message for FieldTypeOptionData {
 | 
											
												
													
														|  |          if !self.grid_id.is_empty() {
 |  |          if !self.grid_id.is_empty() {
 | 
											
												
													
														|  |              my_size += ::protobuf::rt::string_size(1, &self.grid_id);
 |  |              my_size += ::protobuf::rt::string_size(1, &self.grid_id);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        if !self.field_id.is_empty() {
 |  | 
 | 
											
												
													
														|  | -            my_size += ::protobuf::rt::string_size(2, &self.field_id);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if let Some(ref v) = self.field.as_ref() {
 | 
											
												
													
														|  | 
 |  | +            let len = v.compute_size();
 | 
											
												
													
														|  | 
 |  | +            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          if !self.type_option_data.is_empty() {
 |  |          if !self.type_option_data.is_empty() {
 | 
											
												
													
														|  |              my_size += ::protobuf::rt::bytes_size(3, &self.type_option_data);
 |  |              my_size += ::protobuf::rt::bytes_size(3, &self.type_option_data);
 | 
											
										
											
												
													
														|  | @@ -2319,8 +2332,10 @@ impl ::protobuf::Message for FieldTypeOptionData {
 | 
											
												
													
														|  |          if !self.grid_id.is_empty() {
 |  |          if !self.grid_id.is_empty() {
 | 
											
												
													
														|  |              os.write_string(1, &self.grid_id)?;
 |  |              os.write_string(1, &self.grid_id)?;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        if !self.field_id.is_empty() {
 |  | 
 | 
											
												
													
														|  | -            os.write_string(2, &self.field_id)?;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if let Some(ref v) = self.field.as_ref() {
 | 
											
												
													
														|  | 
 |  | +            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
 | 
											
												
													
														|  | 
 |  | +            os.write_raw_varint32(v.get_cached_size())?;
 | 
											
												
													
														|  | 
 |  | +            v.write_to_with_cached_sizes(os)?;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          if !self.type_option_data.is_empty() {
 |  |          if !self.type_option_data.is_empty() {
 | 
											
												
													
														|  |              os.write_bytes(3, &self.type_option_data)?;
 |  |              os.write_bytes(3, &self.type_option_data)?;
 | 
											
										
											
												
													
														|  | @@ -2368,10 +2383,10 @@ impl ::protobuf::Message for FieldTypeOptionData {
 | 
											
												
													
														|  |                  |m: &FieldTypeOptionData| { &m.grid_id },
 |  |                  |m: &FieldTypeOptionData| { &m.grid_id },
 | 
											
												
													
														|  |                  |m: &mut FieldTypeOptionData| { &mut m.grid_id },
 |  |                  |m: &mut FieldTypeOptionData| { &mut m.grid_id },
 | 
											
												
													
														|  |              ));
 |  |              ));
 | 
											
												
													
														|  | -            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
 |  | 
 | 
											
												
													
														|  | -                "field_id",
 |  | 
 | 
											
												
													
														|  | -                |m: &FieldTypeOptionData| { &m.field_id },
 |  | 
 | 
											
												
													
														|  | -                |m: &mut FieldTypeOptionData| { &mut m.field_id },
 |  | 
 | 
											
												
													
														|  | 
 |  | +            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Field>>(
 | 
											
												
													
														|  | 
 |  | +                "field",
 | 
											
												
													
														|  | 
 |  | +                |m: &FieldTypeOptionData| { &m.field },
 | 
											
												
													
														|  | 
 |  | +                |m: &mut FieldTypeOptionData| { &mut m.field },
 | 
											
												
													
														|  |              ));
 |  |              ));
 | 
											
												
													
														|  |              fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
 |  |              fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
 | 
											
												
													
														|  |                  "type_option_data",
 |  |                  "type_option_data",
 | 
											
										
											
												
													
														|  | @@ -2395,7 +2410,7 @@ impl ::protobuf::Message for FieldTypeOptionData {
 | 
											
												
													
														|  |  impl ::protobuf::Clear for FieldTypeOptionData {
 |  |  impl ::protobuf::Clear for FieldTypeOptionData {
 | 
											
												
													
														|  |      fn clear(&mut self) {
 |  |      fn clear(&mut self) {
 | 
											
												
													
														|  |          self.grid_id.clear();
 |  |          self.grid_id.clear();
 | 
											
												
													
														|  | -        self.field_id.clear();
 |  | 
 | 
											
												
													
														|  | 
 |  | +        self.field.clear();
 | 
											
												
													
														|  |          self.type_option_data.clear();
 |  |          self.type_option_data.clear();
 | 
											
												
													
														|  |          self.unknown_fields.clear();
 |  |          self.unknown_fields.clear();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
										
											
												
													
														|  | @@ -8302,25 +8317,25 @@ static file_descriptor_proto_data: &'static [u8] = b"\
 | 
											
												
													
														|  |      ne_of_field_id\"\x82\x01\n\x16FieldTypeOptionContext\x12\x17\n\x07grid_i\
 |  |      ne_of_field_id\"\x82\x01\n\x16FieldTypeOptionContext\x12\x17\n\x07grid_i\
 | 
											
												
													
														|  |      d\x18\x01\x20\x01(\tR\x06gridId\x12%\n\ngrid_field\x18\x02\x20\x01(\x0b2\
 |  |      d\x18\x01\x20\x01(\tR\x06gridId\x12%\n\ngrid_field\x18\x02\x20\x01(\x0b2\
 | 
											
												
													
														|  |      \x06.FieldR\tgridField\x12(\n\x10type_option_data\x18\x03\x20\x01(\x0cR\
 |  |      \x06.FieldR\tgridField\x12(\n\x10type_option_data\x18\x03\x20\x01(\x0cR\
 | 
											
												
													
														|  | -    \x0etypeOptionData\"s\n\x13FieldTypeOptionData\x12\x17\n\x07grid_id\x18\
 |  | 
 | 
											
												
													
														|  | -    \x01\x20\x01(\tR\x06gridId\x12\x19\n\x08field_id\x18\x02\x20\x01(\tR\x07\
 |  | 
 | 
											
												
													
														|  | -    fieldId\x12(\n\x10type_option_data\x18\x03\x20\x01(\x0cR\x0etypeOptionDa\
 |  | 
 | 
											
												
													
														|  | -    ta\"-\n\rRepeatedField\x12\x1c\n\x05items\x18\x01\x20\x03(\x0b2\x06.Fiel\
 |  | 
 | 
											
												
													
														|  | -    dR\x05items\"7\n\x12RepeatedFieldOrder\x12!\n\x05items\x18\x01\x20\x03(\
 |  | 
 | 
											
												
													
														|  | -    \x0b2\x0b.FieldOrderR\x05items\"T\n\x08RowOrder\x12\x15\n\x06row_id\x18\
 |  | 
 | 
											
												
													
														|  | -    \x01\x20\x01(\tR\x05rowId\x12\x19\n\x08block_id\x18\x02\x20\x01(\tR\x07b\
 |  | 
 | 
											
												
													
														|  | -    lockId\x12\x16\n\x06height\x18\x03\x20\x01(\x05R\x06height\"\xb8\x01\n\
 |  | 
 | 
											
												
													
														|  | -    \x03Row\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12@\n\x10cell_by_fiel\
 |  | 
 | 
											
												
													
														|  | -    d_id\x18\x02\x20\x03(\x0b2\x17.Row.CellByFieldIdEntryR\rcellByFieldId\
 |  | 
 | 
											
												
													
														|  | -    \x12\x16\n\x06height\x18\x03\x20\x01(\x05R\x06height\x1aG\n\x12CellByFie\
 |  | 
 | 
											
												
													
														|  | -    ldIdEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12\x1b\n\x05value\
 |  | 
 | 
											
												
													
														|  | -    \x18\x02\x20\x01(\x0b2\x05.CellR\x05value:\x028\x01\")\n\x0bRepeatedRow\
 |  | 
 | 
											
												
													
														|  | -    \x12\x1a\n\x05items\x18\x01\x20\x03(\x0b2\x04.RowR\x05items\"5\n\x11Repe\
 |  | 
 | 
											
												
													
														|  | -    atedGridBlock\x12\x20\n\x05items\x18\x01\x20\x03(\x0b2\n.GridBlockR\x05i\
 |  | 
 | 
											
												
													
														|  | -    tems\"U\n\x0eGridBlockOrder\x12\x19\n\x08block_id\x18\x01\x20\x01(\tR\
 |  | 
 | 
											
												
													
														|  | -    \x07blockId\x12(\n\nrow_orders\x18\x02\x20\x03(\x0b2\t.RowOrderR\trowOrd\
 |  | 
 | 
											
												
													
														|  | -    ers\"_\n\rIndexRowOrder\x12&\n\trow_order\x18\x01\x20\x01(\x0b2\t.RowOrd\
 |  | 
 | 
											
												
													
														|  | -    erR\x08rowOrder\x12\x16\n\x05index\x18\x02\x20\x01(\x05H\0R\x05indexB\
 |  | 
 | 
											
												
													
														|  | 
 |  | +    \x0etypeOptionData\"v\n\x13FieldTypeOptionData\x12\x17\n\x07grid_id\x18\
 | 
											
												
													
														|  | 
 |  | +    \x01\x20\x01(\tR\x06gridId\x12\x1c\n\x05field\x18\x02\x20\x01(\x0b2\x06.\
 | 
											
												
													
														|  | 
 |  | +    FieldR\x05field\x12(\n\x10type_option_data\x18\x03\x20\x01(\x0cR\x0etype\
 | 
											
												
													
														|  | 
 |  | +    OptionData\"-\n\rRepeatedField\x12\x1c\n\x05items\x18\x01\x20\x03(\x0b2\
 | 
											
												
													
														|  | 
 |  | +    \x06.FieldR\x05items\"7\n\x12RepeatedFieldOrder\x12!\n\x05items\x18\x01\
 | 
											
												
													
														|  | 
 |  | +    \x20\x03(\x0b2\x0b.FieldOrderR\x05items\"T\n\x08RowOrder\x12\x15\n\x06ro\
 | 
											
												
													
														|  | 
 |  | +    w_id\x18\x01\x20\x01(\tR\x05rowId\x12\x19\n\x08block_id\x18\x02\x20\x01(\
 | 
											
												
													
														|  | 
 |  | +    \tR\x07blockId\x12\x16\n\x06height\x18\x03\x20\x01(\x05R\x06height\"\xb8\
 | 
											
												
													
														|  | 
 |  | +    \x01\n\x03Row\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12@\n\x10cell_b\
 | 
											
												
													
														|  | 
 |  | +    y_field_id\x18\x02\x20\x03(\x0b2\x17.Row.CellByFieldIdEntryR\rcellByFiel\
 | 
											
												
													
														|  | 
 |  | +    dId\x12\x16\n\x06height\x18\x03\x20\x01(\x05R\x06height\x1aG\n\x12CellBy\
 | 
											
												
													
														|  | 
 |  | +    FieldIdEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12\x1b\n\x05va\
 | 
											
												
													
														|  | 
 |  | +    lue\x18\x02\x20\x01(\x0b2\x05.CellR\x05value:\x028\x01\")\n\x0bRepeatedR\
 | 
											
												
													
														|  | 
 |  | +    ow\x12\x1a\n\x05items\x18\x01\x20\x03(\x0b2\x04.RowR\x05items\"5\n\x11Re\
 | 
											
												
													
														|  | 
 |  | +    peatedGridBlock\x12\x20\n\x05items\x18\x01\x20\x03(\x0b2\n.GridBlockR\
 | 
											
												
													
														|  | 
 |  | +    \x05items\"U\n\x0eGridBlockOrder\x12\x19\n\x08block_id\x18\x01\x20\x01(\
 | 
											
												
													
														|  | 
 |  | +    \tR\x07blockId\x12(\n\nrow_orders\x18\x02\x20\x03(\x0b2\t.RowOrderR\trow\
 | 
											
												
													
														|  | 
 |  | +    Orders\"_\n\rIndexRowOrder\x12&\n\trow_order\x18\x01\x20\x01(\x0b2\t.Row\
 | 
											
												
													
														|  | 
 |  | +    OrderR\x08rowOrder\x12\x16\n\x05index\x18\x02\x20\x01(\x05H\0R\x05indexB\
 | 
											
												
													
														|  |      \x0e\n\x0cone_of_index\"Q\n\x0fUpdatedRowOrder\x12&\n\trow_order\x18\x01\
 |  |      \x0e\n\x0cone_of_index\"Q\n\x0fUpdatedRowOrder\x12&\n\trow_order\x18\x01\
 | 
											
												
													
														|  |      \x20\x01(\x0b2\t.RowOrderR\x08rowOrder\x12\x16\n\x03row\x18\x02\x20\x01(\
 |  |      \x20\x01(\x0b2\t.RowOrderR\x08rowOrder\x12\x16\n\x03row\x18\x02\x20\x01(\
 | 
											
												
													
														|  |      \x0b2\x04.RowR\x03row\"\xc6\x01\n\x11GridRowsChangeset\x12\x19\n\x08bloc\
 |  |      \x0b2\x04.RowR\x03row\"\xc6\x01\n\x11GridRowsChangeset\x12\x19\n\x08bloc\
 |