{
  "type": "object",
  "$schema": "http://json-schema.org/draft-04/schema",
  "id": "http://jsonschema.net",
  "properties": {
    "_extensions": {
      "type": "object"
    },
    "_enabledExtensions": {
      "type":"object"
    },
    "_theme": {
      "type": "string",
      "default": "adapt-contrib-vanilla"
    },
    "_menu": {
      "type": "string",
      "default": "adapt-contrib-boxMenu"
    },
    "_courseId": {
      "type": "objectid",
      "required": true
    },
    "_completionCriteria": {
      "type": "object",
      "title": "Completion criteria",
      "properties": {
        "_requireContentCompleted": {
          "type": "boolean",
          "default": true,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Require content completion",
          "help": "Specifies that all content on the course must be completed"
        },
        "_requireAssessmentCompleted": {
          "type": "boolean",
          "default": false,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Require assessment completion",
          "help": "Specifies that all assessments on the course must be completed"
        }
      }
    },
    "_defaultLanguage": {
      "type": "string",
      "required": true,
      "default": "en",
      "title": "Default Language",
      "inputType": "Text",
      "validators": ["required"]
    },
    "_defaultDirection": {
      "type": "string",
      "required": true,
      "default": "ltr",
      "title": "Text Direction",
      "validators": ["required"],
      "inputType": {
        "type": "Select",
        "options": [
          "ltr",
          "rtl"
        ]
      }
    },
    "_accessibility": {
      "type": "object",
      "title": "Accessibility",
      "properties" : {
        "_isEnabled": {
          "type": "boolean",
          "default": true,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Enabled?"
        },
        "_isTextProcessorEnabled": {
          "type": "boolean",
          "default": false,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Enable text reader support?",
          "help": "Adds focusing to assist text reader software"
        },
        "_isSkipNavigationEnabled": {
          "type": "boolean",
          "default": true,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Enable Skip Navigation link?",
          "help": "Adds a link to the start of the page to allow assistive technology users to skip over the navigation and straight into to the page content."
        },
        "_ariaLevels": {
          "type": "object",
          "title": "ARIA Levels",
          "help": "Defines what value to assign to the aria-level attribute for the various elements of Adapt",
          "properties" : {
            "_menu": {
              "type": "number",
              "required": true,
              "default": 1,
              "title": "Menu element ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            },
            "_menuItem": {
              "type": "number",
              "required": true,
              "default": 2,
              "title": "Menu Item element ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            },
            "_page": {
              "type": "number",
              "required": true,
              "default": 1,
              "title": "Page element ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            },
            "_article": {
              "type": "number",
              "required": true,
              "default": 2,
              "title": "Article element ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            },
            "_block": {
              "type": "number",
              "required": true,
              "default": 3,
              "title": "Block element ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            },
            "_component": {
              "type": "number",
              "required": true,
              "default": 4,
              "title": "Component element ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            },
            "_componentItem": {
              "type": "number",
              "required": true,
              "default": 5,
              "title": "Component Item element ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            },
            "_notify": {
              "type": "number",
              "required": true,
              "default": 1,
              "title": "Notify popup title ARIA level",
              "inputType": "Number",
              "validators": ["required", "number"]
            }
          }
        },
        "_options": {
          "type": "object",
          "default": {},
          "title": "Accessibility Extended Options",
          "inputType": {
            "type": "CodeEditor",
            "mode": "json"
          },
          "validators": [],
          "help": "Optional object that can be used to customize the accessibility behaviour"
        }
      }
    },
    "screenSize": {
      "type": "object",
      "title": "Screen Size",
      "properties": {
        "small": {
          "type": "number",
          "required": true,
          "default": 519,
          "title": "Small",
          "inputType": "Number",
          "validators": ["required", "number"],
          "help": "Pixel width for the small breakpoint, e.g. cellphones"
        },
        "medium": {
          "type": "number",
          "required": true,
          "default": 759,
          "title": "Medium",
          "inputType": "Number",
          "validators": ["required", "number"],
          "help": "Pixel width for the medium breakpoint, e.g. tablet devices"
        },
        "large": {
          "type": "number",
          "required": true,
          "default": 1024,
          "title": "Large",
          "inputType": "Number",
          "validators": ["required", "number"],
          "help": "Pixel width for the large breakpoint, e.g. laptop/desktop computers"
        }
      }
    },
    "_questionWeight": {
      "type": "number",
      "required": true,
      "default": 1,
      "isSetting": true,
      "title": "Question Weight",
      "inputType": "Number",
      "validators": ["required", "number"]
    },
    "_drawer": {
      "type": "object",
      "isSetting": false,
      "title": "",
      "properties": {
        "_showEasing": {
          "type": "string",
          "required": true,
          "default": "easeOutQuart",
          "title": "Show Easing",
          "inputType": {
            "type": "Select",
            "options": [
              "easeInSine",
              "easeOutSine",
              "easeInOutSine",
              "easeInQuad",
              "easeOutQuad",
              "easeInOutQuad",
              "easeInCubic",
              "easeOutCubic",
              "easeInOutCubic",
              "easeInQuart",
              "easeOutQuart",
              "easeInOutQuart",
              "easeInQuint",
              "easeOutQuint",
              "easeInOutQuint",
              "easeInExpo",
              "easeOutExpo",
              "easeInOutExpo",
              "easeInCirc",
              "easeOutCirc",
              "easeInOutCirc",
              "easeInBack",
              "easeOutBack",
              "easeInOutBack",
              "easeInElastic",
              "easeOutElastic",
              "easeInOutElastic",
              "easeInBounce",
              "easeOutBounce",
              "easeInOutBounce"
            ]
          },
          "validators": ["required"]
        },
        "_hideEasing": {
          "type": "string",
          "required": true,
          "default": "easeInQuart",
          "title": "Hide Easing",
          "inputType": {
            "type": "Select",
            "options": [
              "easeInSine",
              "easeOutSine",
              "easeInOutSine",
              "easeInQuad",
              "easeOutQuad",
              "easeInOutQuad",
              "easeInCubic",
              "easeOutCubic",
              "easeInOutCubic",
              "easeInQuart",
              "easeOutQuart",
              "easeInOutQuart",
              "easeInQuint",
              "easeOutQuint",
              "easeInOutQuint",
              "easeInExpo",
              "easeOutExpo",
              "easeInOutExpo",
              "easeInCirc",
              "easeOutCirc",
              "easeInOutCirc",
              "easeInBack",
              "easeOutBack",
              "easeInOutBack",
              "easeInElastic",
              "easeOutElastic",
              "easeInOutElastic",
              "easeInBounce",
              "easeOutBounce",
              "easeInOutBounce"
            ]
          },
          "validators": ["required"]
        },
        "_duration": {
          "type": "number",
          "required": true,
          "default": 400,
          "title": "Duration",
          "inputType": "Number",
          "validators": ["required", "number"]
        }
      }
    },
    "_generateSourcemap": {
      "type": "boolean",
      "default": false,
      "isSetting": true,
      "inputType": "Checkbox",
      "validators": [],
      "title": "Generate sourcemaps?",
      "help": "Allows the course JavaScript & CSS to be debugged via the browser's developer tools."
    },
    "_forceRouteLocking": {
      "type": "boolean",
      "default": true,
      "isSetting": true,
      "inputType": "Checkbox",
      "validators": [],
      "title": "Enforce route locking?",
      "help": "If locking is enabled, this setting prevents navigating to locked routes"
    },
    "_disableAnimationFor": {
      "type": "array",
      "default": [],
      "title": "Disable animation for",
      "isSetting": true,
      "inputType": "List",
      "help": "Allows you to disable some animations (e.g. the drawer close animation) on platform(s) where they are not performing well, using CSS selectors to target the relevant platform(s) via the classes on the HTML element."
    },
    "_logging": {
      "type": "object",
      "title": "Logging",
      "properties": {
        "_isEnabled": {
          "type": "boolean",
          "default": true,
          "required": true,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Enabled?"
        },
        "_level": {
          "type": "string",
          "required": true,
          "default" : "info",
          "title" : "Log Level",
          "validators": [],
          "inputType": {
            "type": "Select",
            "options": [
              "debug",
              "info",
              "warn",
              "error",
              "fatal"
            ]
          }
        },
        "_console": {
          "type": "boolean",
          "default": true,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Log to browser console?"
        }
      }
    },
    "_scrollingContainer": {
      "type": "object",
      "title": "iFrame and Screen Reader scrolling support",
      "properties" : {
        "_isEnabled": {
          "type": "boolean",
          "default": false,
          "required": true,
          "inputType": "Checkbox",
          "validators": [],
          "title": "Enabled?"
        },
        "_limitToSelector": {
          "type": "string",
          "required": false,
          "default": "",
          "title": "Limit to selector",
          "inputType": "Text",
          "validators": [],
          "help": "CSS selector to match against the HTML element when determining whether this should be active or not."
        }
      }
    },
    "themeSettings": {
      "type": "object"
    },
    "_themePreset": {
      "type": "objectid",
      "required": false
    }
  }
}
