{
  "mixins": [
    "composables/private.useCellWidth",
    "composables/private.useCheckChange",
    "composables/private.useMove",
    "composables/private.useColumn",
    "composables/private.useCommon",
    "composables/private.useInterval",
    "composables/private.useMaxDays",
    "composables/private.useTimes",
    "composables/private.useResource",
    "composables/private.useNavigation"
  ],
  "meta": {
    "docsUrl": "https://qcalendar.netlify.app/developing/qcalendar-resource"
  },
  "props": {
    "sticky": {
      "type": "Boolean",
      "category": "behavior",
      "desc": "Turns on sticky resources and intervals",
      "applicable": [
        "resource",
        "day-resource"
      ]
    },
    "interval-width": {
      "type": [
        "Number",
        "String"
      ],
      "category": "behavior",
      "desc": "The maximum width in pixels for the interval width",
      "default": "100",
      "applicable": [
        "resource",
        "day-resource"
      ],
      "examples": [
        "60",
        "'100'"
      ]
    }
  },
  "events": {
    "click-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "contextmenu-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "mousedown-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "mouseup-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "mouseenter-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "mouseleave-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "mousemove-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "touchstart-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "touchend-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    },
    "touchmove-resource": {
      "desc": "Occurs on resource area",
      "applicable": [
        "scheduler",
        "week-scheduler",
        "resource",
        "day-resource",
        "month-scheduler",
        "custom-scheduler"
      ],
      "params": {
        "data": {
          "type": "Object",
          "desc": "The data passed to the function",
          "__exemption": [
            "examples"
          ],
          "definition": {
            "scope": {
              "type": "Object",
              "desc": "The scope of the event",
              "__exemption": [
                "examples"
              ],
              "definition": {
                "resource": {
                  "type": "Object",
                  "tsType": "ResourceObject",
                  "desc": "The resource object associated with the event. Only applicable for resource views",
                  "__exemption": [
                    "examples"
                  ]
                },
                "intervals": {
                  "type": "Array",
                  "tsType": "TimestampArray",
                  "desc": "An array of timestamps of the intervals",
                  "__exemption": [
                    "examples"
                  ]
                },
                "index": {
                  "type": "Number",
                  "desc": "The index of the resource",
                  "__exemption": [
                    "examples"
                  ]
                }
              }
            },
            "event": {
              "type": "Object",
              "desc": "JS event object",
              "__exemption": [
                "examples"
              ]
            }
          }
        }
      }
    }
  },
  "methods": {
    "timeStartPos": {
      "desc": "Calculates the starting y position of the passed in time",
      "params": {
        "time": {
          "type": "String",
          "desc": "The time for which a position is needed in 24-hour format (HH:mm)",
          "examples": [
            "'09:00'"
          ]
        },
        "clamp": {
          "type": "Boolean",
          "desc": "Clamp negative values to 0",
          "default": "true"
        }
      },
      "returns": {
        "type": "Number",
        "desc": "The absolute y starting position, but `false` on invalid time parameter",
        "examples": [
          "120",
          "482"
        ]
      }
    },
    "timeDurationHeight": {
      "desc": "Given a duration (in minutes), will return the css height value",
      "params": {
        "duration": {
          "type": [
            "Number",
            "String"
          ],
          "desc": "The number of minutes for the event to calculate it's height",
          "examples": [
            "'300'",
            "900"
          ]
        }
      },
      "returns": {
        "type": "Number",
        "desc": "The height (in pixels) to be used for the event",
        "examples": [
          "80",
          "120"
        ]
      }
    },
    "scrollToTime": {
      "desc": "When on an interval view, scroll to the passed in time (y position)",
      "returns": {
        "type": "Boolean",
        "desc": "If the procedure was successful or not"
      },
      "params": {
        "time": {
          "type": "String",
          "desc": "The time in which to scoll to. If the time is already visible on the viewport, this function will have no affect.",
          "required": true,
          "examples": [
            "'09:00'"
          ]
        },
        "duration": {
          "type": "Number",
          "desc": "The amount of time in milliseconds to do the scroll",
          "examples": [
            "200"
          ]
        }
      }
    }
  },
  "slots": {}
}