// flynt-disable enum-value-upper-case
// flynt-disable package-matches-structure

syntax = "proto3";

package com.wixpress.appservice.api;
import "wix/api/annotations.proto";

// The supported [CSS Data Types](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units/CSS_data_types) in Javascript naming format
// Important note: This enum is only used for validation purposes css-custom-properties that point to value of a css-data-type,
// When adding new types make sure to add them also under CssPropertyTypeEnum.CssPropertyType
message CssDataTypeEnum {
  enum CssDataType{
    UNKNOWN_CssDataType = 0;
    number = 1;
    string = 2;
    angle = 3;
    color = 4;
    length = 5;
    percentage = 6;
    lengthPercentage = 7;
    blendMode = 8;
    customEnum = 9;
    time = 10;
    reserved 11, 12, 13, 14, 15, 16, 17, 18, 19, 20; // reserved for future css-data-types
  }
}

// DEPRECATED - DO NOT ADD TYPES TO THIS ENUM
message StyleTypeEnum {
  // The supported [CSS Property Types & CSS Data Types](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference#index) in Javascript naming format
  enum StyleType {
    UNKNOWN_StyleType = 0;

    // css-data-types
    number = 1;
    string = 2;
    angle = 3;
    length = 4;
    percentage = 5;
    lengthPercentage = 6;
    blendMode = 7;
    customEnum = 8;
    time = 9;
    reserved 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20; // reserved for future css-data-types

    // background properties
    background = 21;
    backgroundSize = 22;
    backgroundColor = 23;
    backgroundImage = 24;
    backgroundClip = 25;
    backgroundOrigin = 26;
    backgroundPosition = 27;
    backgroundRepeat = 28;
    backgroundAttachment = 29;
    reserved 30; // reserved for future background properties

    // margin properties
    margin = 31;
    marginTop = 32;
    marginRight = 33;
    marginBottom = 34;
    marginLeft = 35;
    marginInlineStart = 36;
    marginInlineEnd = 37;
    reserved 38, 39, 40; // reserved for future margin properties

    // padding properties
    padding = 41;
    paddingTop = 42;
    paddingRight = 43;
    paddingBottom = 44;
    paddingLeft = 45;
    paddingInlineStart = 46;
    paddingInlineEnd = 47;
    reserved 48, 49, 50; // reserved for future padding properties

    // border properties
    border = 51;
    borderWidth = 52;
    borderStyle = 53;
    borderColor = 54;

    borderTop = 55;
    borderTopColor = 56;
    borderTopWidth = 57;
    borderTopStyle = 58;

    borderRight = 59;
    borderRightColor = 60;
    borderRightWidth = 61;
    borderRightStyle = 62;

    borderBottom = 63;
    borderBottomColor = 64;
    borderBottomWidth = 65;
    borderBottomStyle = 66;

    borderLeft = 67;
    borderLeftColor = 68;
    borderLeftWidth = 69;
    borderLeftStyle = 70;

    borderInlineStart = 71;
    borderInlineStartColor = 72;
    borderInlineStartWidth = 73;
    borderInlineStartStyle = 74;

    borderInlineEnd = 75;
    borderInlineEndColor = 76;
    borderInlineEndWidth = 77;
    borderInlineEndStyle = 78;
    reserved 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ; // reserved for future border properties

    // border-radius properties
    borderRadius = 91;
    borderTopLeftRadius = 92;
    borderTopRightRadius = 93;
    borderBottomRightRadius = 94;
    borderBottomLeftRadius = 95;

    borderStartStartRadius = 96;
    borderStartEndRadius = 97;
    borderEndStartRadius = 98;
    borderEndEndRadius = 99;
    reserved 100; // reserved for border-radius properties

    // font properties
    font = 101;
    fontFamily = 102;
    fontSize = 103;
    fontStretch = 104;
    fontStyle = 105;
    fontVariant = 106;
    fontWeight = 107;
    lineHeight = 108;

    // text properties
    color = 109;
    letterSpacing = 110;
    writingMode = 111;
    textAlign = 112;
    textTransform = 113;
    textShadow = 114;
    textOverflow = 115;
    textIndent = 116;
    reserved 117, 118, 119, 120; // reserved for future text properties

    // text-decoration properties
    textDecoration = 121;
    textDecorationColor = 122;
    textDecorationLine = 123;
    textDecorationStyle = 124;
    textDecorationThickness = 125;

    // box related properties
    boxShadow = 126;
    opacity = 127;
    overflow = 128;
    reserved 129, 130; // reserved for future box related properties

    // layout properties
    display = 131;
    alignSelf = 132;
    justifyContent = 133;
    alignItems = 134;
    flexDirection = 135;
    height = 136;
    width = 137;
    gap = 138;
    columnGap = 139;
    rowGap = 140;

    // filters
    filter = 141;
    backdropFilter = 142;

    // media sizing & alignment
    objectFit = 143;
    objectPosition = 144;

    // blending & compositing
    mixBlendMode = 145;
    isolation = 146;

    // stroke properties
    stroke = 147;
    strokeWidth = 148;
    strokeOpacity = 149;

    // fill properties
    fill = 150;
    fillOpacity = 151;
  }
}

message CssPropertyEnum {
  // The supported [CSS Property Types & CSS Data Types](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference#index) and
  // [CSS Data Types](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units/CSS_data_types) in Javascript naming format
  enum CssPropertyType {
    UNKNOWN_CssPropertyType = 0;

    // css-data-types
    number = 1;
    string = 2;
    angle = 3;
    length = 4;
    percentage = 5;
    lengthPercentage = 6;
    blendMode = 7;
    customEnum = 8;
    time = 9;
    reserved 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20; // reserved for future css-data-types

    // background properties
    background = 21;
    backgroundSize = 22;
    backgroundColor = 23;
    backgroundImage = 24;
    backgroundClip = 25;
    backgroundOrigin = 26;
    backgroundPosition = 27;
    backgroundRepeat = 28;
    backgroundAttachment = 29;
    reserved 30; // reserved for future background properties

    // margin properties
    margin = 31;
    marginTop = 32;
    marginRight = 33;
    marginBottom = 34;
    marginLeft = 35;
    marginInlineStart = 36;
    marginInlineEnd = 37;
    reserved 38, 39, 40; // reserved for future margin properties

    // padding properties
    padding = 41;
    paddingTop = 42;
    paddingRight = 43;
    paddingBottom = 44;
    paddingLeft = 45;
    paddingInlineStart = 46;
    paddingInlineEnd = 47;
    reserved 48, 49, 50; // reserved for future padding properties

    // border properties
    border = 51;
    borderWidth = 52;
    borderStyle = 53;
    borderColor = 54;

    borderTop = 55;
    borderTopColor = 56;
    borderTopWidth = 57;
    borderTopStyle = 58;

    borderRight = 59;
    borderRightColor = 60;
    borderRightWidth = 61;
    borderRightStyle = 62;

    borderBottom = 63;
    borderBottomColor = 64;
    borderBottomWidth = 65;
    borderBottomStyle = 66;

    borderLeft = 67;
    borderLeftColor = 68;
    borderLeftWidth = 69;
    borderLeftStyle = 70;

    borderInlineStart = 71;
    borderInlineStartColor = 72;
    borderInlineStartWidth = 73;
    borderInlineStartStyle = 74;

    borderInlineEnd = 75;
    borderInlineEndColor = 76;
    borderInlineEndWidth = 77;
    borderInlineEndStyle = 78;
    reserved 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ; // reserved for future border properties

    // border-radius properties
    borderRadius = 91;
    borderTopLeftRadius = 92;
    borderTopRightRadius = 93;
    borderBottomRightRadius = 94;
    borderBottomLeftRadius = 95;

    borderStartStartRadius = 96;
    borderStartEndRadius = 97;
    borderEndStartRadius = 98;
    borderEndEndRadius = 99;
    reserved 100; // reserved for border-radius properties

    // font properties
    font = 101;
    fontFamily = 102;
    fontSize = 103;
    fontStretch = 104;
    fontStyle = 105;
    fontVariant = 106;
    fontWeight = 107;
    lineHeight = 108;

    // text properties
    color = 109;
    letterSpacing = 110;
    writingMode = 111;
    textAlign = 112;
    textTransform = 113;
    textShadow = 114;
    textOverflow = 115;
    textIndent = 116;
    reserved 117, 118, 119, 120; // reserved for future text properties

    // text-decoration properties
    textDecoration = 121;
    textDecorationColor = 122;
    textDecorationLine = 123;
    textDecorationStyle = 124;
    textDecorationThickness = 125;

    // box related properties
    boxShadow = 126;
    opacity = 127;
    overflow = 128;
    reserved 129, 130; // reserved for future box related properties

    // layout properties
    display = 131;
    alignSelf = 132;
    justifyContent = 133;
    alignItems = 134;
    flexDirection = 135;
    height = 136;
    width = 137;
    gap = 138;
    columnGap = 139;
    rowGap = 140;

    // filters
    filter = 141;
    backdropFilter = 142;

    // media sizing & alignment
    objectFit = 143;
    objectPosition = 144;

    // blending & compositing
    mixBlendMode = 145;
    isolation = 146;

    // stroke properties
    stroke = 147;
    strokeWidth = 148;
    strokeOpacity = 149;

    // fill properties
    fill = 150;
    fillOpacity = 151;
  }
}

message FilterFunctionEnum {
  enum FilterFunction {
    UNKNOWN_FilterFunctions = 0;
    blur = 1;          // The value used for blur filter
    brightness = 2;    // The value used for brightness filter
    contrast = 3;      // The value used for contrast filter
    drop_shadow = 4;   // The value used for drop-shadow filter
    grayscale = 5;     // The value used for grayscale filter
    hue_rotate = 6;    // The value used for hue-rotate filter
    invert = 7;        // The value used for invert filter
    opacity = 8;       // The value used for opacity filter
    sepia = 9;         // The value used for sepia filter
    saturate = 10;     // The value used for saturate filter
  }
}

// Enum for display values
message DisplayValueEnum {
  enum DisplayValue {
    UNKNOWN_DisplayValue = 0;
    none = 1;
    block = 2;
    inline = 3;
    flow = 4;
    flowRoot = 5;
    table = 6;
    flex = 7;
    grid = 8;
    list_item = 9;
    contents = 10;
    inline_block = 11;
    inline_table = 12;
    inline_flex = 13;
    inline_grid = 14;
  }
}

message WritingModeValueEnum {
  enum WritingModeValue {
    UNKNOWN_WritingModeValue = 0;
    horizontalTb = 1;
    verticalRl = 2;
    verticalLr = 3;
    sidewaysRl = 4;
    sidewaysLr = 5;
  }
}

message BackgroundMode {
  enum BackgroundModeEnum {
    UNKNOWN_BackgroundModeEnum = 0;
    shapeDividerSvg = 1 [(.wix.api.enum_exposure) = INTERNAL];
  }
}
