{
  "props": {
    "mask": {
      "type": "String",
      "desc": "Custom mask or one of the predefined mask names",
      "examples": [
        "'###-##'", "'date'", "'datetime'", "'time'", "'fulltime'", "'phone'", "'card'"
      ],
      "category": "mask"
    },

    "fill-mask": {
      "type": [ "Boolean", "String" ],
      "desc": "Fills string with specified characters (or underscore if value is not string) to fill mask's length",
      "examples": [ "true", "'0'", "'_'" ],
      "category": "mask"
    },

    "reverse-fill-mask": {
      "type": "Boolean",
      "desc": "Fills string from the right side of the mask",
      "category": "mask"
    },

    "unmasked-value": {
      "type": "Boolean",
      "desc": "Model will be unmasked (won't contain tokens/separation characters)",
      "category": "mask"
    },

    "mask-tokens": {
      "type": "Object",
      "desc": "Object of custom mask tokens to be added on top of the default ones; Can also override any of the default ones",
      "definition": {
        "...tokenCharacter": {
          "type": "Object",
          "desc": "The definition for the current custom mask token",
          "required": true,
          "definition": {
            "pattern": {
              "type": "String",
              "required": true,
              "desc": "A string representing a regular expression to match against a single character",
              "examples": [ "'[0-9]'", "'[a-zA-Z]'" ]
            },
            "negate": {
              "type": "String",
              "required": true,
              "desc": "A string representing a regular expression to NOT match against a single character",
              "examples": [ "'[^0-9]'", "'[^a-zA-Z]'" ]
            },
            "transform": {
              "type": "Function",
              "required": false,
              "desc": "A function that takes the character as argument and returns the transformed character",
              "examples": [ "v => v.toLocaleUpperCase()" ],
              "params": {
                "char": {
                  "type": "String",
                  "required": true,
                  "desc": "The character being transformed",
                  "examples": [ "'a'", "'1'" ]
                }
              },
              "returns": {
                "type": "String",
                "desc": "The transformed character"
              }
            }
          },
          "examples": [
            "{ pattern: '[0-4a-eA-E]', negate: '[^0-4a-eA-E]', transform: v => v.toLocaleUpperCase() }",
            "{ pattern: '[5-8]', negate: '[^5-8]' }"
          ]
        }
      },
      "examples": [ "{ C: { pattern: '[0-4a-eA-E]', negate: '[^0-4a-eA-E]', transform: v => v.toLocaleUpperCase() } }" ],
      "category": "mask",
      "addedIn": "v2.18.4"
    }
  }
}
