diff --git a/api/ICAL.Binary.html b/api/ICAL.Binary.html index 2b534873..2fee260d 100644 --- a/api/ICAL.Binary.html +++ b/api/ICAL.Binary.html @@ -1,3 +1,3 @@ Class: Binary
On this page

ICAL. Binary

Represents the BINARY value type, which contains extra methods for encoding and decoding.

Constructor

new Binary(aValue)

Creates a new ICAL.Binary instance

Parameters:
NameTypeDescription
aValueString

The binary data for this value

Members

(constant) icaltype

The type name, to be used in the jCal object.

Default Value
  • "binary"

Methods

decodeValue() → {String}

Base64 decode the current value

Returns:

The base64-decoded value

Type: 
String

setEncodedValue(aValue)

Encodes the passed parameter with base64 and sets the internal value to the result.

Parameters:
NameTypeDescription
aValueString

The raw binary value to encode

toString() → {String}

The string representation of this value

Returns:
Type: 
String

(static) fromString(aString) → {ICAL.Binary}

Creates a binary value from the given string.

Parameters:
NameTypeDescription
aStringString

The binary value string

Returns:

The binary value instance

Type: 
ICAL.Binary
Home
\ No newline at end of file +
On this page

ICAL. Binary

Represents the BINARY value type, which contains extra methods for encoding and decoding.

Constructor

new Binary(aValue)

Creates a new ICAL.Binary instance

Parameters:
NameTypeDescription
aValueString

The binary data for this value

Members

(constant) icaltype

The type name, to be used in the jCal object.

Default Value
  • "binary"

Methods

decodeValue() → {String}

Base64 decode the current value

Returns:

The base64-decoded value

Type: 
String

setEncodedValue(aValue)

Encodes the passed parameter with base64 and sets the internal value to the result.

Parameters:
NameTypeDescription
aValueString

The raw binary value to encode

toString() → {String}

The string representation of this value

Returns:
Type: 
String

(static) fromString(aString) → {ICAL.Binary}

Creates a binary value from the given string.

Parameters:
NameTypeDescription
aStringString

The binary value string

Returns:

The binary value instance

Type: 
ICAL.Binary
Home
\ No newline at end of file diff --git a/api/ICAL.Component.html b/api/ICAL.Component.html index c9ac6a8e..8855ffd3 100644 --- a/api/ICAL.Component.html +++ b/api/ICAL.Component.html @@ -1,3 +1,3 @@ Class: Component
On this page

ICAL. Component

Wraps a jCal component, adding convenience methods to add, remove and update subcomponents and properties.

Constructor

new Component(jCal, parent)

Creates a new ICAL.Component instance.

Parameters:
NameTypeDescription
jCalArray | String

Raw jCal component data OR name of new component

parentICAL.Component

Parent component to associate

Members

(readonly) name

The name of this component

Methods

addProperty(property) → {ICAL.Property}

Adds an ICAL.Property to the component.

Parameters:
NameTypeDescription
propertyICAL.Property

The property to add

Returns:

The passed in property

Type: 
ICAL.Property

addPropertyWithValue(name, value) → {ICAL.Property}

Helper method to add a property with a value to the component.

Parameters:
NameTypeDescription
nameString

Property name to add

valueString | Number | Object

Property value

Returns:

The created property

Type: 
ICAL.Property

addSubcomponent(component) → {ICAL.Component}

Adds a single sub component.

Parameters:
NameTypeDescription
componentICAL.Component

The component to add

Returns:

The passed in component

Type: 
ICAL.Component

getAllProperties(nameopt) → {Array.<ICAL.Property>}

Get all properties in the component, optionally filtered by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

List of properties

Type: 
Array.<ICAL.Property>

getAllSubcomponents(nameopt) → {Array.<ICAL.Component>}

Finds all sub components, optionally filtering by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Optional name to filter by

Returns:

The found sub components

Type: 
Array.<ICAL.Component>

getFirstProperty(nameopt) → (nullable) {ICAL.Property}

Finds the first property, optionally with the given name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

The found property

Type: 
ICAL.Property

getFirstPropertyValue(nameopt) → (nullable) {String}

Returns first property's value, if available.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

The found property value.

Type: 
String

getFirstSubcomponent(nameopt) → (nullable) {ICAL.Component}

Finds first sub component, optionally filtered by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Optional name to filter by

Returns:

The found subcomponent

Type: 
ICAL.Component

getTimeZoneByID(tzid) → {ICAL.Timezone}

Retrieve a time zone definition from the component tree, if any is present. If the tree contains no time zone definitions or the TZID cannot be matched, returns null.

Parameters:
NameTypeDescription
tzidString

The ID of the time zone to retrieve

Returns:

The time zone corresponding to the ID, or null

Type: 
ICAL.Timezone

hasProperty(name) → {Boolean}

Returns true when a named property exists.

Parameters:
NameTypeDescription
nameString

The property name

Returns:

True, when property is found

Type: 
Boolean

removeAllProperties(nameopt) → {Boolean}

Removes all properties associated with this component, optionally filtered by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

True, when deleted

Type: 
Boolean

removeAllSubcomponents(nameopt)

Removes all components or (if given) all components by a particular name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase component name

removeProperty(nameOrProp) → {Boolean}

Removes a single property by name or the instance of the specific property.

Parameters:
NameTypeDescription
nameOrPropString | ICAL.Property

Property name or instance to remove

Returns:

True, when deleted

Type: 
Boolean

removeSubcomponent(nameOrComp) → {Boolean}

Removes a single component by name or the instance of a specific component.

Parameters:
NameTypeDescription
nameOrCompICAL.Component | String

Name of component, or component

Returns:

True when comp is removed

Type: 
Boolean

toJSON() → {Object}

Returns the Object representation of this component. The returned object is a live jCal object and should be cloned if modified.

Returns:
Type: 
Object

toString() → {String}

The string representation of this component.

Returns:
Type: 
String

updatePropertyWithValue(name, value) → {ICAL.Property}

Helper method that will update or create a property of the given name and sets its value. If multiple properties with the given name exist, only the first is updated.

Parameters:
NameTypeDescription
nameString

Property name to update

valueString | Number | Object

Property value

Returns:

The created property

Type: 
ICAL.Property

(static) fromString(str)

Create an ICAL.Component by parsing the passed iCalendar string.

Parameters:
NameTypeDescription
strString

The iCalendar string to parse

Home
\ No newline at end of file +
On this page

ICAL. Component

Wraps a jCal component, adding convenience methods to add, remove and update subcomponents and properties.

Constructor

new Component(jCal, parent)

Creates a new ICAL.Component instance.

Parameters:
NameTypeDescription
jCalArray | String

Raw jCal component data OR name of new component

parentICAL.Component

Parent component to associate

Members

(readonly) name

The name of this component

Methods

addProperty(property) → {ICAL.Property}

Adds an ICAL.Property to the component.

Parameters:
NameTypeDescription
propertyICAL.Property

The property to add

Returns:

The passed in property

Type: 
ICAL.Property

addPropertyWithValue(name, value) → {ICAL.Property}

Helper method to add a property with a value to the component.

Parameters:
NameTypeDescription
nameString

Property name to add

valueString | Number | Object

Property value

Returns:

The created property

Type: 
ICAL.Property

addSubcomponent(component) → {ICAL.Component}

Adds a single sub component.

Parameters:
NameTypeDescription
componentICAL.Component

The component to add

Returns:

The passed in component

Type: 
ICAL.Component

getAllProperties(nameopt) → {Array.<ICAL.Property>}

Get all properties in the component, optionally filtered by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

List of properties

Type: 
Array.<ICAL.Property>

getAllSubcomponents(nameopt) → {Array.<ICAL.Component>}

Finds all sub components, optionally filtering by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Optional name to filter by

Returns:

The found sub components

Type: 
Array.<ICAL.Component>

getFirstProperty(nameopt) → (nullable) {ICAL.Property}

Finds the first property, optionally with the given name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

The found property

Type: 
ICAL.Property

getFirstPropertyValue(nameopt) → (nullable) {String}

Returns first property's value, if available.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

The found property value.

Type: 
String

getFirstSubcomponent(nameopt) → (nullable) {ICAL.Component}

Finds first sub component, optionally filtered by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Optional name to filter by

Returns:

The found subcomponent

Type: 
ICAL.Component

getTimeZoneByID(tzid) → {ICAL.Timezone}

Retrieve a time zone definition from the component tree, if any is present. If the tree contains no time zone definitions or the TZID cannot be matched, returns null.

Parameters:
NameTypeDescription
tzidString

The ID of the time zone to retrieve

Returns:

The time zone corresponding to the ID, or null

Type: 
ICAL.Timezone

hasProperty(name) → {Boolean}

Returns true when a named property exists.

Parameters:
NameTypeDescription
nameString

The property name

Returns:

True, when property is found

Type: 
Boolean

removeAllProperties(nameopt) → {Boolean}

Removes all properties associated with this component, optionally filtered by name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase property name

Returns:

True, when deleted

Type: 
Boolean

removeAllSubcomponents(nameopt)

Removes all components or (if given) all components by a particular name.

Parameters:
NameTypeAttributesDescription
nameString<optional>

Lowercase component name

removeProperty(nameOrProp) → {Boolean}

Removes a single property by name or the instance of the specific property.

Parameters:
NameTypeDescription
nameOrPropString | ICAL.Property

Property name or instance to remove

Returns:

True, when deleted

Type: 
Boolean

removeSubcomponent(nameOrComp) → {Boolean}

Removes a single component by name or the instance of a specific component.

Parameters:
NameTypeDescription
nameOrCompICAL.Component | String

Name of component, or component

Returns:

True when comp is removed

Type: 
Boolean

toJSON() → {Object}

Returns the Object representation of this component. The returned object is a live jCal object and should be cloned if modified.

Returns:
Type: 
Object

toString() → {String}

The string representation of this component.

Returns:
Type: 
String

updatePropertyWithValue(name, value) → {ICAL.Property}

Helper method that will update or create a property of the given name and sets its value. If multiple properties with the given name exist, only the first is updated.

Parameters:
NameTypeDescription
nameString

Property name to update

valueString | Number | Object

Property value

Returns:

The created property

Type: 
ICAL.Property

(static) fromString(str)

Create an ICAL.Component by parsing the passed iCalendar string.

Parameters:
NameTypeDescription
strString

The iCalendar string to parse

Home
\ No newline at end of file diff --git a/api/ICAL.ComponentParser.html b/api/ICAL.ComponentParser.html index d0568474..f9c58bd5 100644 --- a/api/ICAL.ComponentParser.html +++ b/api/ICAL.ComponentParser.html @@ -1,6 +1,6 @@ Class: ComponentParser
On this page

ICAL. ComponentParser

The ComponentParser is used to process a String or jCal Object, firing callbacks for various found components, as well as completion.

Constructor

new ComponentParser(optionsopt)

Creates a new ICAL.ComponentParser instance.

Parameters:
NameTypeAttributesDescription
optionsObject<optional>

Component parser options

Properties
NameTypeDescription
parseEventBoolean

Whether events should be parsed

parseTimezeoneBoolean

Whether timezones should be parsed

Example
var options = {
+    
On this page

ICAL. ComponentParser

The ComponentParser is used to process a String or jCal Object, firing callbacks for various found components, as well as completion.

Constructor

new ComponentParser(optionsopt)

Creates a new ICAL.ComponentParser instance.

Parameters:
NameTypeAttributesDescription
optionsObject<optional>

Component parser options

Properties
NameTypeDescription
parseEventBoolean

Whether events should be parsed

parseTimezeoneBoolean

Whether timezones should be parsed

Example
var options = {
   // when false no events will be emitted for type
   parseEvent: true,
   parseTimezone: true
@@ -18,4 +18,4 @@
 
 };
 
-parser.process(stringOrComponent);

Members

parseEvent :Boolean

When true, parse events

Type:
  • Boolean

parseTimezone :Boolean

When true, parse timezones

Type:
  • Boolean

Methods

process(ical)

Process a string or parse ical object. This function itself will return nothing but will start the parsing process.

Events must be registered prior to calling this method.

Parameters:
NameTypeDescription
icalICAL.Component | String | Object

The component to process, either in its final form, as a jCal Object, or string representation

Type Definitions

oncomplete

Fired when parsing is complete

onerror

Fired if an error occurs during parsing.

onevent

Fired when a top level component (VEVENT) is found.

ontimezone

Fired when a top level component (VTIMEZONE) is found

\ No newline at end of file +parser.process(stringOrComponent);

Members

parseEvent :Boolean

When true, parse events

Type:
  • Boolean

parseTimezone :Boolean

When true, parse timezones

Type:
  • Boolean

Methods

process(ical)

Process a string or parse ical object. This function itself will return nothing but will start the parsing process.

Events must be registered prior to calling this method.

Parameters:
NameTypeDescription
icalICAL.Component | String | Object

The component to process, either in its final form, as a jCal Object, or string representation

Type Definitions

oncomplete

Fired when parsing is complete

onerror

Fired if an error occurs during parsing.

onevent

Fired when a top level component (VEVENT) is found.

ontimezone

Fired when a top level component (VTIMEZONE) is found

Home
\ No newline at end of file diff --git a/api/ICAL.Duration.html b/api/ICAL.Duration.html index 8482785a..e13dbe48 100644 --- a/api/ICAL.Duration.html +++ b/api/ICAL.Duration.html @@ -1,3 +1,3 @@ Class: Duration
On this page

ICAL. Duration

This class represents the "duration" value type, with various calculation and manipulation methods.

Constructor

new Duration(data)

Creates a new ICAL.Duration instance.

Parameters:
NameTypeDescription
dataObject

An object with members of the duration

Properties
NameTypeDescription
weeksNumber

Duration in weeks

daysNumber

Duration in days

hoursNumber

Duration in hours

minutesNumber

Duration in minutes

secondsNumber

Duration in seconds

isNegativeBoolean

If true, the duration is negative

Members

days :Number

The days in this duration

Type:
  • Number
Default Value
  • 0

hours :Number

The days in this duration

Type:
  • Number
Default Value
  • 0

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icalduration"

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "duration"

isNegative :Boolean

The seconds in this duration

Type:
  • Boolean
Default Value
  • false

minutes :Number

The minutes in this duration

Type:
  • Number
Default Value
  • 0

seconds :Number

The seconds in this duration

Type:
  • Number
Default Value
  • 0

weeks :Number

The weeks in this duration

Type:
  • Number
Default Value
  • 0

Methods

clone() → {ICAL.Duration}

Returns a clone of the duration object.

Returns:

The cloned object

Type: 
ICAL.Duration

compare(aOther) → {Number}

Compares the duration instance with another one.

Parameters:
NameTypeDescription
aOtherICAL.Duration

The instance to compare with

Returns:

-1, 0 or 1 for less/equal/greater

Type: 
Number

fromData(aData)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the duration

Properties
NameTypeDescription
weeksNumber

Duration in weeks

daysNumber

Duration in days

hoursNumber

Duration in hours

minutesNumber

Duration in minutes

secondsNumber

Duration in seconds

isNegativeBoolean

If true, the duration is negative

fromSeconds(aSeconds) → {ICAL.Duration}

Reads the passed seconds value into this duration object. Afterwards, members like days and weeks will be set up accordingly.

Parameters:
NameTypeDescription
aSecondsNumber

The duration value in seconds

Returns:

Returns this instance

Type: 
ICAL.Duration

normalize()

Normalizes the duration instance. For example, a duration with a value of 61 seconds will be normalized to 1 minute and 1 second.

reset()

Resets the duration instance to the default values, i.e. PT0S

toICALString() → {String}

The iCalendar string representation of this duration.

Returns:
Type: 
String

toSeconds() → {Number}

The duration value expressed as a number of seconds.

Returns:

The duration value in seconds

Type: 
Number

toString() → {String}

The string representation of this duration.

Returns:
Type: 
String

(static) fromData(aData) → {ICAL.Duration}

Creates a new ICAL.Duration instance from the given data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the duration

Properties
NameTypeDescription
weeksNumber

Duration in weeks

daysNumber

Duration in days

hoursNumber

Duration in hours

minutesNumber

Duration in minutes

secondsNumber

Duration in seconds

isNegativeBoolean

If true, the duration is negative

Returns:

The createad duration instance

Type: 
ICAL.Duration

(static) fromSeconds(aSeconds) → {ICAL.Duration}

Returns a new ICAL.Duration instance from the passed seconds value.

Parameters:
NameTypeDescription
aSecondsNumber

The seconds to create the instance from

Returns:

The newly created duration instance

Type: 
ICAL.Duration

(static) fromString(aStr) → {ICAL.Duration}

Creates a new ICAL.Duration instance from the passed string.

Parameters:
NameTypeDescription
aStrString

The string to parse

Returns:

The created duration instance

Type: 
ICAL.Duration

(static) isValueString(value) → {Boolean}

Checks if the given string is an iCalendar duration value.

Parameters:
NameTypeDescription
valueString

The raw ical value

Returns:

True, if the given value is of the duration ical type

Type: 
Boolean
Home
\ No newline at end of file +
On this page

ICAL. Duration

This class represents the "duration" value type, with various calculation and manipulation methods.

Constructor

new Duration(data)

Creates a new ICAL.Duration instance.

Parameters:
NameTypeDescription
dataObject

An object with members of the duration

Properties
NameTypeDescription
weeksNumber

Duration in weeks

daysNumber

Duration in days

hoursNumber

Duration in hours

minutesNumber

Duration in minutes

secondsNumber

Duration in seconds

isNegativeBoolean

If true, the duration is negative

Members

days :Number

The days in this duration

Type:
  • Number
Default Value
  • 0

hours :Number

The days in this duration

Type:
  • Number
Default Value
  • 0

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icalduration"

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "duration"

isNegative :Boolean

The seconds in this duration

Type:
  • Boolean
Default Value
  • false

minutes :Number

The minutes in this duration

Type:
  • Number
Default Value
  • 0

seconds :Number

The seconds in this duration

Type:
  • Number
Default Value
  • 0

weeks :Number

The weeks in this duration

Type:
  • Number
Default Value
  • 0

Methods

clone() → {ICAL.Duration}

Returns a clone of the duration object.

Returns:

The cloned object

Type: 
ICAL.Duration

compare(aOther) → {Number}

Compares the duration instance with another one.

Parameters:
NameTypeDescription
aOtherICAL.Duration

The instance to compare with

Returns:

-1, 0 or 1 for less/equal/greater

Type: 
Number

fromData(aData)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the duration

Properties
NameTypeDescription
weeksNumber

Duration in weeks

daysNumber

Duration in days

hoursNumber

Duration in hours

minutesNumber

Duration in minutes

secondsNumber

Duration in seconds

isNegativeBoolean

If true, the duration is negative

fromSeconds(aSeconds) → {ICAL.Duration}

Reads the passed seconds value into this duration object. Afterwards, members like days and weeks will be set up accordingly.

Parameters:
NameTypeDescription
aSecondsNumber

The duration value in seconds

Returns:

Returns this instance

Type: 
ICAL.Duration

normalize()

Normalizes the duration instance. For example, a duration with a value of 61 seconds will be normalized to 1 minute and 1 second.

reset()

Resets the duration instance to the default values, i.e. PT0S

toICALString() → {String}

The iCalendar string representation of this duration.

Returns:
Type: 
String

toSeconds() → {Number}

The duration value expressed as a number of seconds.

Returns:

The duration value in seconds

Type: 
Number

toString() → {String}

The string representation of this duration.

Returns:
Type: 
String

(static) fromData(aData) → {ICAL.Duration}

Creates a new ICAL.Duration instance from the given data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the duration

Properties
NameTypeDescription
weeksNumber

Duration in weeks

daysNumber

Duration in days

hoursNumber

Duration in hours

minutesNumber

Duration in minutes

secondsNumber

Duration in seconds

isNegativeBoolean

If true, the duration is negative

Returns:

The createad duration instance

Type: 
ICAL.Duration

(static) fromSeconds(aSeconds) → {ICAL.Duration}

Returns a new ICAL.Duration instance from the passed seconds value.

Parameters:
NameTypeDescription
aSecondsNumber

The seconds to create the instance from

Returns:

The newly created duration instance

Type: 
ICAL.Duration

(static) fromString(aStr) → {ICAL.Duration}

Creates a new ICAL.Duration instance from the passed string.

Parameters:
NameTypeDescription
aStrString

The string to parse

Returns:

The created duration instance

Type: 
ICAL.Duration

(static) isValueString(value) → {Boolean}

Checks if the given string is an iCalendar duration value.

Parameters:
NameTypeDescription
valueString

The raw ical value

Returns:

True, if the given value is of the duration ical type

Type: 
Boolean
Home
\ No newline at end of file diff --git a/api/ICAL.Event.html b/api/ICAL.Event.html index a72efce3..a7392d3e 100644 --- a/api/ICAL.Event.html +++ b/api/ICAL.Event.html @@ -1,3 +1,3 @@ Class: Event
On this page

ICAL. Event

ICAL.js is organized into multiple layers. The bottom layer is a raw jCal object, followed by the component/property layer. The highest level is the event representation, which this class is part of. See the layers guide for more details.

Constructor

new Event(componentopt, options)

Creates a new ICAL.Event instance.

Parameters:
NameTypeAttributesDescription
componentICAL.Component<optional>

The ICAL.Component to base this event on

optionsObject

Options for this event

Properties
NameTypeDescription
strictExceptionsBoolean

When true, will verify exceptions are related by their UUID

exceptionsArray.<(ICAL.Component|ICAL.Event)>

Exceptions to this event, either as components or events. If not specified exceptions will automatically be set in relation of component's parent

Members

(readonly) attendees :Array.<ICAL.Property>

The attendees in the event

Type:

color :String

The event color from rfc7986

Type:
  • String

description :String

The event description.

Type:
  • String

duration :ICAL.Duration

The duration. This can be the result directly from the property, or the duration calculated from start date and end date. Setting the property will remove any dtend properties.

endDate :ICAL.Time

The end date. This can be the result directly from the property, or the end date calculated from start date and duration. Setting the property will remove any duration properties.

exceptions :Array.<ICAL.Event>

List of related event exceptions.

Type:

location :String

The location of the event.

Type:
  • String

organizer :String

The organizer value as an uri. In most cases this is a mailto: uri, but it can also be something else, like urn:uuid:...

Type:
  • String

recurrenceId :ICAL.Time

The recurrence id for this event. See terminology for details.

sequence :Number

The sequence value for this event. Used for scheduling see terminology.

Type:
  • Number

startDate :ICAL.Time

The start date

strictExceptions :Boolean

When true, will verify exceptions are related by their UUID.

Type:
  • Boolean

summary :String

The event summary

Type:
  • String

uid :String

The uid of this event

Type:
  • String

Methods

findRangeException(time) → (nullable) {ICAL.Event}

Finds the range exception nearest to the given date.

Parameters:
NameTypeDescription
timeICAL.Time

usually an occurrence time of an event

Returns:

the related event/exception or null

Type: 
ICAL.Event

getOccurrenceDetails(occurrence) → {ICAL.Event.occurrenceDetails}

Returns the occurrence details based on its start time. If the occurrence has an exception will return the details for that exception.

NOTE: this method is intend to be used in conjunction with the iterator method.

Parameters:
NameTypeDescription
occurrenceICAL.Time

time occurrence

Returns:

Information about the occurrence

Type: 
ICAL.Event.occurrenceDetails

getRecurrenceTypes() → {Object.<ICAL.Recur.frequencyValues, Boolean>}

Returns the types of recurrences this event may have.

Returned as an object with the following possible keys:

  • YEARLY
  • MONTHLY
  • WEEKLY
  • DAILY
  • MINUTELY
  • SECONDLY
Returns:

Object of recurrence flags

Type: 
Object.<ICAL.Recur.frequencyValues, Boolean>

isRecurrenceException() → {Boolean}

Checks if the event describes a recurrence exception. See terminology for details.

Returns:

True, if the event describes a recurrence exception

Type: 
Boolean

isRecurring() → {Boolean}

Checks if the event is recurring

Returns:

True, if event is recurring

Type: 
Boolean

iterator(startTime) → {ICAL.RecurExpansion}

Builds a recur expansion instance for a specific point in time (defaults to startDate).

Parameters:
NameTypeDescription
startTimeICAL.Time

Starting point for expansion

Returns:

Expansion object

Type: 
ICAL.RecurExpansion

modifiesFuture() → {Boolean}

Checks if this record is an exception and has the RANGE=THISANDFUTURE value.

Returns:

True, when exception is within range

Type: 
Boolean

relateException(obj)

Relates a given event exception to this object. If the given component does not share the UID of this event it cannot be related and will throw an exception.

If this component is an exception it cannot have other exceptions related to it.

Parameters:
NameTypeDescription
objICAL.Component | ICAL.Event

Component or event

toString() → {String}

The string representation of this event.

Returns:
Type: 
String

Type Definitions

occurrenceDetails

This object is returned by getOccurrenceDetails

Type:
  • Object
Properties
NameTypeDescription
recurrenceIdICAL.Time

The passed in recurrence id

itemICAL.Event

The occurrence

startDateICAL.Time

The start of the occurrence

endDateICAL.Time

The end of the occurrence

Home
\ No newline at end of file +
On this page

ICAL. Event

ICAL.js is organized into multiple layers. The bottom layer is a raw jCal object, followed by the component/property layer. The highest level is the event representation, which this class is part of. See the layers guide for more details.

Constructor

new Event(componentopt, options)

Creates a new ICAL.Event instance.

Parameters:
NameTypeAttributesDescription
componentICAL.Component<optional>

The ICAL.Component to base this event on

optionsObject

Options for this event

Properties
NameTypeDescription
strictExceptionsBoolean

When true, will verify exceptions are related by their UUID

exceptionsArray.<(ICAL.Component|ICAL.Event)>

Exceptions to this event, either as components or events. If not specified exceptions will automatically be set in relation of component's parent

Members

(readonly) attendees :Array.<ICAL.Property>

The attendees in the event

Type:

color :String

The event color from rfc7986

Type:
  • String

description :String

The event description.

Type:
  • String

duration :ICAL.Duration

The duration. This can be the result directly from the property, or the duration calculated from start date and end date. Setting the property will remove any dtend properties.

endDate :ICAL.Time

The end date. This can be the result directly from the property, or the end date calculated from start date and duration. Setting the property will remove any duration properties.

exceptions :Array.<ICAL.Event>

List of related event exceptions.

Type:

location :String

The location of the event.

Type:
  • String

organizer :String

The organizer value as an uri. In most cases this is a mailto: uri, but it can also be something else, like urn:uuid:...

Type:
  • String

recurrenceId :ICAL.Time

The recurrence id for this event. See terminology for details.

sequence :Number

The sequence value for this event. Used for scheduling see terminology.

Type:
  • Number

startDate :ICAL.Time

The start date

strictExceptions :Boolean

When true, will verify exceptions are related by their UUID.

Type:
  • Boolean

summary :String

The event summary

Type:
  • String

uid :String

The uid of this event

Type:
  • String

Methods

findRangeException(time) → (nullable) {ICAL.Event}

Finds the range exception nearest to the given date.

Parameters:
NameTypeDescription
timeICAL.Time

usually an occurrence time of an event

Returns:

the related event/exception or null

Type: 
ICAL.Event

getOccurrenceDetails(occurrence) → {ICAL.Event.occurrenceDetails}

Returns the occurrence details based on its start time. If the occurrence has an exception will return the details for that exception.

NOTE: this method is intend to be used in conjunction with the iterator method.

Parameters:
NameTypeDescription
occurrenceICAL.Time

time occurrence

Returns:

Information about the occurrence

Type: 
ICAL.Event.occurrenceDetails

getRecurrenceTypes() → {Object.<ICAL.Recur.frequencyValues, Boolean>}

Returns the types of recurrences this event may have.

Returned as an object with the following possible keys:

  • YEARLY
  • MONTHLY
  • WEEKLY
  • DAILY
  • MINUTELY
  • SECONDLY
Returns:

Object of recurrence flags

Type: 
Object.<ICAL.Recur.frequencyValues, Boolean>

isRecurrenceException() → {Boolean}

Checks if the event describes a recurrence exception. See terminology for details.

Returns:

True, if the event describes a recurrence exception

Type: 
Boolean

isRecurring() → {Boolean}

Checks if the event is recurring

Returns:

True, if event is recurring

Type: 
Boolean

iterator(startTime) → {ICAL.RecurExpansion}

Builds a recur expansion instance for a specific point in time (defaults to startDate).

Parameters:
NameTypeDescription
startTimeICAL.Time

Starting point for expansion

Returns:

Expansion object

Type: 
ICAL.RecurExpansion

modifiesFuture() → {Boolean}

Checks if this record is an exception and has the RANGE=THISANDFUTURE value.

Returns:

True, when exception is within range

Type: 
Boolean

relateException(obj)

Relates a given event exception to this object. If the given component does not share the UID of this event it cannot be related and will throw an exception.

If this component is an exception it cannot have other exceptions related to it.

Parameters:
NameTypeDescription
objICAL.Component | ICAL.Event

Component or event

toString() → {String}

The string representation of this event.

Returns:
Type: 
String

Type Definitions

occurrenceDetails

This object is returned by getOccurrenceDetails

Type:
  • Object
Properties
NameTypeDescription
recurrenceIdICAL.Time

The passed in recurrence id

itemICAL.Event

The occurrence

startDateICAL.Time

The start of the occurrence

endDateICAL.Time

The end of the occurrence

Home
\ No newline at end of file diff --git a/api/ICAL.Period.html b/api/ICAL.Period.html index 960de738..4761bd49 100644 --- a/api/ICAL.Period.html +++ b/api/ICAL.Period.html @@ -1,3 +1,3 @@ Class: Period
On this page

ICAL. Period

This class represents the "period" value type, with various calculation and manipulation methods.

Constructor

new Period(aData)

Creates a new ICAL.Period instance. The passed data object cannot contain both and end date and a duration.

Parameters:
NameTypeDescription
aDataObject

An object with members of the period

Properties
NameTypeAttributesDescription
startICAL.Time<optional>

The start of the period

endICAL.Time<optional>

The end of the period

durationICAL.Duration<optional>

The duration of the period

Members

duration :ICAL.Duration

The duration of the period

end :ICAL.Time

The end of the period

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icalperiod"

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "period"

start :ICAL.Time

The start of the period

Methods

clone() → {ICAL.Period}

Returns a clone of the duration object.

Returns:

The cloned object

Type: 
ICAL.Period

getDuration() → {ICAL.Duration}

Calculates the duration of the period, either directly or by subtracting start from end date.

Returns:

The calculated duration

Type: 
ICAL.Duration

getEnd() → {ICAL.Time}

Calculates the end date of the period, either directly or by adding duration to start date.

Returns:

The calculated end date

Type: 
ICAL.Time

toICALString() → {String}

The iCalendar string representation of this period.

Returns:
Type: 
String

toJSON() → {Object}

The jCal representation of this period type.

Returns:
Type: 
Object

toString() → {String}

The string representation of this period.

Returns:
Type: 
String

(static) fromData(aData) → {ICAL.Period}

Creates a new ICAL.Period instance from the given data object. The passed data object cannot contain both and end date and a duration.

Parameters:
NameTypeDescription
aDataObject

An object with members of the period

Properties
NameTypeAttributesDescription
startICAL.Time<optional>

The start of the period

endICAL.Time<optional>

The end of the period

durationICAL.Duration<optional>

The duration of the period

Returns:

The period instance

Type: 
ICAL.Period

(static) fromJSON(aData, aProp, aLenient) → {ICAL.Period}

Returns a new period instance from the given jCal data array. The first member is always the start date string, the second member is either a duration or end date string.

Parameters:
NameTypeDescription
aDataArray.<String, String>

The jCal data array

aPropICAL.Property

The property this jCal data is on

aLenientBoolean

If true, data value can be both date and date-time

Returns:

The period instance

Type: 
ICAL.Period

(static) fromString(str, prop) → {ICAL.Period}

Creates a new ICAL.Period instance from the passed string.

Parameters:
NameTypeDescription
strString

The string to parse

propICAL.Property

The property this period will be on

Returns:

The created period instance

Type: 
ICAL.Period
Home
\ No newline at end of file +
On this page

ICAL. Period

This class represents the "period" value type, with various calculation and manipulation methods.

Constructor

new Period(aData)

Creates a new ICAL.Period instance. The passed data object cannot contain both and end date and a duration.

Parameters:
NameTypeDescription
aDataObject

An object with members of the period

Properties
NameTypeAttributesDescription
startICAL.Time<optional>

The start of the period

endICAL.Time<optional>

The end of the period

durationICAL.Duration<optional>

The duration of the period

Members

duration :ICAL.Duration

The duration of the period

end :ICAL.Time

The end of the period

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icalperiod"

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "period"

start :ICAL.Time

The start of the period

Methods

clone() → {ICAL.Period}

Returns a clone of the duration object.

Returns:

The cloned object

Type: 
ICAL.Period

getDuration() → {ICAL.Duration}

Calculates the duration of the period, either directly or by subtracting start from end date.

Returns:

The calculated duration

Type: 
ICAL.Duration

getEnd() → {ICAL.Time}

Calculates the end date of the period, either directly or by adding duration to start date.

Returns:

The calculated end date

Type: 
ICAL.Time

toICALString() → {String}

The iCalendar string representation of this period.

Returns:
Type: 
String

toJSON() → {Object}

The jCal representation of this period type.

Returns:
Type: 
Object

toString() → {String}

The string representation of this period.

Returns:
Type: 
String

(static) fromData(aData) → {ICAL.Period}

Creates a new ICAL.Period instance from the given data object. The passed data object cannot contain both and end date and a duration.

Parameters:
NameTypeDescription
aDataObject

An object with members of the period

Properties
NameTypeAttributesDescription
startICAL.Time<optional>

The start of the period

endICAL.Time<optional>

The end of the period

durationICAL.Duration<optional>

The duration of the period

Returns:

The period instance

Type: 
ICAL.Period

(static) fromJSON(aData, aProp, aLenient) → {ICAL.Period}

Returns a new period instance from the given jCal data array. The first member is always the start date string, the second member is either a duration or end date string.

Parameters:
NameTypeDescription
aDataArray.<String, String>

The jCal data array

aPropICAL.Property

The property this jCal data is on

aLenientBoolean

If true, data value can be both date and date-time

Returns:

The period instance

Type: 
ICAL.Period

(static) fromString(str, prop) → {ICAL.Period}

Creates a new ICAL.Period instance from the passed string.

Parameters:
NameTypeDescription
strString

The string to parse

propICAL.Property

The property this period will be on

Returns:

The created period instance

Type: 
ICAL.Period
Home
\ No newline at end of file diff --git a/api/ICAL.Property.html b/api/ICAL.Property.html index aa5c94d1..e69573a0 100644 --- a/api/ICAL.Property.html +++ b/api/ICAL.Property.html @@ -1,3 +1,3 @@ Class: Property
On this page

ICAL. Property

Provides a layer on top of the raw jCal object for manipulating a single property, with its parameters and value.

Constructor

new Property(jCal, parentopt)

Creates a new ICAL.Property instance.

It is important to note that mutations done in the wrapper directly mutate the jCal object used to initialize.

Can also be used to create new properties by passing the name of the property (as a String).

Parameters:
NameTypeAttributesDescription
jCalArray | String

Raw jCal representation OR the new name of the property

parentICAL.Component<optional>

Parent component

Members

(readonly) name :String

The name of this property, in lowercase.

Type:
  • String

parent :ICAL.Component

The parent component for this property.

(readonly) type :String

The value type for this property

Type:
  • String

Methods

getDefaultType() → {String}

Get the default type based on this property's name.

Returns:

The default type for this property

Type: 
String

getFirstParameter(name) → {String}

Gets first parameter on the property.

Parameters:
NameTypeDescription
nameString

Parameter name (lowercase)

Returns:

Parameter value

Type: 
String

getFirstValue() → {String}

Finds the first property value.

Returns:

First property value

Type: 
String

getParameter(name) → {Array|String}

Gets a parameter on the property.

Parameters:
NameTypeDescription
nameString

Parameter name (lowercase)

Returns:

Parameter value

Type: 
Array | String

getValues() → {Array}

Gets all values on the property.

NOTE: this creates an array during each call.

Returns:

List of values

Type: 
Array

removeAllValues()

Removes all values from this property

removeParameter(name)

Removes a parameter

Parameters:
NameTypeDescription
nameString

The parameter name

resetType(type)

Sets type of property and clears out any existing values of the current type.

Parameters:
NameTypeDescription
typeString

New iCAL type (see design.*.values)

setParameter(name, value)

Sets a parameter on the property.

Parameters:
NameTypeDescription
nameString

The parameter name

valueArray | String

The parameter value

setValue(value)

Sets the current value of the property. If this is a multi-value property, all other values will be removed.

Parameters:
NameTypeDescription
valueString | Object

New property value.

setValues(values)

Sets the values of the property. Will overwrite the existing values. This can only be used for multi-value properties.

Parameters:
NameTypeDescription
valuesArray

An array of values

toICALString() → {String}

The string representation of this component.

Returns:
Type: 
String

toJSON() → {Object}

Returns the Object representation of this component. The returned object is a live jCal object and should be cloned if modified.

Returns:
Type: 
Object

(static) fromString(str, designSetopt) → {ICAL.Property}

Create an ICAL.Property by parsing the passed iCalendar string.

Parameters:
NameTypeAttributesDescription
strString

The iCalendar string to parse

designSetICAL.design.designSet<optional>

The design data to use for this property

Returns:

The created iCalendar property

Type: 
ICAL.Property
Home
\ No newline at end of file +
On this page

ICAL. Property

Provides a layer on top of the raw jCal object for manipulating a single property, with its parameters and value.

Constructor

new Property(jCal, parentopt)

Creates a new ICAL.Property instance.

It is important to note that mutations done in the wrapper directly mutate the jCal object used to initialize.

Can also be used to create new properties by passing the name of the property (as a String).

Parameters:
NameTypeAttributesDescription
jCalArray | String

Raw jCal representation OR the new name of the property

parentICAL.Component<optional>

Parent component

Members

(readonly) name :String

The name of this property, in lowercase.

Type:
  • String

parent :ICAL.Component

The parent component for this property.

(readonly) type :String

The value type for this property

Type:
  • String

Methods

getDefaultType() → {String}

Get the default type based on this property's name.

Returns:

The default type for this property

Type: 
String

getFirstParameter(name) → {String}

Gets first parameter on the property.

Parameters:
NameTypeDescription
nameString

Parameter name (lowercase)

Returns:

Parameter value

Type: 
String

getFirstValue() → {String}

Finds the first property value.

Returns:

First property value

Type: 
String

getParameter(name) → {Array|String}

Gets a parameter on the property.

Parameters:
NameTypeDescription
nameString

Parameter name (lowercase)

Returns:

Parameter value

Type: 
Array | String

getValues() → {Array}

Gets all values on the property.

NOTE: this creates an array during each call.

Returns:

List of values

Type: 
Array

removeAllValues()

Removes all values from this property

removeParameter(name)

Removes a parameter

Parameters:
NameTypeDescription
nameString

The parameter name

resetType(type)

Sets type of property and clears out any existing values of the current type.

Parameters:
NameTypeDescription
typeString

New iCAL type (see design.*.values)

setParameter(name, value)

Sets a parameter on the property.

Parameters:
NameTypeDescription
nameString

The parameter name

valueArray | String

The parameter value

setValue(value)

Sets the current value of the property. If this is a multi-value property, all other values will be removed.

Parameters:
NameTypeDescription
valueString | Object

New property value.

setValues(values)

Sets the values of the property. Will overwrite the existing values. This can only be used for multi-value properties.

Parameters:
NameTypeDescription
valuesArray

An array of values

toICALString() → {String}

The string representation of this component.

Returns:
Type: 
String

toJSON() → {Object}

Returns the Object representation of this component. The returned object is a live jCal object and should be cloned if modified.

Returns:
Type: 
Object

(static) fromString(str, designSetopt) → {ICAL.Property}

Create an ICAL.Property by parsing the passed iCalendar string.

Parameters:
NameTypeAttributesDescription
strString

The iCalendar string to parse

designSetICAL.design.designSet<optional>

The design data to use for this property

Returns:

The created iCalendar property

Type: 
ICAL.Property
Home
\ No newline at end of file diff --git a/api/ICAL.Recur.html b/api/ICAL.Recur.html index 4d86ab87..ed38af75 100644 --- a/api/ICAL.Recur.html +++ b/api/ICAL.Recur.html @@ -1,6 +1,6 @@ Class: Recur
On this page

ICAL. Recur

This class represents the "recur" value type, used for example by RRULE. It provides methods to calculate occurrences among others.

Constructor

new Recur(data)

Create a new instance of the Recur class.

Parameters:
NameTypeDescription
dataObject

An object with members of the recurrence

Properties
NameTypeAttributesDescription
freqICAL.Recur.frequencyValues<optional>

The frequency value

intervalNumber<optional>

The INTERVAL value

wkstICAL.Time.weekDay<optional>

The week start value

untilICAL.Time<optional>

The end of the recurrence set

countNumber<optional>

The number of occurrences

bysecondArray.<Number><optional>

The seconds for the BYSECOND part

byminuteArray.<Number><optional>

The minutes for the BYMINUTE part

byhourArray.<Number><optional>

The hours for the BYHOUR part

bydayArray.<String><optional>

The BYDAY values

bymonthdayArray.<Number><optional>

The days for the BYMONTHDAY part

byyeardayArray.<Number><optional>

The days for the BYYEARDAY part

byweeknoArray.<Number><optional>

The weeks for the BYWEEKNO part

bymonthArray.<Number><optional>

The month for the BYMONTH part

bysetposArray.<Number><optional>

The positionals for the BYSETPOS part

Members

(nullable) count :Number

The maximum number of occurrences

Type:
  • Number

freq :ICAL.Recur.frequencyValues

The frequency value.

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icalrecur"

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "recur"

interval :Number

The interval value for the recurrence rule.

Type:
  • Number

parts :Object

An object holding the BY-parts of the recurrence rule

Type:
  • Object

(nullable) until :ICAL.Time

The end of the recurrence

wkst :ICAL.Time.weekDay

The week start day

Default Value
  • ICAL.Time.MONDAY

Methods

addComponent(aType, aValue)

Adds a component (part) to the recurrence rule. This is not a component in the sense of ICAL.Component, but a part of the recurrence rule, i.e. BYMONTH.

Parameters:
NameTypeDescription
aTypeString

The name of the component part

aValueArray | String

The component value

clone() → {ICAL.Recur}

Returns a clone of the recurrence object.

Returns:

The cloned object

Type: 
ICAL.Recur

fromData(data)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
dataObject

An object with members of the recurrence

Properties
NameTypeAttributesDescription
freqICAL.Recur.frequencyValues<optional>

The frequency value

intervalNumber<optional>

The INTERVAL value

wkstICAL.Time.weekDay<optional>

The week start value

untilICAL.Time<optional>

The end of the recurrence set

countNumber<optional>

The number of occurrences

bysecondArray.<Number><optional>

The seconds for the BYSECOND part

byminuteArray.<Number><optional>

The minutes for the BYMINUTE part

byhourArray.<Number><optional>

The hours for the BYHOUR part

bydayArray.<String><optional>

The BYDAY values

bymonthdayArray.<Number><optional>

The days for the BYMONTHDAY part

byyeardayArray.<Number><optional>

The days for the BYYEARDAY part

byweeknoArray.<Number><optional>

The weeks for the BYWEEKNO part

bymonthArray.<Number><optional>

The month for the BYMONTH part

bysetposArray.<Number><optional>

The positionals for the BYSETPOS part

getComponent(aType) → {Array}

Gets (a copy) of the requested component value.

Parameters:
NameTypeDescription
aTypeString

The component part name

Returns:

The component part value

Type: 
Array

getNextOccurrence(aStartTime, aRecurrenceId) → {ICAL.Time}

Retrieves the next occurrence after the given recurrence id. See the guide on terminology for more details.

NOTE: Currently, this method iterates all occurrences from the start date. It should not be called in a loop for performance reasons. If you would like to get more than one occurrence, you can iterate the occurrences manually, see the example on the iterator method.

Parameters:
NameTypeDescription
aStartTimeICAL.Time

The start of the event series

aRecurrenceIdICAL.Time

The date of the last occurrence

Returns:

The next occurrence after

Type: 
ICAL.Time

isByCount() → {Boolean}

Checks if the current rule has a count part, and not limited by an until part.

Returns:

True, if the rule is by count

Type: 
Boolean

isFinite() → {Boolean}

Checks if the current rule is finite, i.e. has a count or until part.

Returns:

True, if the rule is finite

Type: 
Boolean

iterator(aStart) → {ICAL.RecurIterator}

Create a new iterator for this recurrence rule. The passed start date must be the start date of the event, not the start of the range to search in.

Parameters:
NameTypeDescription
aStartICAL.Time

The item's start date

Returns:

The recurrence iterator

Type: 
ICAL.RecurIterator
Example
let recur = comp.getFirstPropertyValue('rrule');
+    
On this page

ICAL. Recur

This class represents the "recur" value type, used for example by RRULE. It provides methods to calculate occurrences among others.

Constructor

new Recur(data)

Create a new instance of the Recur class.

Parameters:
NameTypeDescription
dataObject

An object with members of the recurrence

Properties
NameTypeAttributesDescription
freqICAL.Recur.frequencyValues<optional>

The frequency value

intervalNumber<optional>

The INTERVAL value

wkstICAL.Time.weekDay<optional>

The week start value

untilICAL.Time<optional>

The end of the recurrence set

countNumber<optional>

The number of occurrences

bysecondArray.<Number><optional>

The seconds for the BYSECOND part

byminuteArray.<Number><optional>

The minutes for the BYMINUTE part

byhourArray.<Number><optional>

The hours for the BYHOUR part

bydayArray.<String><optional>

The BYDAY values

bymonthdayArray.<Number><optional>

The days for the BYMONTHDAY part

byyeardayArray.<Number><optional>

The days for the BYYEARDAY part

byweeknoArray.<Number><optional>

The weeks for the BYWEEKNO part

bymonthArray.<Number><optional>

The month for the BYMONTH part

bysetposArray.<Number><optional>

The positionals for the BYSETPOS part

Members

(nullable) count :Number

The maximum number of occurrences

Type:
  • Number

freq :ICAL.Recur.frequencyValues

The frequency value.

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icalrecur"

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "recur"

interval :Number

The interval value for the recurrence rule.

Type:
  • Number

parts :Object

An object holding the BY-parts of the recurrence rule

Type:
  • Object

(nullable) until :ICAL.Time

The end of the recurrence

wkst :ICAL.Time.weekDay

The week start day

Default Value
  • ICAL.Time.MONDAY

Methods

addComponent(aType, aValue)

Adds a component (part) to the recurrence rule. This is not a component in the sense of ICAL.Component, but a part of the recurrence rule, i.e. BYMONTH.

Parameters:
NameTypeDescription
aTypeString

The name of the component part

aValueArray | String

The component value

clone() → {ICAL.Recur}

Returns a clone of the recurrence object.

Returns:

The cloned object

Type: 
ICAL.Recur

fromData(data)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
dataObject

An object with members of the recurrence

Properties
NameTypeAttributesDescription
freqICAL.Recur.frequencyValues<optional>

The frequency value

intervalNumber<optional>

The INTERVAL value

wkstICAL.Time.weekDay<optional>

The week start value

untilICAL.Time<optional>

The end of the recurrence set

countNumber<optional>

The number of occurrences

bysecondArray.<Number><optional>

The seconds for the BYSECOND part

byminuteArray.<Number><optional>

The minutes for the BYMINUTE part

byhourArray.<Number><optional>

The hours for the BYHOUR part

bydayArray.<String><optional>

The BYDAY values

bymonthdayArray.<Number><optional>

The days for the BYMONTHDAY part

byyeardayArray.<Number><optional>

The days for the BYYEARDAY part

byweeknoArray.<Number><optional>

The weeks for the BYWEEKNO part

bymonthArray.<Number><optional>

The month for the BYMONTH part

bysetposArray.<Number><optional>

The positionals for the BYSETPOS part

getComponent(aType) → {Array}

Gets (a copy) of the requested component value.

Parameters:
NameTypeDescription
aTypeString

The component part name

Returns:

The component part value

Type: 
Array

getNextOccurrence(aStartTime, aRecurrenceId) → {ICAL.Time}

Retrieves the next occurrence after the given recurrence id. See the guide on terminology for more details.

NOTE: Currently, this method iterates all occurrences from the start date. It should not be called in a loop for performance reasons. If you would like to get more than one occurrence, you can iterate the occurrences manually, see the example on the iterator method.

Parameters:
NameTypeDescription
aStartTimeICAL.Time

The start of the event series

aRecurrenceIdICAL.Time

The date of the last occurrence

Returns:

The next occurrence after

Type: 
ICAL.Time

isByCount() → {Boolean}

Checks if the current rule has a count part, and not limited by an until part.

Returns:

True, if the rule is by count

Type: 
Boolean

isFinite() → {Boolean}

Checks if the current rule is finite, i.e. has a count or until part.

Returns:

True, if the rule is finite

Type: 
Boolean

iterator(aStart) → {ICAL.RecurIterator}

Create a new iterator for this recurrence rule. The passed start date must be the start date of the event, not the start of the range to search in.

Parameters:
NameTypeDescription
aStartICAL.Time

The item's start date

Returns:

The recurrence iterator

Type: 
ICAL.RecurIterator
Example
let recur = comp.getFirstPropertyValue('rrule');
 let dtstart = comp.getFirstPropertyValue('dtstart');
 let iter = recur.iterator(dtstart);
 for (let next = iter.next(); next; next = iter.next()) {
@@ -8,4 +8,4 @@
     continue;
   }
   console.log(next.toString());
-}

setComponent(aType, aValues)

Sets the component value for the given by-part.

Parameters:
NameTypeDescription
aTypeString

The component part name

aValuesArray

The component values

toJSON() → {Object}

The jCal representation of this recurrence type.

Returns:
Type: 
Object

toString() → {String}

The string representation of this recurrence rule.

Returns:
Type: 
String

(static) fromData(aData)

Creates a new ICAL.Recur instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the recurrence

Properties
NameTypeAttributesDescription
freqICAL.Recur.frequencyValues<optional>

The frequency value

intervalNumber<optional>

The INTERVAL value

wkstICAL.Time.weekDay<optional>

The week start value

untilICAL.Time<optional>

The end of the recurrence set

countNumber<optional>

The number of occurrences

bysecondArray.<Number><optional>

The seconds for the BYSECOND part

byminuteArray.<Number><optional>

The minutes for the BYMINUTE part

byhourArray.<Number><optional>

The hours for the BYHOUR part

bydayArray.<String><optional>

The BYDAY values

bymonthdayArray.<Number><optional>

The days for the BYMONTHDAY part

byyeardayArray.<Number><optional>

The days for the BYYEARDAY part

byweeknoArray.<Number><optional>

The weeks for the BYWEEKNO part

bymonthArray.<Number><optional>

The month for the BYMONTH part

bysetposArray.<Number><optional>

The positionals for the BYSETPOS part

(static) fromString(string) → {ICAL.Recur}

Creates a new ICAL.Recur instance from the passed string.

Parameters:
NameTypeDescription
stringString

The string to parse

Returns:

The created recurrence instance

Type: 
ICAL.Recur

(static) icalDayToNumericDay(string, aWeekStartopt) → {Number}

Convert an ical representation of a day (SU, MO, etc..) into a numeric value of that day.

Parameters:
NameTypeAttributesDescription
stringString

The iCalendar day name

aWeekStartICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:

Numeric value of given day

Type: 
Number

(static) numericDayToIcalDay(num, aWeekStartopt) → {String}

Convert a numeric day value into its ical representation (SU, MO, etc..)

Parameters:
NameTypeAttributesDescription
numNumber

Numeric value of given day

aWeekStartICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:

The ICAL day value, e.g SU,MO,...

Type: 
String

Type Definitions

frequencyValues

Possible frequency values for the FREQ part (YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY)

Type:
  • String
\ No newline at end of file +}

setComponent(aType, aValues)

Sets the component value for the given by-part.

Parameters:
NameTypeDescription
aTypeString

The component part name

aValuesArray

The component values

toJSON() → {Object}

The jCal representation of this recurrence type.

Returns:
Type: 
Object

toString() → {String}

The string representation of this recurrence rule.

Returns:
Type: 
String

(static) fromData(aData)

Creates a new ICAL.Recur instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the recurrence

Properties
NameTypeAttributesDescription
freqICAL.Recur.frequencyValues<optional>

The frequency value

intervalNumber<optional>

The INTERVAL value

wkstICAL.Time.weekDay<optional>

The week start value

untilICAL.Time<optional>

The end of the recurrence set

countNumber<optional>

The number of occurrences

bysecondArray.<Number><optional>

The seconds for the BYSECOND part

byminuteArray.<Number><optional>

The minutes for the BYMINUTE part

byhourArray.<Number><optional>

The hours for the BYHOUR part

bydayArray.<String><optional>

The BYDAY values

bymonthdayArray.<Number><optional>

The days for the BYMONTHDAY part

byyeardayArray.<Number><optional>

The days for the BYYEARDAY part

byweeknoArray.<Number><optional>

The weeks for the BYWEEKNO part

bymonthArray.<Number><optional>

The month for the BYMONTH part

bysetposArray.<Number><optional>

The positionals for the BYSETPOS part

(static) fromString(string) → {ICAL.Recur}

Creates a new ICAL.Recur instance from the passed string.

Parameters:
NameTypeDescription
stringString

The string to parse

Returns:

The created recurrence instance

Type: 
ICAL.Recur

(static) icalDayToNumericDay(string, aWeekStartopt) → {Number}

Convert an ical representation of a day (SU, MO, etc..) into a numeric value of that day.

Parameters:
NameTypeAttributesDescription
stringString

The iCalendar day name

aWeekStartICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:

Numeric value of given day

Type: 
Number

(static) numericDayToIcalDay(num, aWeekStartopt) → {String}

Convert a numeric day value into its ical representation (SU, MO, etc..)

Parameters:
NameTypeAttributesDescription
numNumber

Numeric value of given day

aWeekStartICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:

The ICAL day value, e.g SU,MO,...

Type: 
String

Type Definitions

frequencyValues

Possible frequency values for the FREQ part (YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY)

Type:
  • String
Home
\ No newline at end of file diff --git a/api/ICAL.RecurExpansion.html b/api/ICAL.RecurExpansion.html index 0d8d9641..f4a8fdf3 100644 --- a/api/ICAL.RecurExpansion.html +++ b/api/ICAL.RecurExpansion.html @@ -1,6 +1,6 @@ Class: RecurExpansion
On this page

ICAL. RecurExpansion

Primary class for expanding recurring rules. Can take multiple rrules, rdates, exdate(s) and iterate (in order) over each next occurrence.

Once initialized this class can also be serialized saved and continue iteration from the last point.

NOTE: it is intended that this class is to be used with ICAL.Event which handles recurrence exceptions.

Constructor

new RecurExpansion(options)

Creates a new ICAL.RecurExpansion instance.

The options object can be filled with the specified initial values. It can also contain additional members, as a result of serializing a previous expansion state, as shown in the example.

Parameters:
NameTypeDescription
optionsObject

Recurrence expansion options

Properties
NameTypeAttributesDescription
dtstartICAL.Time

Start time of the event

componentICAL.Component<optional>

Component for expansion, required if not resuming.

Example
// assuming event is a parsed ical component
+    
On this page

ICAL. RecurExpansion

Primary class for expanding recurring rules. Can take multiple rrules, rdates, exdate(s) and iterate (in order) over each next occurrence.

Once initialized this class can also be serialized saved and continue iteration from the last point.

NOTE: it is intended that this class is to be used with ICAL.Event which handles recurrence exceptions.

Constructor

new RecurExpansion(options)

Creates a new ICAL.RecurExpansion instance.

The options object can be filled with the specified initial values. It can also contain additional members, as a result of serializing a previous expansion state, as shown in the example.

Parameters:
NameTypeDescription
optionsObject

Recurrence expansion options

Properties
NameTypeAttributesDescription
dtstartICAL.Time

Start time of the event

componentICAL.Component<optional>

Component for expansion, required if not resuming.

Example
// assuming event is a parsed ical component
 var event;
 
 var expand = new ICAL.RecurExpansion({
@@ -25,4 +25,4 @@
 
 // NOTE: if the component's properties have changed you will need to rebuild the class and start
 // over. This only works when the component's recurrence info is the same.
-var expand = new ICAL.RecurExpansion(JSON.parse(json));

Members

complete :Boolean

True when iteration is fully completed.

Type:
  • Boolean

dtstart :ICAL.Time

Start date of recurring rules.

last :ICAL.Time

Last expanded time

Methods

fromData(options)

Initialize the recurrence expansion from the data object. The options object may also contain additional members, see the constructor for more details.

Parameters:
NameTypeDescription
optionsObject

Recurrence expansion options

Properties
NameTypeAttributesDescription
dtstartICAL.Time

Start time of the event

componentICAL.Component<optional>

Component for expansion, required if not resuming.

next() → {ICAL.Time}

Retrieve the next occurrence in the series.

Returns:
Type: 
ICAL.Time

toJSON() → {Object}

Converts object into a serialize-able format. This format can be passed back into the expansion to resume iteration.

Returns:
Type: 
Object
\ No newline at end of file +var expand = new ICAL.RecurExpansion(JSON.parse(json));

Members

complete :Boolean

True when iteration is fully completed.

Type:
  • Boolean

dtstart :ICAL.Time

Start date of recurring rules.

last :ICAL.Time

Last expanded time

Methods

fromData(options)

Initialize the recurrence expansion from the data object. The options object may also contain additional members, see the constructor for more details.

Parameters:
NameTypeDescription
optionsObject

Recurrence expansion options

Properties
NameTypeAttributesDescription
dtstartICAL.Time

Start time of the event

componentICAL.Component<optional>

Component for expansion, required if not resuming.

next() → {ICAL.Time}

Retrieve the next occurrence in the series.

Returns:
Type: 
ICAL.Time

toJSON() → {Object}

Converts object into a serialize-able format. This format can be passed back into the expansion to resume iteration.

Returns:
Type: 
Object
Home
\ No newline at end of file diff --git a/api/ICAL.RecurIterator.html b/api/ICAL.RecurIterator.html index 0a05ad61..9cb373d1 100644 --- a/api/ICAL.RecurIterator.html +++ b/api/ICAL.RecurIterator.html @@ -1,3 +1,3 @@ Class: RecurIterator
On this page

ICAL. RecurIterator

An iterator for a single recurrence rule. This class usually doesn't have to be instanciated directly, the convenience method ICAL.Recur#iterator can be used.

Constructor

new RecurIterator(options)

Creates a new ICAL.RecurIterator instance. The options object may contain additional members when resuming iteration from a previous run.

Parameters:
NameTypeDescription
optionsObject

The iterator options

Properties
NameTypeAttributesDescription
ruleICAL.Recur

The rule to iterate.

dtstartICAL.Time

The start date of the event.

initializedBoolean<optional>

When true, assume that options are from a previously constructed iterator. Initialization will not be repeated.

Members

completed :Boolean

True when iteration is finished.

Type:
  • Boolean

dtstart :ICAL.Time

The start date of the event being iterated.

last :ICAL.Time

The last occurrence that was returned from the ICAL.RecurIterator#next method.

occurrence_number :Number

The sequence number from the occurrence

Type:
  • Number

rule :ICAL.Recur

The rule that is being iterated

Methods

fromData(options)

Initialize the recurrence iterator from the passed data object. This method is usually not called directly, you can initialize the iterator through the constructor.

Parameters:
NameTypeDescription
optionsObject

The iterator options

Properties
NameTypeAttributesDescription
ruleICAL.Recur

The rule to iterate.

dtstartICAL.Time

The start date of the event.

initializedBoolean<optional>

When true, assume that options are from a previously constructed iterator. Initialization will not be repeated.

next() → {ICAL.Time}

Retrieve the next occurrence from the iterator.

Returns:
Type: 
ICAL.Time

ruleDayOfWeek(dow, aWeekStartopt)

Parameters:
NameTypeAttributesDescription
dow

(eg: '1TU', '-1MO')

aWeekStartICAL.Time.weekDay<optional>

The week start weekday

Returns:

[pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart

toJSON() → {Object}

Convert iterator into a serialize-able object. Will preserve current iteration sequence to ensure the seamless continuation of the recurrence rule.

Returns:
Type: 
Object
Home
\ No newline at end of file +
On this page

ICAL. RecurIterator

An iterator for a single recurrence rule. This class usually doesn't have to be instanciated directly, the convenience method ICAL.Recur#iterator can be used.

Constructor

new RecurIterator(options)

Creates a new ICAL.RecurIterator instance. The options object may contain additional members when resuming iteration from a previous run.

Parameters:
NameTypeDescription
optionsObject

The iterator options

Properties
NameTypeAttributesDescription
ruleICAL.Recur

The rule to iterate.

dtstartICAL.Time

The start date of the event.

initializedBoolean<optional>

When true, assume that options are from a previously constructed iterator. Initialization will not be repeated.

Members

completed :Boolean

True when iteration is finished.

Type:
  • Boolean

dtstart :ICAL.Time

The start date of the event being iterated.

last :ICAL.Time

The last occurrence that was returned from the ICAL.RecurIterator#next method.

occurrence_number :Number

The sequence number from the occurrence

Type:
  • Number

rule :ICAL.Recur

The rule that is being iterated

Methods

fromData(options)

Initialize the recurrence iterator from the passed data object. This method is usually not called directly, you can initialize the iterator through the constructor.

Parameters:
NameTypeDescription
optionsObject

The iterator options

Properties
NameTypeAttributesDescription
ruleICAL.Recur

The rule to iterate.

dtstartICAL.Time

The start date of the event.

initializedBoolean<optional>

When true, assume that options are from a previously constructed iterator. Initialization will not be repeated.

next() → {ICAL.Time}

Retrieve the next occurrence from the iterator.

Returns:
Type: 
ICAL.Time

ruleDayOfWeek(dow, aWeekStartopt)

Parameters:
NameTypeAttributesDescription
dow

(eg: '1TU', '-1MO')

aWeekStartICAL.Time.weekDay<optional>

The week start weekday

Returns:

[pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart

toJSON() → {Object}

Convert iterator into a serialize-able object. Will preserve current iteration sequence to ensure the seamless continuation of the recurrence rule.

Returns:
Type: 
Object
Home
\ No newline at end of file diff --git a/api/ICAL.Time.html b/api/ICAL.Time.html index 8d059384..0ceda73e 100644 --- a/api/ICAL.Time.html +++ b/api/ICAL.Time.html @@ -1,6 +1,6 @@ Class: Time
On this page

ICAL. Time

iCalendar Time representation (similar to JS Date object). Fully independent of system (OS) timezone / time. Unlike JS Date, the month January is 1, not zero.

Constructor

new Time(data, zone)

Creates a new ICAL.Time instance.

Parameters:
NameTypeDescription
dataObject

Time initialization

Properties
NameTypeAttributesDescription
yearNumber<optional>

The year for this date

monthNumber<optional>

The month for this date

dayNumber<optional>

The day for this date

hourNumber<optional>

The hour for this date

minuteNumber<optional>

The minute for this date

secondNumber<optional>

The second for this date

isDateBoolean<optional>

If true, the instance represents a date (as opposed to a date-time)

zoneICAL.Timezone

timezone this position occurs in

Example
var time = new ICAL.Time({
+    
On this page

ICAL. Time

iCalendar Time representation (similar to JS Date object). Fully independent of system (OS) timezone / time. Unlike JS Date, the month January is 1, not zero.

Constructor

new Time(data, zone)

Creates a new ICAL.Time instance.

Parameters:
NameTypeDescription
dataObject

Time initialization

Properties
NameTypeAttributesDescription
yearNumber<optional>

The year for this date

monthNumber<optional>

The month for this date

dayNumber<optional>

The day for this date

hourNumber<optional>

The hour for this date

minuteNumber<optional>

The minute for this date

secondNumber<optional>

The second for this date

isDateBoolean<optional>

If true, the instance represents a date (as opposed to a date-time)

zoneICAL.Timezone

timezone this position occurs in

Example
var time = new ICAL.Time({
   year: 2012,
   month: 10,
   day: 11
@@ -13,4 +13,4 @@
 
 var deserialized = JSON.parse(json);
 
-var time = new ICAL.Time(deserialized);

toString() → {String}

The string representation of this date/time, in jCal form (including : and - separators).

Returns:
Type: 
String

toUnixTime() → {Number}

Converts the current instance to seconds since January 1st 1970.

Returns:

Seconds since 1970

Type: 
Number

utcOffset() → {Number}

Calculates the UTC offset of the current date/time in the timezone it is in.

Returns:

UTC offset in seconds

Type: 
Number

weekNumber(aWeekStart) → {Number}

Calculates the ISO 8601 week number. The first week of a year is the week that contains the first Thursday. The year can have 53 weeks, if January 1st is a Friday.

Note there are regions where the first week of the year is the one that starts on January 1st, which may offset the week number. Also, if a different week start is specified, this will also affect the week number.

Parameters:
NameTypeDescription
aWeekStartICAL.Time.weekDay

The weekday the week starts with

Returns:

The ISO week number

Type: 
Number

(static) daysInMonth(month, year) → {Number}

Returns the days in the given month

Parameters:
NameTypeDescription
monthNumber

The month to check

yearNumber

The year to check

Returns:

The number of days in the month

Type: 
Number

(static) fromDateString(aValue) → {ICAL.Time}

Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.

Parameters:
NameTypeDescription
aValueString

The string to create from

Returns:

The date/time instance

Type: 
ICAL.Time

(static) fromDateTimeString(aValue, propopt) → {ICAL.Time}

Returns a new ICAL.Time instance from a date-time string, e.g 2015-01-02T03:04:05. If a property is specified, the timezone is set up from the property's TZID parameter.

Parameters:
NameTypeAttributesDescription
aValueString

The string to create from

propICAL.Property<optional>

The property the date belongs to

Returns:

The date/time instance

Type: 
ICAL.Time

(static) fromDayOfYear(aDayOfYear, aYear) → {ICAL.Time}

Create a new ICAL.Time from the day of year and year. The date is returned in floating timezone.

Parameters:
NameTypeDescription
aDayOfYearNumber

The day of year

aYearNumber

The year to create the instance in

Returns:

The created instance with the calculated date

Type: 
ICAL.Time

(static) fromJSDate(aDatenullable, useUTC)

Creates a new ICAL.Time instance from the given Javascript Date.

Parameters:
NameTypeAttributesDescription
aDateDate<nullable>

The Javascript Date to read, or null to reset

useUTCBoolean

If true, the UTC values of the date will be used

(static) fromString(aValue, propopt) → {ICAL.Time}

Returns a new ICAL.Time instance from a date or date-time string,

Parameters:
NameTypeAttributesDescription
aValueString

The string to create from

propICAL.Property<optional>

The property the date belongs to

Returns:

The date/time instance

Type: 
ICAL.Time

(static) fromStringv2(str) → {ICAL.Time}

Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.

Parameters:
NameTypeDescription
strString

The string to create from

Deprecated
Returns:

The date/time instance

Type: 
ICAL.Time

(static) getDominicalLetter(yr) → {String}

Get the dominical letter for the given year. Letters range from A - G for common years, and AG to GF for leap years.

Parameters:
NameTypeDescription
yrNumber

The year to retrieve the letter for

Returns:

The dominical letter.

Type: 
String

(static) isLeapYear(year) → {Boolean}

Checks if the year is a leap year

Parameters:
NameTypeDescription
yearNumber

The year to check

Returns:

True, if the year is a leap year

Type: 
Boolean

(static) now() → {ICAL.Time}

Creates a new ICAL.Time instance from the current moment. The instance is “floating” - has no timezone relation. To create an instance considering the time zone, call ICAL.Time.fromJSDate(new Date(), true)

Returns:
Type: 
ICAL.Time

(static) weekOneStarts(aYear, aWeekStartopt) → {ICAL.Time}

Returns the date on which ISO week number 1 starts.

Parameters:
NameTypeAttributesDescription
aYearNumber

The year to search in

aWeekStartICAL.Time.weekDay<optional>

The week start weekday, used for calculation.

Returns:

The date on which week number 1 starts

Type: 
ICAL.Time

Type Definitions

weekDay

The weekday, 1 = SUNDAY, 7 = SATURDAY. Access via ICAL.Time.MONDAY, ICAL.Time.TUESDAY, ...

Type:
  • Number
\ No newline at end of file +var time = new ICAL.Time(deserialized);

toString() → {String}

The string representation of this date/time, in jCal form (including : and - separators).

Returns:
Type: 
String

toUnixTime() → {Number}

Converts the current instance to seconds since January 1st 1970.

Returns:

Seconds since 1970

Type: 
Number

utcOffset() → {Number}

Calculates the UTC offset of the current date/time in the timezone it is in.

Returns:

UTC offset in seconds

Type: 
Number

weekNumber(aWeekStart) → {Number}

Calculates the ISO 8601 week number. The first week of a year is the week that contains the first Thursday. The year can have 53 weeks, if January 1st is a Friday.

Note there are regions where the first week of the year is the one that starts on January 1st, which may offset the week number. Also, if a different week start is specified, this will also affect the week number.

Parameters:
NameTypeDescription
aWeekStartICAL.Time.weekDay

The weekday the week starts with

Returns:

The ISO week number

Type: 
Number

(static) daysInMonth(month, year) → {Number}

Returns the days in the given month

Parameters:
NameTypeDescription
monthNumber

The month to check

yearNumber

The year to check

Returns:

The number of days in the month

Type: 
Number

(static) fromDateString(aValue) → {ICAL.Time}

Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.

Parameters:
NameTypeDescription
aValueString

The string to create from

Returns:

The date/time instance

Type: 
ICAL.Time

(static) fromDateTimeString(aValue, propopt) → {ICAL.Time}

Returns a new ICAL.Time instance from a date-time string, e.g 2015-01-02T03:04:05. If a property is specified, the timezone is set up from the property's TZID parameter.

Parameters:
NameTypeAttributesDescription
aValueString

The string to create from

propICAL.Property<optional>

The property the date belongs to

Returns:

The date/time instance

Type: 
ICAL.Time

(static) fromDayOfYear(aDayOfYear, aYear) → {ICAL.Time}

Create a new ICAL.Time from the day of year and year. The date is returned in floating timezone.

Parameters:
NameTypeDescription
aDayOfYearNumber

The day of year

aYearNumber

The year to create the instance in

Returns:

The created instance with the calculated date

Type: 
ICAL.Time

(static) fromJSDate(aDatenullable, useUTC)

Creates a new ICAL.Time instance from the given Javascript Date.

Parameters:
NameTypeAttributesDescription
aDateDate<nullable>

The Javascript Date to read, or null to reset

useUTCBoolean

If true, the UTC values of the date will be used

(static) fromString(aValue, propopt) → {ICAL.Time}

Returns a new ICAL.Time instance from a date or date-time string,

Parameters:
NameTypeAttributesDescription
aValueString

The string to create from

propICAL.Property<optional>

The property the date belongs to

Returns:

The date/time instance

Type: 
ICAL.Time

(static) fromStringv2(str) → {ICAL.Time}

Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.

Parameters:
NameTypeDescription
strString

The string to create from

Deprecated
Returns:

The date/time instance

Type: 
ICAL.Time

(static) getDominicalLetter(yr) → {String}

Get the dominical letter for the given year. Letters range from A - G for common years, and AG to GF for leap years.

Parameters:
NameTypeDescription
yrNumber

The year to retrieve the letter for

Returns:

The dominical letter.

Type: 
String

(static) isLeapYear(year) → {Boolean}

Checks if the year is a leap year

Parameters:
NameTypeDescription
yearNumber

The year to check

Returns:

True, if the year is a leap year

Type: 
Boolean

(static) now() → {ICAL.Time}

Creates a new ICAL.Time instance from the current moment. The instance is “floating” - has no timezone relation. To create an instance considering the time zone, call ICAL.Time.fromJSDate(new Date(), true)

Returns:
Type: 
ICAL.Time

(static) weekOneStarts(aYear, aWeekStartopt) → {ICAL.Time}

Returns the date on which ISO week number 1 starts.

Parameters:
NameTypeAttributesDescription
aYearNumber

The year to search in

aWeekStartICAL.Time.weekDay<optional>

The week start weekday, used for calculation.

Returns:

The date on which week number 1 starts

Type: 
ICAL.Time

Type Definitions

weekDay

The weekday, 1 = SUNDAY, 7 = SATURDAY. Access via ICAL.Time.MONDAY, ICAL.Time.TUESDAY, ...

Type:
  • Number
Home
\ No newline at end of file diff --git a/api/ICAL.Timezone.html b/api/ICAL.Timezone.html index f19baae0..beaac6d6 100644 --- a/api/ICAL.Timezone.html +++ b/api/ICAL.Timezone.html @@ -1,10 +1,10 @@ Class: Timezone
On this page

ICAL. Timezone

Timezone representation.

Constructor

new Timezone(data)

Creates a new ICAL.Timezone instance, by passing in a tzid and component.

Parameters:
NameTypeDescription
dataICAL.Component | Object

options for class

Properties
NameTypeDescription
componentString | ICAL.Component

If data is a simple object, then this member can be set to either a string containing the component data, or an already parsed ICAL.Component

tzidString

The timezone identifier

locationString

The timezone locationw

tznamesString

An alternative string representation of the timezone

latitudeNumber

The latitude of the timezone

longitudeNumber

The longitude of the timezone

Example
var vcalendar;
+    
On this page

ICAL. Timezone

Timezone representation.

Constructor

new Timezone(data)

Creates a new ICAL.Timezone instance, by passing in a tzid and component.

Parameters:
NameTypeDescription
dataICAL.Component | Object

options for class

Properties
NameTypeDescription
componentString | ICAL.Component

If data is a simple object, then this member can be set to either a string containing the component data, or an already parsed ICAL.Component

tzidString

The timezone identifier

locationString

The timezone locationw

tznamesString

An alternative string representation of the timezone

latitudeNumber

The latitude of the timezone

longitudeNumber

The longitude of the timezone

Example
var vcalendar;
 var timezoneComp = vcalendar.getFirstSubcomponent('vtimezone');
 var tzid = timezoneComp.getFirstPropertyValue('tzid');
 
 var timezone = new ICAL.Timezone({
   component: timezoneComp,
   tzid
-});

Members

component :ICAL.Component

The vtimezone component for this timezone.

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icaltimezone"

latitude :Number

The primary latitude for the timezone.

Type:
  • Number

location :String

Timezone location

Type:
  • String

longitude :Number

The primary longitude for the timezone.

Type:
  • Number

tzid :String

Timezone identifier

Type:
  • String

tznames :String

Alternative timezone name, for the string representation

Type:
  • String

Methods

fromData(aData)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataICAL.Component | Object

options for class

Properties
NameTypeDescription
componentString | ICAL.Component

If aData is a simple object, then this member can be set to either a string containing the component data, or an already parsed ICAL.Component

tzidString

The timezone identifier

locationString

The timezone locationw

tznamesString

An alternative string representation of the timezone

latitudeNumber

The latitude of the timezone

longitudeNumber

The longitude of the timezone

toString() → {String}

The string representation of this timezone.

Returns:
Type: 
String

utcOffset(tt) → {Number}

Finds the utcOffset the given time would occur in this timezone.

Parameters:
NameTypeDescription
ttICAL.Time

The time to check for

Returns:

utc offset in seconds

Type: 
Number

(static) convert_time(tt, from_zone, to_zone) → {ICAL.Time}

Convert the date/time from one zone to the next.

Parameters:
NameTypeDescription
ttICAL.Time

The time to convert

from_zoneICAL.Timezone

The source zone to convert from

to_zoneICAL.Timezone

The target zone to convert to

Returns:

The converted date/time object

Type: 
ICAL.Time

(static) fromData(aData)

Creates a new ICAL.Timezone instance from the passed data object.

Parameters:
NameTypeDescription
aDataICAL.Component | Object

options for class

Properties
NameTypeDescription
componentString | ICAL.Component

If aData is a simple object, then this member can be set to either a string containing the component data, or an already parsed ICAL.Component

tzidString

The timezone identifier

locationString

The timezone locationw

tznamesString

An alternative string representation of the timezone

latitudeNumber

The latitude of the timezone

longitudeNumber

The longitude of the timezone

\ No newline at end of file +});

Members

component :ICAL.Component

The vtimezone component for this timezone.

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "icaltimezone"

latitude :Number

The primary latitude for the timezone.

Type:
  • Number

location :String

Timezone location

Type:
  • String

longitude :Number

The primary longitude for the timezone.

Type:
  • Number

tzid :String

Timezone identifier

Type:
  • String

tznames :String

Alternative timezone name, for the string representation

Type:
  • String

Methods

fromData(aData)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataICAL.Component | Object

options for class

Properties
NameTypeDescription
componentString | ICAL.Component

If aData is a simple object, then this member can be set to either a string containing the component data, or an already parsed ICAL.Component

tzidString

The timezone identifier

locationString

The timezone locationw

tznamesString

An alternative string representation of the timezone

latitudeNumber

The latitude of the timezone

longitudeNumber

The longitude of the timezone

toString() → {String}

The string representation of this timezone.

Returns:
Type: 
String

utcOffset(tt) → {Number}

Finds the utcOffset the given time would occur in this timezone.

Parameters:
NameTypeDescription
ttICAL.Time

The time to check for

Returns:

utc offset in seconds

Type: 
Number

(static) convert_time(tt, from_zone, to_zone) → {ICAL.Time}

Convert the date/time from one zone to the next.

Parameters:
NameTypeDescription
ttICAL.Time

The time to convert

from_zoneICAL.Timezone

The source zone to convert from

to_zoneICAL.Timezone

The target zone to convert to

Returns:

The converted date/time object

Type: 
ICAL.Time

(static) fromData(aData)

Creates a new ICAL.Timezone instance from the passed data object.

Parameters:
NameTypeDescription
aDataICAL.Component | Object

options for class

Properties
NameTypeDescription
componentString | ICAL.Component

If aData is a simple object, then this member can be set to either a string containing the component data, or an already parsed ICAL.Component

tzidString

The timezone identifier

locationString

The timezone locationw

tznamesString

An alternative string representation of the timezone

latitudeNumber

The latitude of the timezone

longitudeNumber

The longitude of the timezone

Home
\ No newline at end of file diff --git a/api/ICAL.UtcOffset.html b/api/ICAL.UtcOffset.html index 7bfe9f00..6ad8565f 100644 --- a/api/ICAL.UtcOffset.html +++ b/api/ICAL.UtcOffset.html @@ -1,3 +1,3 @@ Class: UtcOffset
On this page

ICAL. UtcOffset

This class represents the "utc-offset" value type, with various calculation and manipulation methods.

Constructor

new UtcOffset(aData)

Creates a new ICAL.UtcOffset instance.

Parameters:
NameTypeDescription
aDataObject

An object with members of the utc offset

Properties
NameTypeAttributesDescription
hoursNumber<optional>

The hours for the utc offset

minutesNumber<optional>

The minutes in the utc offset

factorNumber<optional>

The factor for the utc-offset, either -1 or 1

Members

factor :Number

The sign of the utc offset, 1 for positive offset, -1 for negative offsets.

Type:
  • Number

hours :Number

The hours in the utc-offset

Type:
  • Number

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "utc-offset"

minutes :Number

The minutes in the utc-offset

Type:
  • Number

Methods

clone() → {ICAL.UtcOffset}

Returns a clone of the utc offset object.

Returns:

The cloned object

Type: 
ICAL.UtcOffset

compare(other) → {Number}

Compare this utc offset with another one.

Parameters:
NameTypeDescription
otherICAL.UtcOffset

The other offset to compare with

Returns:

-1, 0 or 1 for less/equal/greater

Type: 
Number

fromData(aData)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the utc offset

Properties
NameTypeAttributesDescription
hoursNumber<optional>

The hours for the utc offset

minutesNumber<optional>

The minutes in the utc offset

factorNumber<optional>

The factor for the utc-offset, either -1 or 1

fromSeconds(aSeconds)

Sets up the current instance from the given seconds value. The seconds value is truncated to the minute. Offsets are wrapped when the world ends, the hour after UTC+14:00 is UTC-12:00.

Parameters:
NameTypeDescription
aSecondsNumber

The seconds to convert into an offset

toICALString() → {String}

The iCalendar string representation of this utc-offset.

Returns:
Type: 
String

toSeconds() → {Number}

Convert the current offset to a value in seconds

Returns:

The offset in seconds

Type: 
Number

toString() → {String}

The string representation of this utc-offset.

Returns:
Type: 
String

(static) fromSeconds(aSeconds)

Creates a new ICAL.UtcOffset instance from the passed seconds value.

Parameters:
NameTypeDescription
aSecondsNumber

The number of seconds to convert

(static) fromString(aString) → {ICAL.Duration}

Creates a new ICAL.UtcOffset instance from the passed string.

Parameters:
NameTypeDescription
aStringString

The string to parse

Returns:

The created utc-offset instance

Type: 
ICAL.Duration
Home
\ No newline at end of file +
On this page

ICAL. UtcOffset

This class represents the "utc-offset" value type, with various calculation and manipulation methods.

Constructor

new UtcOffset(aData)

Creates a new ICAL.UtcOffset instance.

Parameters:
NameTypeDescription
aDataObject

An object with members of the utc offset

Properties
NameTypeAttributesDescription
hoursNumber<optional>

The hours for the utc offset

minutesNumber<optional>

The minutes in the utc offset

factorNumber<optional>

The factor for the utc-offset, either -1 or 1

Members

factor :Number

The sign of the utc offset, 1 for positive offset, -1 for negative offsets.

Type:
  • Number

hours :Number

The hours in the utc-offset

Type:
  • Number

(constant) icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "utc-offset"

minutes :Number

The minutes in the utc-offset

Type:
  • Number

Methods

clone() → {ICAL.UtcOffset}

Returns a clone of the utc offset object.

Returns:

The cloned object

Type: 
ICAL.UtcOffset

compare(other) → {Number}

Compare this utc offset with another one.

Parameters:
NameTypeDescription
otherICAL.UtcOffset

The other offset to compare with

Returns:

-1, 0 or 1 for less/equal/greater

Type: 
Number

fromData(aData)

Sets up the current instance using members from the passed data object.

Parameters:
NameTypeDescription
aDataObject

An object with members of the utc offset

Properties
NameTypeAttributesDescription
hoursNumber<optional>

The hours for the utc offset

minutesNumber<optional>

The minutes in the utc offset

factorNumber<optional>

The factor for the utc-offset, either -1 or 1

fromSeconds(aSeconds)

Sets up the current instance from the given seconds value. The seconds value is truncated to the minute. Offsets are wrapped when the world ends, the hour after UTC+14:00 is UTC-12:00.

Parameters:
NameTypeDescription
aSecondsNumber

The seconds to convert into an offset

toICALString() → {String}

The iCalendar string representation of this utc-offset.

Returns:
Type: 
String

toSeconds() → {Number}

Convert the current offset to a value in seconds

Returns:

The offset in seconds

Type: 
Number

toString() → {String}

The string representation of this utc-offset.

Returns:
Type: 
String

(static) fromSeconds(aSeconds)

Creates a new ICAL.UtcOffset instance from the passed seconds value.

Parameters:
NameTypeDescription
aSecondsNumber

The number of seconds to convert

(static) fromString(aString) → {ICAL.Duration}

Creates a new ICAL.UtcOffset instance from the passed string.

Parameters:
NameTypeDescription
aStringString

The string to parse

Returns:

The created utc-offset instance

Type: 
ICAL.Duration
Home
\ No newline at end of file diff --git a/api/ICAL.VCardTime.html b/api/ICAL.VCardTime.html index d87af1b5..fb279e3c 100644 --- a/api/ICAL.VCardTime.html +++ b/api/ICAL.VCardTime.html @@ -1,9 +1,9 @@ Class: VCardTime
On this page

ICAL. VCardTime

Describes a vCard time, which has slight differences to the ICAL.Time. Properties can be null if not specified, for example for dates with reduced accuracy or truncation.

Note that currently not all methods are correctly re-implemented for VCardTime. For example, comparison will have undefined results when some members are null.

Also, normalization is not yet implemented for this class!

Constructor

new VCardTime(data, zone, icaltype)

Creates a new ICAL.VCardTime instance.

Parameters:
NameTypeDescription
dataObject

The data for the time instance

Properties
NameTypeAttributesDescription
yearNumber<optional>

The year for this date

monthNumber<optional>

The month for this date

dayNumber<optional>

The day for this date

hourNumber<optional>

The hour for this date

minuteNumber<optional>

The minute for this date

secondNumber<optional>

The second for this date

zoneICAL.Timezone | ICAL.UtcOffset

The timezone to use

icaltypeString

The type for this date/time object

Extends

Members

(constant) DEFAULT_WEEK_START

The default weekday for the WKST part.

Default Value
  • ICAL.Time.MONDAY

daysInYearPassedMonth :Array.<Array.<Number>>

The days that have passed in the year after a given month. The array has two members, one being an array of passed days for non-leap years, the other analog for leap years.

Type:
  • Array.<Array.<Number>>
Example
var isLeapYear = ICAL.Time.isLeapYear(year);
+    
On this page

ICAL. VCardTime

Describes a vCard time, which has slight differences to the ICAL.Time. Properties can be null if not specified, for example for dates with reduced accuracy or truncation.

Note that currently not all methods are correctly re-implemented for VCardTime. For example, comparison will have undefined results when some members are null.

Also, normalization is not yet implemented for this class!

Constructor

new VCardTime(data, zone, icaltype)

Creates a new ICAL.VCardTime instance.

Parameters:
NameTypeDescription
dataObject

The data for the time instance

Properties
NameTypeAttributesDescription
yearNumber<optional>

The year for this date

monthNumber<optional>

The month for this date

dayNumber<optional>

The day for this date

hourNumber<optional>

The hour for this date

minuteNumber<optional>

The minute for this date

secondNumber<optional>

The second for this date

zoneICAL.Timezone | ICAL.UtcOffset

The timezone to use

icaltypeString

The type for this date/time object

Extends

Members

(constant) DEFAULT_WEEK_START

The default weekday for the WKST part.

Default Value
  • ICAL.Time.MONDAY

daysInYearPassedMonth :Array.<Array.<Number>>

The days that have passed in the year after a given month. The array has two members, one being an array of passed days for non-leap years, the other analog for leap years.

Type:
  • Array.<Array.<Number>>
Example
var isLeapYear = ICAL.Time.isLeapYear(year);
 var passedDays = ICAL.Time.daysInYearPassedMonth[isLeapYear][month];

(constant) epochTime :ICAL.Time

January 1st, 1970 as an ICAL.Time.

fromData

Creates a new ICAL.Time instance from the the passed data object.

(constant) icalclass :String

The class identifier.

Type:
  • String
Default Value
  • "vcardtime"

icaltype :String

The type name, to be used in the jCal object.

Type:
  • String
Default Value
  • "date-and-or-time"

zone :ICAL.Timezone

The timezone for this time.

Methods

addDuration(aDuration)

Adds the duration to the current time. The instance is modified in place.

Parameters:
NameTypeDescription
aDurationICAL.Duration

The duration to add

adjust(aExtraDays, aExtraHours, aExtraMinutes, aExtraSeconds, aTimeopt)

Adjust the date/time by the given offset

Parameters:
NameTypeAttributesDescription
aExtraDaysNumber

The extra amount of days

aExtraHoursNumber

The extra amount of hours

aExtraMinutesNumber

The extra amount of minutes

aExtraSecondsNumber

The extra amount of seconds

aTimeNumber<optional>

The time to adjust, defaults to the current instance.

clone() → {ICAL.VCardTime}

Returns a clone of the vcard date/time object.

Returns:

The cloned object

Type: 
ICAL.VCardTime

compare(aOther) → {Number}

Compares the ICAL.Time instance with another one.

Parameters:
NameTypeDescription
aOtherICAL.Duration

The instance to compare with

Returns:

-1, 0 or 1 for less/equal/greater

Type: 
Number

compareDateOnlyTz(other, tz) → {Number}

Compares only the date part of this instance with another one.

Parameters:
NameTypeDescription
otherICAL.Duration

The instance to compare with

tzICAL.Timezone

The timezone to compare in

Returns:

-1, 0 or 1 for less/equal/greater

Type: 
Number

convertToZone(zone) → {ICAL.Time}

Convert the instance into another timezone. The returned ICAL.Time instance is always a copy.

Parameters:
NameTypeDescription
zoneICAL.Timezone

The zone to convert to

Returns:

The copy, converted to the zone

Type: 
ICAL.Time

dayOfWeek(aWeekStartopt) → {ICAL.Time.weekDay}

Calculate the day of week.

Parameters:
NameTypeAttributesDescription
aWeekStartICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:
Type: 
ICAL.Time.weekDay

dayOfYear() → {Number}

Calculate the day of year.

Returns:
Type: 
Number

endOfMonth() → {ICAL.Time}

Returns a copy of the current date/time, shifted to the end of the month. The resulting ICAL.Time instance is of icaltype date, even if this is a date-time.

Returns:

The end of the month (cloned)

Type: 
ICAL.Time

endOfWeek(aWeekStartopt) → {ICAL.Time}

Returns a copy of the current date/time, shifted to the end of the week. The resulting ICAL.Time instance is of icaltype date, even if this is a date-time.

Parameters:
NameTypeAttributesDescription
aWeekStartICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:

The end of the week (cloned)

Type: 
ICAL.Time

endOfYear() → {ICAL.Time}

Returns a copy of the current date/time, shifted to the end of the year. The resulting ICAL.Time instance is of icaltype date, even if this is a date-time.

Returns:

The end of the year (cloned)

Type: 
ICAL.Time

fromJSDate(aDatenullable, useUTC)

Set up the current instance from the Javascript date value.

Parameters:
NameTypeAttributesDescription
aDateDate<nullable>

The Javascript Date to read, or null to reset

useUTCBoolean

If true, the UTC values of the date will be used

fromUnixTime(seconds)

Sets up the current instance from unix time, the number of seconds since January 1st, 1970.

Parameters:
NameTypeDescription
secondsNumber

The seconds to set up with

getDominicalLetter(yr) → {String}

Get the dominical letter for the current year. Letters range from A - G for common years, and AG to GF for leap years.

Parameters:
NameTypeDescription
yrNumber

The year to retrieve the letter for

Returns:

The dominical letter.

Type: 
String

isNthWeekDay(aDayOfWeek, aPos) → {Boolean}

Checks if current time is the nth weekday, relative to the current month. Will always return false when rule resolves outside of current month.

Parameters:
NameTypeDescription
aDayOfWeekICAL.Time.weekDay

Day of week to check

aPosNumber

Relative position

Returns:

True, if it is the nth weekday

Type: 
Boolean

nthWeekDay(aDayOfWeek, aPos) → {Number}

Finds the nthWeekDay relative to the current month (not day). The returned value is a day relative the month that this month belongs to so 1 would indicate the first of the month and 40 would indicate a day in the following month.

Parameters:
NameTypeDescription
aDayOfWeekNumber

Day of the week see the day name constants

aPosNumber

Nth occurrence of a given week day values of 1 and 0 both indicate the first weekday of that type. aPos may be either positive or negative

Returns:

numeric value indicating a day relative to the current month of this time object

Type: 
Number

reset()

Reset the time instance to epoch time

resetTo(year, month, day, hour, minute, second, timezone)

Reset the time instance to the given date/time values.

Parameters:
NameTypeDescription
yearNumber

The year to set

monthNumber

The month to set

dayNumber

The day to set

hourNumber

The hour to set

minuteNumber

The minute to set

secondNumber

The second to set

timezoneICAL.Timezone

The timezone to set

startDoyWeek(aFirstDayOfWeekopt) → {Number}

First calculates the start of the week, then returns the day of year for this date. If the day falls into the previous year, the day is zero or negative.

Parameters:
NameTypeAttributesDescription
aFirstDayOfWeekICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:

The calculated day of year

Type: 
Number

startOfMonth() → {ICAL.Time}

Returns a copy of the current date/time, rewound to the start of the month. The resulting ICAL.Time instance is of icaltype date, even if this is a date-time.

Returns:

The start of the month (cloned)

Type: 
ICAL.Time

startOfWeek(aWeekStartopt) → {ICAL.Time}

Returns a copy of the current date/time, rewound to the start of the week. The resulting ICAL.Time instance is of icaltype date, even if this is a date-time.

Parameters:
NameTypeAttributesDescription
aWeekStartICAL.Time.weekDay<optional>

The week start weekday, defaults to SUNDAY

Returns:

The start of the week (cloned)

Type: 
ICAL.Time

startOfYear() → {ICAL.Time}

Returns a copy of the current date/time, rewound to the start of the year. The resulting ICAL.Time instance is of icaltype date, even if this is a date-time.

Returns:

The start of the year (cloned)

Type: 
ICAL.Time

subtractDate(aDate) → {ICAL.Duration}

Subtract the date details (excluding timezone). Useful for finding the relative difference between two time objects excluding their timezone differences.

Parameters:
NameTypeDescription
aDateICAL.Time

The date to subtract

Returns:

The difference as a duration

Type: 
ICAL.Duration

subtractDateTz(aDate) → {ICAL.Duration}

Subtract the date details, taking timezones into account.

Parameters:
NameTypeDescription
aDateICAL.Time

The date to subtract

Returns:

The difference in duration

Type: 
ICAL.Duration

toICALString() → {String}

Returns an RFC 6350 compliant representation of this object.

Returns:

vcard date/time string

Type: 
String

toJSDate() → {Date}

Converts the current instance to a Javascript date

Returns:
Type: 
Date

toJSON() → {Object}

Converts time to into Object which can be serialized then re-created using the constructor.

Returns:
Type: 
Object
Example
// toJSON will automatically be called
 var json = JSON.stringify(mytime);
 
 var deserialized = JSON.parse(json);
 
-var time = new ICAL.Time(deserialized);

toString() → {String}

The string representation of this date/time, in jCard form (including : and - separators).

Returns:
Type: 
String

toUnixTime() → {Number}

Converts the current instance to seconds since January 1st 1970.

Returns:

Seconds since 1970

Type: 
Number

utcOffset() → {Number}

Calculates the UTC offset of the current date/time in the timezone it is in.

Returns:

UTC offset in seconds

Type: 
Number

weekNumber(aWeekStart) → {Number}

Calculates the ISO 8601 week number. The first week of a year is the week that contains the first Thursday. The year can have 53 weeks, if January 1st is a Friday.

Note there are regions where the first week of the year is the one that starts on January 1st, which may offset the week number. Also, if a different week start is specified, this will also affect the week number.

Parameters:
NameTypeDescription
aWeekStartICAL.Time.weekDay

The weekday the week starts with

Returns:

The ISO week number

Type: 
Number

(static) fromDateAndOrTimeString(aValue, aIcalType) → {ICAL.VCardTime}

Returns a new ICAL.VCardTime instance from a date and/or time string.

Parameters:
NameTypeDescription
aValueString

The string to create from

aIcalTypeString

The type for this instance, e.g. date-and-or-time

Returns:

The date/time instance

Type: 
ICAL.VCardTime
\ No newline at end of file +var time = new ICAL.Time(deserialized);

toString() → {String}

The string representation of this date/time, in jCard form (including : and - separators).

Returns:
Type: 
String

toUnixTime() → {Number}

Converts the current instance to seconds since January 1st 1970.

Returns:

Seconds since 1970

Type: 
Number

utcOffset() → {Number}

Calculates the UTC offset of the current date/time in the timezone it is in.

Returns:

UTC offset in seconds

Type: 
Number

weekNumber(aWeekStart) → {Number}

Calculates the ISO 8601 week number. The first week of a year is the week that contains the first Thursday. The year can have 53 weeks, if January 1st is a Friday.

Note there are regions where the first week of the year is the one that starts on January 1st, which may offset the week number. Also, if a different week start is specified, this will also affect the week number.

Parameters:
NameTypeDescription
aWeekStartICAL.Time.weekDay

The weekday the week starts with

Returns:

The ISO week number

Type: 
Number

(static) fromDateAndOrTimeString(aValue, aIcalType) → {ICAL.VCardTime}

Returns a new ICAL.VCardTime instance from a date and/or time string.

Parameters:
NameTypeDescription
aValueString

The string to create from

aIcalTypeString

The type for this instance, e.g. date-and-or-time

Returns:

The date/time instance

Type: 
ICAL.VCardTime
Home
\ No newline at end of file diff --git a/api/ICAL.html b/api/ICAL.html index 7e6c44e4..b030aa48 100644 --- a/api/ICAL.html +++ b/api/ICAL.html @@ -1,3 +1,3 @@ Namespace: ICAL
On this page

ICAL

The main ICAL module. Provides access to everything else.

Properties
NameTypeDescription
designICAL.design
helpersICAL.helpers

Classes

Binary
Component
ComponentParser
Duration
Event
Period
Property
Recur
RecurExpansion
RecurIterator
Time
Timezone
UtcOffset
VCardTime

Methods

(static) parse(input) → {Object|Array.<Object>}

Parses iCalendar or vCard data into a raw jCal object. Consult documentation on the layers|layers of parsing for more details.

Parameters:
NameTypeDescription
inputString

The string data to parse

To Do
  • Fix the API to be more clear on the return type
Returns:

A single jCal object, or an array thereof

Type: 
Object | Array.<Object>

(static) stringify(jCal) → {String}

Convert a full jCal/jCard array into a iCalendar/vCard string.

Parameters:
NameTypeDescription
jCalArray

The jCal/jCard document

Returns:

The stringified iCalendar/vCard document

Type: 
String
Home
\ No newline at end of file +
On this page

ICAL

The main ICAL module. Provides access to everything else.

Properties
NameTypeDescription
designICAL.design
helpersICAL.helpers

Classes

Binary
Component
ComponentParser
Duration
Event
Period
Property
Recur
RecurExpansion
RecurIterator
Time
Timezone
UtcOffset
VCardTime

Methods

(static) parse(input) → {Object|Array.<Object>}

Parses iCalendar or vCard data into a raw jCal object. Consult documentation on the layers|layers of parsing for more details.

Parameters:
NameTypeDescription
inputString

The string data to parse

To Do
  • Fix the API to be more clear on the return type
Returns:

A single jCal object, or an array thereof

Type: 
Object | Array.<Object>

(static) stringify(jCal) → {String}

Convert a full jCal/jCard array into a iCalendar/vCard string.

Parameters:
NameTypeDescription
jCalArray

The jCal/jCard document

Returns:

The stringified iCalendar/vCard document

Type: 
String
Home
\ No newline at end of file diff --git a/api/ICAL.module_TimezoneService.html b/api/ICAL.module_TimezoneService.html index bdbb751b..e59a1ed3 100644 --- a/api/ICAL.module_TimezoneService.html +++ b/api/ICAL.module_TimezoneService.html @@ -1,3 +1,3 @@ Module: TimezoneService
On this page

Methods

(static) get(tzid) → (nullable) {ICAL.Timezone}

Returns a timezone by its tzid if present.

Parameters:
NameTypeDescription
tzidString

Timezone identifier (e.g. America/Los_Angeles)

Returns:

The timezone, or null if not found

Type: 
ICAL.Timezone

(static) has(tzid) → {Boolean}

Checks if timezone id has been registered.

Parameters:
NameTypeDescription
tzidString

Timezone identifier (e.g. America/Los_Angeles)

Returns:

False, when not present

Type: 
Boolean

(static) register(nameopt, zone)

Registers a timezone object or component.

Parameters:
NameTypeAttributesDescription
nameString<optional>

The name of the timezone. Defaults to the component's TZID if not passed.

zoneICAL.Component | ICAL.Timezone

The initialized zone or vtimezone.

(static) remove(tzid) → (nullable) {ICAL.Timezone}

Removes a timezone by its tzid from the list.

Parameters:
NameTypeDescription
tzidString

Timezone identifier (e.g. America/Los_Angeles)

Returns:

The removed timezone, or null if not registered

Type: 
ICAL.Timezone
Home
\ No newline at end of file +
On this page

Methods

(static) get(tzid) → (nullable) {ICAL.Timezone}

Returns a timezone by its tzid if present.

Parameters:
NameTypeDescription
tzidString

Timezone identifier (e.g. America/Los_Angeles)

Returns:

The timezone, or null if not found

Type: 
ICAL.Timezone

(static) has(tzid) → {Boolean}

Checks if timezone id has been registered.

Parameters:
NameTypeDescription
tzidString

Timezone identifier (e.g. America/Los_Angeles)

Returns:

False, when not present

Type: 
Boolean

(static) register(nameopt, zone)

Registers a timezone object or component.

Parameters:
NameTypeAttributesDescription
nameString<optional>

The name of the timezone. Defaults to the component's TZID if not passed.

zoneICAL.Component | ICAL.Timezone

The initialized zone or vtimezone.

(static) remove(tzid) → (nullable) {ICAL.Timezone}

Removes a timezone by its tzid from the list.

Parameters:
NameTypeDescription
tzidString

Timezone identifier (e.g. America/Los_Angeles)

Returns:

The removed timezone, or null if not registered

Type: 
ICAL.Timezone
Home
\ No newline at end of file diff --git a/api/ICAL.module_design.html b/api/ICAL.module_design.html index a020a5a0..bf48db27 100644 --- a/api/ICAL.module_design.html +++ b/api/ICAL.module_design.html @@ -1,6 +1,6 @@ Module: design
On this page

Members

(static) components :Object

Holds the design set for known top-level components

Type:
  • Object
Properties
NameTypeDescription
vcardICAL.design.designSet

vCard VCARD

veventICAL.design.designSet

iCalendar VEVENT

vtodoICAL.design.designSet

iCalendar VTODO

vjournalICAL.design.designSet

iCalendar VJOURNAL

valarmICAL.design.designSet

iCalendar VALARM

vtimezoneICAL.design.designSet

iCalendar VTIMEZONE

daylightICAL.design.designSet

iCalendar DAYLIGHT

standardICAL.design.designSet

iCalendar STANDARD

Example
let propertyName = 'fn';
+    
On this page

Members

(static) components :Object

Holds the design set for known top-level components

Type:
  • Object
Properties
NameTypeDescription
vcardICAL.design.designSet

vCard VCARD

veventICAL.design.designSet

iCalendar VEVENT

vtodoICAL.design.designSet

iCalendar VTODO

vjournalICAL.design.designSet

iCalendar VJOURNAL

valarmICAL.design.designSet

iCalendar VALARM

vtimezoneICAL.design.designSet

iCalendar VTIMEZONE

daylightICAL.design.designSet

iCalendar DAYLIGHT

standardICAL.design.designSet

iCalendar STANDARD

Example
let propertyName = 'fn';
 let componentDesign = ICAL.design.components.vcard;
 let propertyDetails = componentDesign.property[propertyName];
 if (propertyDetails.defaultType == 'text') {
@@ -10,4 +10,4 @@
 let propertyDetails = componentDesign.property[propertyName];
 if (propertyDetails.defaultType == 'text') {
   // Yep, sure is...
-}

(static) defaultSet :ICAL.design.designSet

The default set for new properties and components if none is specified.

(static) defaultType :String

The default type for unknown properties

Type:
  • String

(static) icalendar :ICAL.design.designSet

The design set for iCalendar (rfc5545/rfc7265) components.

(static) strict

Can be set to false to make the parser more lenient.

(static) vcard :ICAL.design.designSet

The design set for vCard (rfc6350/rfc7095) components.

(static) vcard3 :ICAL.design.designSet

The design set for vCard (rfc2425/rfc2426/rfc7095) components.

(inner) icalSet :ICAL.design.designSet

iCalendar design set

(inner) vcard3Set :ICAL.design.designSet

vCard 3.0 design set

(inner) vcardSet :ICAL.design.designSet

vCard 4.0 design set

Methods

(static) getDesignSet(componentName) → {ICAL.design.designSet}

Gets the design set for the given component name.

Parameters:
NameTypeDescription
componentNameString

The name of the component

Returns:

The design set for the component

Type: 
ICAL.design.designSet
\ No newline at end of file +}

(static) defaultSet :ICAL.design.designSet

The default set for new properties and components if none is specified.

(static) defaultType :String

The default type for unknown properties

Type:
  • String

(static) icalendar :ICAL.design.designSet

The design set for iCalendar (rfc5545/rfc7265) components.

(static) strict

Can be set to false to make the parser more lenient.

(static) vcard :ICAL.design.designSet

The design set for vCard (rfc6350/rfc7095) components.

(static) vcard3 :ICAL.design.designSet

The design set for vCard (rfc2425/rfc2426/rfc7095) components.

(inner) icalSet :ICAL.design.designSet

iCalendar design set

(inner) vcard3Set :ICAL.design.designSet

vCard 3.0 design set

(inner) vcardSet :ICAL.design.designSet

vCard 4.0 design set

Methods

(static) getDesignSet(componentName) → {ICAL.design.designSet}

Gets the design set for the given component name.

Parameters:
NameTypeDescription
componentNameString

The name of the component

Returns:

The design set for the component

Type: 
ICAL.design.designSet
Home
\ No newline at end of file diff --git a/api/ICAL.module_helpers.html b/api/ICAL.module_helpers.html index b05bd5eb..98ab4597 100644 --- a/api/ICAL.module_helpers.html +++ b/api/ICAL.module_helpers.html @@ -1,6 +1,6 @@ Module: helpers
On this page

Helper functions used in various places within ical.js

Methods

(static) binsearchInsert(list, seekVal, cmpfunc) → {Number}

Find the index for insertion using binary search.

Parameters:
NameTypeDescription
listArray

The list to search

seekVal?

The value to insert

cmpfuncfunction

The comparison func, that can compare two seekVals

Returns:

The insert position

Type: 
Number

(static) clone(aSrc, aDeepopt) → {*}

Clone the passed object or primitive. By default a shallow clone will be executed.

Parameters:
NameTypeAttributesDescription
aSrc*

The thing to clone

aDeepBoolean<optional>

If true, a deep clone will be performed

Returns:

The copy of the thing

Type: 
*

(static) extend(source, target) → {Object}

Poor-man's cross-browser object extension. Doesn't support all the features, but enough for our usage. Note that the target's properties are not overwritten with the source properties.

Parameters:
NameTypeDescription
sourceObject

The object to extend

targetObject

The object to extend with

Returns:

Returns the target.

Type: 
Object
Example
var child = ICAL.helpers.extend(parent, {
+    
On this page

Helper functions used in various places within ical.js

Methods

(static) binsearchInsert(list, seekVal, cmpfunc) → {Number}

Find the index for insertion using binary search.

Parameters:
NameTypeDescription
listArray

The list to search

seekVal?

The value to insert

cmpfuncfunction

The comparison func, that can compare two seekVals

Returns:

The insert position

Type: 
Number

(static) clone(aSrc, aDeepopt) → {*}

Clone the passed object or primitive. By default a shallow clone will be executed.

Parameters:
NameTypeAttributesDescription
aSrc*

The thing to clone

aDeepBoolean<optional>

If true, a deep clone will be performed

Returns:

The copy of the thing

Type: 
*

(static) extend(source, target) → {Object}

Poor-man's cross-browser object extension. Doesn't support all the features, but enough for our usage. Note that the target's properties are not overwritten with the source properties.

Parameters:
NameTypeDescription
sourceObject

The object to extend

targetObject

The object to extend with

Returns:

Returns the target.

Type: 
Object
Example
var child = ICAL.helpers.extend(parent, {
   "bar": 123
 });

(static) foldline(aLine) → {String}

Performs iCalendar line folding. A line ending character is inserted and the next line begins with a whitespace.

Parameters:
NameTypeDescription
aLineString

The line to fold

Returns:

The folded line

Type: 
String
Example
SUMMARY:This line will be fold
  ed right in the middle of a word.

(static) formatClassType(data, type) → {?}

Creates or returns a class instance of a given type with the initialization data if the data is not already an instance of the given type.

Parameters:
NameTypeDescription
dataObject

object initialization data

typeObject

object type (like ICAL.Time)

Returns:

An instance of the found type.

Type: 
?
Example
var time = new ICAL.Time(...);
@@ -11,4 +11,4 @@
 
 result = ICAL.helpers.formatClassType({}, ICAL.Time);
 (result isntanceof ICAL.Time)
-// => true

(static) isStrictlyNaN(number) → {Boolean}

Checks if the given type is of the number type and also NaN.

Parameters:
NameTypeDescription
numberNumber

The number to check

Returns:

True, if the number is strictly NaN

Type: 
Boolean

(static) pad2(data) → {String}

Pads the given string or number with zeros so it will have at least two characters.

Parameters:
NameTypeDescription
dataString | Number

The string or number to pad

Returns:

The number padded as a string

Type: 
String

(static) strictParseInt(string) → {Number}

Parses a string value that is expected to be an integer, when the valid is not an integer throws a decoration error.

Parameters:
NameTypeDescription
stringString

Raw string input

Returns:

Parsed integer

Type: 
Number

(static) trunc(number) → {Number}

Truncates the given number, correctly handling negative numbers.

Parameters:
NameTypeDescription
numberNumber

The number to truncate

Returns:

The truncated number

Type: 
Number

(static) unescapedIndexOf(buffer, search, pos) → {Number}

Identical to indexOf but will only match values when they are not preceded by a backslash character.

Parameters:
NameTypeDescription
bufferString

String to search

searchString

Value to look for

posNumber

Start position

Returns:

The position, or -1 if not found

Type: 
Number

(static) updateTimezones(vcal) → {ICAL.Component}

Compiles a list of all referenced TZIDs in all subcomponents and removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs are referenced by a component, but a VTIMEZONE does not exist, an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService.

Parameters:
NameTypeDescription
vcalICAL.Component

The top-level VCALENDAR component.

Returns:

The ICAL.Component that was passed in.

Type: 
ICAL.Component
\ No newline at end of file +// => true

(static) isStrictlyNaN(number) → {Boolean}

Checks if the given type is of the number type and also NaN.

Parameters:
NameTypeDescription
numberNumber

The number to check

Returns:

True, if the number is strictly NaN

Type: 
Boolean

(static) pad2(data) → {String}

Pads the given string or number with zeros so it will have at least two characters.

Parameters:
NameTypeDescription
dataString | Number

The string or number to pad

Returns:

The number padded as a string

Type: 
String

(static) strictParseInt(string) → {Number}

Parses a string value that is expected to be an integer, when the valid is not an integer throws a decoration error.

Parameters:
NameTypeDescription
stringString

Raw string input

Returns:

Parsed integer

Type: 
Number

(static) trunc(number) → {Number}

Truncates the given number, correctly handling negative numbers.

Parameters:
NameTypeDescription
numberNumber

The number to truncate

Returns:

The truncated number

Type: 
Number

(static) unescapedIndexOf(buffer, search, pos) → {Number}

Identical to indexOf but will only match values when they are not preceded by a backslash character.

Parameters:
NameTypeDescription
bufferString

String to search

searchString

Value to look for

posNumber

Start position

Returns:

The position, or -1 if not found

Type: 
Number

(static) updateTimezones(vcal) → {ICAL.Component}

Compiles a list of all referenced TZIDs in all subcomponents and removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs are referenced by a component, but a VTIMEZONE does not exist, an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService.

Parameters:
NameTypeDescription
vcalICAL.Component

The top-level VCALENDAR component.

Returns:

The ICAL.Component that was passed in.

Type: 
ICAL.Component
Home
\ No newline at end of file diff --git a/api/ICAL.parse.ParserError.html b/api/ICAL.parse.ParserError.html index 9a6d6e66..8e356328 100644 --- a/api/ICAL.parse.ParserError.html +++ b/api/ICAL.parse.ParserError.html @@ -1,3 +1,3 @@ Class: ParserError
On this page

ParserError

An error that occurred during parsing.

Constructor

new ParserError(message)

Parameters:
NameTypeDescription
messageString

The error message

Extends

  • Error
Home
\ No newline at end of file +
On this page

ParserError

An error that occurred during parsing.

Constructor

new ParserError(message)

Parameters:
NameTypeDescription
messageString

The error message

Extends

  • Error
Home
\ No newline at end of file diff --git a/api/binary.js.html b/api/binary.js.html index 7fc43b77..981192a6 100644 --- a/api/binary.js.html +++ b/api/binary.js.html @@ -1,6 +1,6 @@ Source: binary.js
On this page

binary.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

binary.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -174,4 +174,4 @@
   }
 }
 export default Binary;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/component.js.html b/api/component.js.html index 24084c34..530e5eea 100644 --- a/api/component.js.html +++ b/api/component.js.html @@ -1,6 +1,6 @@ Source: component.js
On this page

component.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

component.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -566,4 +566,4 @@
   }
 }
 export default Component;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/component_parser.js.html b/api/component_parser.js.html index 992ff984..7304d23e 100644 --- a/api/component_parser.js.html +++ b/api/component_parser.js.html @@ -1,6 +1,6 @@ Source: component_parser.js
On this page

component_parser.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

component_parser.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -158,4 +158,4 @@
   }
 }
 export default ComponentParser;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/design.js.html b/api/design.js.html index 06696fde..74a54b37 100644 --- a/api/design.js.html +++ b/api/design.js.html @@ -1,6 +1,6 @@ Source: design.js
On this page

design.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

design.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -1030,4 +1030,4 @@
   }
 };
 export default design;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/duration.js.html b/api/duration.js.html index f417f46d..9a24f500 100644 --- a/api/duration.js.html +++ b/api/duration.js.html @@ -1,6 +1,6 @@ Source: duration.js
On this page

duration.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

duration.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -355,4 +355,4 @@
 
   return 1;
 }
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/event.js.html b/api/event.js.html index d179f343..3414484f 100644 --- a/api/event.js.html +++ b/api/event.js.html @@ -1,6 +1,6 @@ Source: event.js
On this page

event.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

event.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -566,4 +566,4 @@
   if (b[0] > a[0]) return -1;
   return 0;
 }
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/helpers.js.html b/api/helpers.js.html index 83abdfd9..2586e55c 100644 --- a/api/helpers.js.html +++ b/api/helpers.js.html @@ -1,6 +1,6 @@ Source: helpers.js
On this page

helpers.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

helpers.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -314,4 +314,4 @@
   }
   return target;
 }
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/index.html b/api/index.html index 3f8b3321..400ce01b 100644 --- a/api/index.html +++ b/api/index.html @@ -1,6 +1,6 @@ Home
On this page

ical.js - Javascript parser for iCalendar, jCal, vCard, jCard.

This is a library to parse the formats defined in the following rfcs and their extensions:

The initial goal was to use it as a replacement for libical in the Mozilla Calendar Project, but the library has been written with the web in mind. This library enables you to do all sorts of cool experiments with calendar data and the web. Most algorithms here were taken from libical. If you are bugfixing this library, please check if the fix can be upstreamed to libical.

Build Status Coverage Statusnpm versionCDNJS

Sandbox and Validator

If you want to try out ICAL.js right now, there is a jsfiddle set up and ready to use. Read on for documentation and example links.

There is also a validator that demonstrates how to use the library in a webpage in the tools/ subdirectory.

Try the validator online, it always uses the latest release of ICAL.js.

Installing

You can install ICAL.js via npm, if you would like to use it in Node.js:

npm install ical.js
+    
On this page

ical.js - Javascript parser for iCalendar, jCal, vCard, jCard.

This is a library to parse the formats defined in the following rfcs and their extensions:

The initial goal was to use it as a replacement for libical in the Mozilla Calendar Project, but the library has been written with the web in mind. This library enables you to do all sorts of cool experiments with calendar data and the web. Most algorithms here were taken from libical. If you are bugfixing this library, please check if the fix can be upstreamed to libical.

Build Status Coverage Statusnpm versionCDNJS

Sandbox and Validator

If you want to try out ICAL.js right now, there is a jsfiddle set up and ready to use. Read on for documentation and example links.

There is also a validator that demonstrates how to use the library in a webpage in the tools/ subdirectory.

Try the validator online, it always uses the latest release of ICAL.js.

Installing

You can install ICAL.js via npm, if you would like to use it in Node.js:

npm install ical.js
 

ICAL.js has no dependencies and is written in modern JavaScript. A version transpiled to ES5 is available as well. It should work in all versions of Node.js and modern browsers.

Timezones

The stock ical.js does not register any timezones, due to the additional size it brings. If you'd like to do timezone conversion, and the timezone definitions are not included in the respective ics files, you'll need to use ical.timezones.js or its minified counterpart.

Documentation

For a few guides with code samples, please check out the wiki. If you prefer, full API documentation is available here. If you are missing anything, please don't hesitate to create an issue.

Developing

To contribute to ICAL.js you need to set up the development environment. A simple npm install will get you set up. If you would like to help out and would like to discuss any API changes, please feel free to create an issue.

Tests

The following test suites are available

npm run test-unit         # Node unit tests
 npm run test-acceptance   # Node acceptance tests
 npm run test-performance  # Performance comparison tests
@@ -8,4 +8,4 @@
 
 npm run test              # Node unit and acceptance tests (This is fast and covers most aspects)
 npm run test-all          # All of the above
-

See the wiki for more details.

Code coverage is automatically generated for the node unit tests. You can view the coverage results online, or run them locally to make sure new code is covered.

Linters

To make sure all ICAL.js code uses a common style, please run the linters using npm run lint. Please make sure you fix any issues shown by this command before sending a pull request.

Documentation

You can generate the documentation locally, this is also helpful to ensure the jsdoc you have written is valid. To do so, run npm run jsdoc. You will find the output in the docs/api/ subdirectory.

Packaging

When you are done with your work, you can run npm run build to create the single-file build for use in the browser, including its minified counterpart and the source map.

License

ical.js is licensed under the Mozilla Public License, version 2.0.

\ No newline at end of file +

See the wiki for more details.

Code coverage is automatically generated for the node unit tests. You can view the coverage results online, or run them locally to make sure new code is covered.

Linters

To make sure all ICAL.js code uses a common style, please run the linters using npm run lint. Please make sure you fix any issues shown by this command before sending a pull request.

Documentation

You can generate the documentation locally, this is also helpful to ensure the jsdoc you have written is valid. To do so, run npm run jsdoc. You will find the output in the docs/api/ subdirectory.

Packaging

When you are done with your work, you can run npm run build to create the single-file build for use in the browser, including its minified counterpart and the source map.

License

ical.js is licensed under the Mozilla Public License, version 2.0.

Home
\ No newline at end of file diff --git a/api/module.js.html b/api/module.js.html index 1e13de7d..21bebb46 100644 --- a/api/module.js.html +++ b/api/module.js.html @@ -1,6 +1,6 @@ Source: module.js
On this page

module.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

module.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -73,4 +73,4 @@
   design,
   helpers
 };
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/parse.js.html b/api/parse.js.html index ced4729b..ffa0427a 100644 --- a/api/parse.js.html +++ b/api/parse.js.html @@ -1,6 +1,6 @@ Source: parse.js
On this page

parse.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

parse.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -557,4 +557,4 @@
   if (line.length)
     callback(null, line);
 };
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/period.js.html b/api/period.js.html index fc3de7f9..a3dd1918 100644 --- a/api/period.js.html +++ b/api/period.js.html @@ -1,6 +1,6 @@ Source: period.js
On this page

period.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

period.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -234,4 +234,4 @@
   }
 }
 export default Period;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/property.js.html b/api/property.js.html index e260e4c5..3d0d5317 100644 --- a/api/property.js.html +++ b/api/property.js.html @@ -1,6 +1,6 @@ Source: property.js
On this page

property.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

property.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -408,4 +408,4 @@
   }
 }
 export default Property;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/recur.js.html b/api/recur.js.html index 5bf4922f..984015de 100644 --- a/api/recur.js.html +++ b/api/recur.js.html @@ -1,6 +1,6 @@ Source: recur.js
On this page

recur.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

recur.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -557,4 +557,4 @@
   BYMONTH: parseNumericValue.bind(undefined, 'BYMONTH', 1, 12),
   BYSETPOS: parseNumericValue.bind(undefined, 'BYSETPOS', -366, 366)
 };
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/recur_expansion.js.html b/api/recur_expansion.js.html index a3191766..56675a07 100644 --- a/api/recur_expansion.js.html +++ b/api/recur_expansion.js.html @@ -1,6 +1,6 @@ Source: recur_expansion.js
On this page

recur_expansion.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

recur_expansion.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -475,4 +475,4 @@
   }
 }
 export default RecurExpansion;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/recur_iterator.js.html b/api/recur_iterator.js.html index b9c07da6..4542e65e 100644 --- a/api/recur_iterator.js.html +++ b/api/recur_iterator.js.html @@ -1,6 +1,6 @@ Source: recur_iterator.js
On this page

recur_iterator.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

recur_iterator.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -1362,4 +1362,4 @@
   }
 }
 export default RecurIterator;
-
\ No newline at end of file +
Home
\ No newline at end of file diff --git a/api/scripts/core.js b/api/scripts/core.js index d5e5a430..238a8829 100644 --- a/api/scripts/core.js +++ b/api/scripts/core.js @@ -11,12 +11,46 @@ var MIN_FONT_SIZE = 10; var localStorage = window.localStorage; function getTheme() { - var body = document.body; + var theme = localStorage.getItem(themeLocalStorageKey); + + if (theme) return theme; + + theme = document.body.getAttribute('data-theme'); + + switch (theme) { + case 'dark': + case 'light': + return theme; + case 'fallback-dark': + if ( + // eslint-disable-next-line no-undef + window.matchMedia('(prefers-color-scheme)').matches && + // eslint-disable-next-line no-undef + window.matchMedia('(prefers-color-scheme: light)').matches + ) { + return 'light'; + } + + return 'dark'; + + case 'fallback-light': + if ( + // eslint-disable-next-line no-undef + window.matchMedia('(prefers-color-scheme)').matches && + // eslint-disable-next-line no-undef + window.matchMedia('(prefers-color-scheme: dark)').matches + ) { + return 'dark'; + } - return body.getAttribute('data-theme'); + return 'light'; + + default: + return 'dark'; + } } -function updateTheme(theme) { +function localUpdateTheme(theme) { var body = document.body; var svgUse = document.querySelectorAll('.theme-svg-use'); var iconID = theme === 'dark' ? '#light-theme-icon' : '#dark-theme-icon'; @@ -28,7 +62,10 @@ function updateTheme(theme) { svgUse.forEach(function (svg) { svg.setAttribute('xlink:href', iconID); }); +} +function updateTheme(theme) { + localUpdateTheme(theme); localStorage.setItem(themeLocalStorageKey, theme); } @@ -44,17 +81,7 @@ function toggleTheme() { (function () { var theme = getTheme(); - var themeStoredInLocalStorage = localStorage.getItem(themeLocalStorageKey); - - if (themeStoredInLocalStorage) { - if (theme === themeStoredInLocalStorage) { - return; - } - - updateTheme(themeStoredInLocalStorage); - } else { - localStorage.setItem(themeLocalStorageKey, theme); - } + updateTheme(theme); })(); /** @@ -145,12 +172,15 @@ function bringElementIntoView(element, updateHistory = true) { /** * tocbotInstance is defined in layout.tmpl * It is defined when we are initializing tocbot. - * + * */ // eslint-disable-next-line no-undef if (tocbotInstance) { - // eslint-disable-next-line no-undef - setTimeout(() => tocbotInstance.updateTocListActiveElement(element), 60) + setTimeout( + // eslint-disable-next-line no-undef + () => tocbotInstance.updateTocListActiveElement(element), + 60 + ); } var navbar = document.querySelector('.navbar-container'); var body = document.querySelector('.main-content'); @@ -249,7 +279,6 @@ function addAnchor() { * @param {string} value */ function copy(value) { - console.log(value); const el = document.createElement('textarea'); el.value = value; @@ -401,9 +430,9 @@ function getFontSize() { return currentFontSize; } -function updateFontSize(fontSize) { +function localUpdateFontSize(fontSize) { html.style.fontSize = fontSize + 'px'; - localStorage.setItem(fontSizeLocalStorageKey, fontSize); + var fontSizeText = document.querySelector( '#b77a68a492f343baabea06fad81f651e' ); @@ -413,6 +442,11 @@ function updateFontSize(fontSize) { } } +function updateFontSize(fontSize) { + localUpdateFontSize(fontSize); + localStorage.setItem(fontSizeLocalStorageKey, fontSize); +} + (function () { var fontSize = getFontSize(); var fontSizeInLocalStorage = localStorage.getItem(fontSizeLocalStorageKey); @@ -452,8 +486,9 @@ function fontSizeTooltip() { return `
- ";return'
'+('
'+t.toLocaleUpperCase()+"
")+e+"
"}function getPreDiv(){var e=document.createElement("div");return e.classList.add("pre-div"),e}function processAllPre(){var e=document.querySelectorAll("pre"),t=document.querySelector("#PeOAagUepe"),o=document.querySelector("#VuAckcnZhf"),n=0,i=0,c=(t&&(i=t.getBoundingClientRect().height),o&&(n=o.getBoundingClientRect().height),window.innerHeight-n-i-250);e.forEach(function(e,t){var o,n=e.parentNode;n&&"true"===n.getAttribute("data-skip-pre-process")||(n=getPreDiv(),o=getPreTopBar(t="ScDloZOMdL"+t,e.getAttribute("data-lang")||"code"),n.innerHTML=o,e.style.maxHeight=c+"px",e.id=t,e.classList.add("prettyprint"),e.parentNode.insertBefore(n,e),n.appendChild(e))})}function highlightAndBringLineIntoView(){var e=window.location.hash.replace("#line","");try{var t='[data-line-number="'+e+'"',o=document.querySelector(t);o.scrollIntoView(),o.parentNode.classList.add("selected")}catch(e){console.error(e)}}function getFontSize(){var e=16;try{e=Number.parseInt(html.style.fontSize.split("px")[0],10)}catch(e){console.log(e)}return e}function updateFontSize(e){html.style.fontSize=e+"px",localStorage.setItem(fontSizeLocalStorageKey,e);var t=document.querySelector("#b77a68a492f343baabea06fad81f651e");t&&(t.innerHTML=e)}function incrementFont(e){var t=getFontSize();t - -
- ${e} -
- - -
- - `}function initTooltip(){tippy(".theme-toggle",{content:"Toggle Theme",delay:500}),tippy(".search-button",{content:"Search",delay:500}),tippy(".font-size",{content:"Change font size",delay:500}),tippy(".codepen-button",{content:"Open code in CodePen",placement:"left"}),tippy(".copy-code",{content:"Copy this code",placement:"left"}),tippy(".font-size",{content:fontSizeTooltip(),trigger:"click",interactive:!0,allowHTML:!0,placement:"left"})}function fixTable(){for(const t of document.querySelectorAll("table")){if(t.classList.contains("hljs-ln"))return;var e=document.createElement("div");e.classList.add("table-div"),t.parentNode.insertBefore(e,t),e.appendChild(t)}}function hideMobileMenu(){var e=document.querySelector("#mobile-sidebar"),t=document.querySelector("#mobile-menu"),o=t.querySelector("use");e&&e.classList.remove("show"),t&&t.setAttribute("data-isopen","false"),o&&o.setAttribute("xlink:href","#menu-icon")}function showMobileMenu(){var e=document.querySelector("#mobile-sidebar"),t=document.querySelector("#mobile-menu"),o=t.querySelector("use");e&&e.classList.add("show"),t&&t.setAttribute("data-isopen","true"),o&&o.setAttribute("xlink:href","#close-icon")}function onMobileMenuClick(){("true"===document.querySelector("#mobile-menu").getAttribute("data-isopen")?hideMobileMenu:showMobileMenu)()}function initMobileMenu(){var e=document.querySelector("#mobile-menu");e&&e.addEventListener("click",onMobileMenuClick)}function addHrefToSidebarTitle(){document.querySelectorAll(".sidebar-title-anchor").forEach(function(e){e.setAttribute("href",baseURL)})}function onDomContentLoaded(){var e=document.querySelectorAll(".theme-toggle");initMobileMenu(),e&&e.forEach(function(e){e.addEventListener("click",toggleTheme)}),hljs.addPlugin({"after:highlightElement":function(e){e.el.parentNode.setAttribute("data-lang","code")}}),hljs.highlightAll(),hljs.initLineNumbersOnLoad({singleLine:!0}),initAccordion(),addAnchor(),processAllPre(),hideTocOnSourcePage(),setTimeout(function(){bringIdToViewOnMount(),isSourcePage()&&highlightAndBringLineIntoView()},1e3),initTooltip(),fixTable(),addHrefToSidebarTitle()}!function(){var e=getTheme(),t=localStorage.getItem(themeLocalStorageKey);t?e!==t&&updateTheme(t):localStorage.setItem(themeLocalStorageKey,e)}(),function(){var e=getFontSize(),t=localStorage.getItem(fontSizeLocalStorageKey);t?(t=Number.parseInt(t,10))!==e&&updateFontSize(t):updateFontSize(e)}(),window.addEventListener("DOMContentLoaded",onDomContentLoaded),window.addEventListener("hashchange",e=>{e=new URL(e.newURL);""!==e.hash&&bringIdToViewOnMount(e.hash)}); \ No newline at end of file +var accordionLocalStorageKey="accordion-id",themeLocalStorageKey="theme",fontSizeLocalStorageKey="font-size",html=document.querySelector("html"),MAX_FONT_SIZE=30,MIN_FONT_SIZE=10,localStorage=window.localStorage;function getTheme(){var e=localStorage.getItem(themeLocalStorageKey);if(e)return e;switch(e=document.body.getAttribute("data-theme")){case"dark":case"light":return e;case"fallback-dark":return window.matchMedia("(prefers-color-scheme)").matches&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";case"fallback-light":return window.matchMedia("(prefers-color-scheme)").matches&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";default:return"dark"}}function localUpdateTheme(e){var t=document.body,o=document.querySelectorAll(".theme-svg-use"),n="dark"===e?"#light-theme-icon":"#dark-theme-icon";t.setAttribute("data-theme",e),t.classList.remove("dark","light"),t.classList.add(e),o.forEach(function(e){e.setAttribute("xlink:href",n)})}function updateTheme(e){localUpdateTheme(e),localStorage.setItem(themeLocalStorageKey,e)}function toggleTheme(){updateTheme("dark"===document.body.getAttribute("data-theme")?"light":"dark")}function setAccordionIdToLocalStorage(e){var t=JSON.parse(localStorage.getItem(accordionLocalStorageKey));t[e]=e,localStorage.setItem(accordionLocalStorageKey,JSON.stringify(t))}function removeAccordionIdFromLocalStorage(e){var t=JSON.parse(localStorage.getItem(accordionLocalStorageKey));delete t[e],localStorage.setItem(accordionLocalStorageKey,JSON.stringify(t))}function getAccordionIdsFromLocalStorage(){return JSON.parse(localStorage.getItem(accordionLocalStorageKey))||{}}function toggleAccordion(e){"false"===e.getAttribute("data-isopen")?(e.setAttribute("data-isopen","true"),setAccordionIdToLocalStorage(e.id)):(e.setAttribute("data-isopen","false"),removeAccordionIdFromLocalStorage(e.id))}function initAccordion(){void 0!==localStorage.getItem(accordionLocalStorageKey)&&null!==localStorage.getItem(accordionLocalStorageKey)||localStorage.setItem(accordionLocalStorageKey,"{}");var e=document.querySelectorAll(".sidebar-section-title"),t=getAccordionIdsFromLocalStorage();e.forEach(function(e){e.addEventListener("click",function(){toggleAccordion(e)}),e.id in t&&toggleAccordion(e)})}function isSourcePage(){return Boolean(document.querySelector("#source-page"))}function bringElementIntoView(e,t=!0){var o,n,i,c;e&&(tocbotInstance&&setTimeout(()=>tocbotInstance.updateTocListActiveElement(e),60),o=document.querySelector(".navbar-container"),n=document.querySelector(".main-content"),i=e.getBoundingClientRect().top,c=16,o&&(c+=o.scrollHeight),n&&n.scrollBy(0,i-c),t&&history.pushState(null,null,"#"+e.id))}function bringLinkToView(e){e.preventDefault(),e.stopPropagation();var e=e.currentTarget.getAttribute("href");!e||(e=document.getElementById(e.slice(1)))&&bringElementIntoView(e)}function bringIdToViewOnMount(){var e,t;isSourcePage()||""!==(e=window.location.hash)&&((t=document.getElementById(e.slice(1)))||(e=decodeURI(e),t=document.getElementById(e.slice(1))),t&&bringElementIntoView(t,!1))}function createAnchorElement(e){var t=document.createElement("a");return t.textContent="#",t.href="#"+e,t.classList.add("link-anchor"),t.onclick=bringLinkToView,t}function addAnchor(){var e=document.querySelector(".main-content").querySelector("section");[e.querySelectorAll("h1"),e.querySelectorAll("h2"),e.querySelectorAll("h3"),e.querySelectorAll("h4")].forEach(function(e){e.forEach(function(e){var t=createAnchorElement(e.id);e.classList.add("has-anchor"),e.append(t)})})}function copy(e){const t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}function showTooltip(e){var t=document.getElementById(e);t.classList.add("show-tooltip"),setTimeout(function(){t.classList.remove("show-tooltip")},3e3)}function copyFunction(e){var t=document.getElementById(e);copy((t.querySelector(".linenums")||t.querySelector("code")).innerText.trim().replace(/(^\t)/gm,"")),showTooltip("tooltip-"+e)}function hideTocOnSourcePage(){isSourcePage()&&(document.querySelector(".toc-container").style.display="none")}function getPreTopBar(e,t=""){e='";return'
'+('
'+t.toLocaleUpperCase()+"
")+e+"
"}function getPreDiv(){var e=document.createElement("div");return e.classList.add("pre-div"),e}function processAllPre(){var e=document.querySelectorAll("pre"),t=document.querySelector("#PeOAagUepe"),o=document.querySelector("#VuAckcnZhf"),n=0,i=0,c=(t&&(i=t.getBoundingClientRect().height),o&&(n=o.getBoundingClientRect().height),window.innerHeight-n-i-250);e.forEach(function(e,t){var o,n=e.parentNode;n&&"true"===n.getAttribute("data-skip-pre-process")||(n=getPreDiv(),o=getPreTopBar(t="ScDloZOMdL"+t,e.getAttribute("data-lang")||"code"),n.innerHTML=o,e.style.maxHeight=c+"px",e.id=t,e.classList.add("prettyprint"),e.parentNode.insertBefore(n,e),n.appendChild(e))})}function highlightAndBringLineIntoView(){var e=window.location.hash.replace("#line","");try{var t='[data-line-number="'+e+'"',o=document.querySelector(t);o.scrollIntoView(),o.parentNode.classList.add("selected")}catch(e){console.error(e)}}function getFontSize(){var e=16;try{e=Number.parseInt(html.style.fontSize.split("px")[0],10)}catch(e){console.log(e)}return e}function localUpdateFontSize(e){html.style.fontSize=e+"px";var t=document.querySelector("#b77a68a492f343baabea06fad81f651e");t&&(t.innerHTML=e)}function updateFontSize(e){localUpdateFontSize(e),localStorage.setItem(fontSizeLocalStorageKey,e)}function incrementFont(e){var t=getFontSize();t + +
+ ${e} +
+ + + + + `}function initTooltip(){tippy(".theme-toggle",{content:"Toggle Theme",delay:500}),tippy(".search-button",{content:"Search",delay:500}),tippy(".font-size",{content:"Change font size",delay:500}),tippy(".codepen-button",{content:"Open code in CodePen",placement:"left"}),tippy(".copy-code",{content:"Copy this code",placement:"left"}),tippy(".font-size",{content:fontSizeTooltip(),trigger:"click",interactive:!0,allowHTML:!0,placement:"left"})}function fixTable(){for(const t of document.querySelectorAll("table")){if(t.classList.contains("hljs-ln"))return;var e=document.createElement("div");e.classList.add("table-div"),t.parentNode.insertBefore(e,t),e.appendChild(t)}}function hideMobileMenu(){var e=document.querySelector("#mobile-sidebar"),t=document.querySelector("#mobile-menu"),o=t.querySelector("use");e&&e.classList.remove("show"),t&&t.setAttribute("data-isopen","false"),o&&o.setAttribute("xlink:href","#menu-icon")}function showMobileMenu(){var e=document.querySelector("#mobile-sidebar"),t=document.querySelector("#mobile-menu"),o=t.querySelector("use");e&&e.classList.add("show"),t&&t.setAttribute("data-isopen","true"),o&&o.setAttribute("xlink:href","#close-icon")}function onMobileMenuClick(){("true"===document.querySelector("#mobile-menu").getAttribute("data-isopen")?hideMobileMenu:showMobileMenu)()}function initMobileMenu(){var e=document.querySelector("#mobile-menu");e&&e.addEventListener("click",onMobileMenuClick)}function addHrefToSidebarTitle(){document.querySelectorAll(".sidebar-title-anchor").forEach(function(e){e.setAttribute("href",baseURL)})}function highlightActiveLinkInSidebar(){var e=document.location.href.split("/");const t=e[e.length-1];let o=document.querySelector(`.sidebar a[href*='${t}']`);if(!o)try{o=document.querySelector(`.sidebar a[href*='${t.split("#")[0]}']`)}catch(e){return void console.error(e)}o&&(o.parentElement.classList.add("active"),o.scrollIntoView())}function onDomContentLoaded(){var e=document.querySelectorAll(".theme-toggle");initMobileMenu(),e&&e.forEach(function(e){e.addEventListener("click",toggleTheme)}),hljs.addPlugin({"after:highlightElement":function(e){e.el.parentNode.setAttribute("data-lang","code")}}),hljs.highlightAll(),hljs.initLineNumbersOnLoad({singleLine:!0}),initAccordion(),addAnchor(),processAllPre(),hideTocOnSourcePage(),setTimeout(function(){bringIdToViewOnMount(),isSourcePage()&&highlightAndBringLineIntoView()},1e3),initTooltip(),fixTable(),addHrefToSidebarTitle(),highlightActiveLinkInSidebar()}updateTheme(getTheme()),function(){var e=getFontSize(),t=localStorage.getItem(fontSizeLocalStorageKey);t?(t=Number.parseInt(t,10))!==e&&updateFontSize(t):updateFontSize(e)}(),window.addEventListener("DOMContentLoaded",onDomContentLoaded),window.addEventListener("hashchange",e=>{e=new URL(e.newURL);""!==e.hash&&bringIdToViewOnMount(e.hash)}),window.addEventListener("storage",e=>{"undefined"!==e.newValue&&(initTooltip(),e.key===themeLocalStorageKey&&localUpdateTheme(e.newValue),e.key===fontSizeLocalStorageKey&&localUpdateFontSize(e.newValue))}); \ No newline at end of file diff --git a/api/stringify.js.html b/api/stringify.js.html index 88215d11..96f34cd7 100644 --- a/api/stringify.js.html +++ b/api/stringify.js.html @@ -1,6 +1,6 @@ Source: stringify.js
On this page

stringify.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

stringify.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -289,4 +289,4 @@
     return RFC6868_REPLACE_MAP[x];
   });
 };
-
\ No newline at end of file +
\ No newline at end of file diff --git a/api/styles/clean-jsdoc-theme-base.css b/api/styles/clean-jsdoc-theme-base.css index 8a41c293..efdc600d 100644 --- a/api/styles/clean-jsdoc-theme-base.css +++ b/api/styles/clean-jsdoc-theme-base.css @@ -1,46 +1,54 @@ @font-face { - font-family: 'heading'; - src: url('../fonts/WorkSans-Bold.ttf') format('truetype'); - font-display: swap; + font-display: swap; + font-family: 'heading'; + src: url('../fonts/WorkSans-Bold.ttf') format('truetype'); + } @font-face { - font-family: 'body'; - src: url('../fonts/OpenSans-Regular.ttf') format('truetype'); - font-display: swap; + font-display: swap; + font-family: 'body'; + src: url('../fonts/OpenSans-Regular.ttf') format('truetype'); + } @font-face { - font-family: 'code'; - src: url('../fonts/Inconsolata-Regular.ttf') format('truetype'); - font-display: swap; + font-display: swap; + font-family: 'code'; + src: url('../fonts/Inconsolata-Regular.ttf') format('truetype'); + } :root { - --outer-wrapper-max-width: 65rem; + --outer-wrapper-max-width: 65rem; + } * { - box-sizing: border-box; - margin: 0; - padding: 0; + box-sizing: border-box; + margin: 0; + padding: 0; + } html, body { - min-height: 100%; - width: 100%; - line-height: 1.75; + line-height: 1.75; + min-height: 100%; + width: 100%; + } body { - font-family: 'body'; - overflow-x: hidden; - position: relative; + font-family: 'body'; + overflow-x: hidden; + position: relative; + } b { - font-family: heading; + font-family: heading; + } h1, @@ -49,213 +57,259 @@ h3, h4, h5, h6 { - font-family: 'heading'; - font-weight: normal; - line-height: 1.75; + font-family: 'heading'; + font-weight: normal; + line-height: 1.75; + } h1 { - font-size: 3.5rem; - margin: 0; + font-size: 3.5rem; + margin: 0; + } h2 { - font-size: 2.25rem; - margin: 2rem 0 0; + font-size: 2.25rem; + margin: 2rem 0 0; + } h3 { - font-size: 1.5rem; + font-size: 1.5rem; + } h4 { - font-size: 1.25rem; + font-size: 1.25rem; + } h5 { - font-size: 1rem; + font-size: 1rem; + } h6 { - font-size: 1rem; + font-size: 1rem; + } img { - max-width: 100%; + max-width: 100%; + } a { - text-decoration: none; + text-decoration: none; + } a:hover { - text-decoration: underline; + text-decoration: underline; + } /* badges */ + a img { - margin-right: 0.5rem; + margin-right: 0.5rem; + } p { - margin: 1rem 0; + margin: 1rem 0; + } article ul { - list-style: none; + list-style: none; + } article ul li, article ol li { - padding: 0.5rem 0; + padding: 0.5rem 0; + } article ol, article ul { - padding-left: 3rem; + padding-left: 3rem; + } article ol p, article ul p { - margin: 0; + margin: 0; + } /* stylelint-disable-next-line */ .variation { - display: none; + display: none; + } .signature-attributes { - font-style: italic; - font-weight: lighter; + font-style: italic; + font-weight: lighter; + } .ancestors a { - text-decoration: none; + text-decoration: none; + } .important { - font-weight: bold; + font-weight: bold; + } .signature { - font-family: 'code'; + font-family: 'code'; + } .name { - font-family: 'code'; - font-weight: bold; + font-family: 'code'; + font-weight: bold; + } blockquote { - font-size: 0.875rem; - padding: 0.0625rem 1.25rem; - border-radius: 1rem; - margin: 0.5rem 0; + border-radius: 1rem; + font-size: 0.875rem; + margin: 0.5rem 0; + padding: 0.0625rem 1.25rem; + } .details { - border-radius: 1rem; - margin: 1rem 0; + border-radius: 1rem; + margin: 1rem 0; + } .details .details-item-container { - display: flex; - padding: 1rem 2rem; + display: flex; + padding: 1rem 2rem; + } dt { - font-family: heading; + font-family: heading; + } .details dt { - float: left; - min-width: 11rem; + float: left; + min-width: 11rem; + } .details ul { - margin: 0; - display: inline-flex; - list-style-type: none; + display: inline-flex; + list-style-type: none; + margin: 0; + } .details ul li { - display: inline-flex; - margin-right: 0.6125rem; - padding: 0; - word-break: break-word; + display: inline-flex; + margin-right: 0.6125rem; + padding: 0; + word-break: break-word; + } /* stylelint-disable-next-line */ .details ul li p { - margin: 0; + margin: 0; + } /* stylelint-disable */ .details pre.prettyprint { - margin: 0; + margin: 0; + } /* stylelint-enable */ .details .object-value { - padding-top: 0; + padding-top: 0; + } .description { - margin-bottom: 2rem; + margin-bottom: 2rem; + } .method-member-container table { - margin-top: 1rem; + margin-top: 1rem; + } .pre-div .hljs-ln { - margin: 0; + margin: 0; + } .code-caption { - font-size: 0.875rem; + font-size: 0.875rem; + } .prettyprint { - font-size: 0.875rem; - overflow: auto; + font-size: 0.875rem; + overflow: auto; + } +/* stylelint-disable-next-line selector-no-qualifying-type,rule-empty-line-before */ pre.prettyprint { - margin-top: 3rem; + margin-top: 3rem; + } .prettyprint.source { - width: inherit; + width: inherit; + } .prettyprint code { - display: block; - font-size: 1rem; - line-height: 1.75; - padding: 0 0 1rem; + display: block; + font-size: 1rem; + line-height: 1.75; + padding: 0 0 1rem; + } .prettyprint .compact { - padding: 0; + padding: 0; + } +/* stylelint-disable-next-line selector-no-qualifying-type,rule-empty-line-before */ h4.name { - margin-top: 0.5rem; + margin-top: 0.5rem; + } .params, .props, table { - border-collapse: separate; - border-spacing: 0 0.5rem; - border-radius: 0.5rem; - font-size: 0.875rem; - margin: 0; - width: 100%; + border-collapse: separate; + border-radius: 0.5rem; + border-spacing: 0 0.5rem; + font-size: 0.875rem; + margin: 0; + width: 100%; + } table td:first-child, @@ -263,8 +317,9 @@ table td:first-child, table thead th:first-child, .params thead th:first-child, .props thead th:first-child { - border-top-left-radius: 1rem; - border-bottom-left-radius: 1rem; + border-bottom-left-radius: 1rem; + border-top-left-radius: 1rem; + } table td:last-child, @@ -272,21 +327,24 @@ table td:last-child, table thead th:last-child, .params thead th:last-child, .props thead th:last-child { - border-top-right-radius: 1rem; - border-bottom-right-radius: 1rem; + border-bottom-right-radius: 1rem; + border-top-right-radius: 1rem; + } table th, .params th { - position: sticky; - top: 0; + position: sticky; + top: 0; + } .params .name, .props .name, .name code { - font-family: 'code'; - font-size: 1rem; + font-family: 'code'; + font-size: 1rem; + } .params td, @@ -295,681 +353,809 @@ table th, .props th, th, td { - display: table-cell; - margin: 0; - padding: 1rem 2rem; - text-align: left; - vertical-align: top; + display: table-cell; + margin: 0; + padding: 1rem 2rem; + text-align: left; + vertical-align: top; + } .params thead tr, .props thead tr { - font-weight: bold; + font-weight: bold; + } /* stylelint-disable */ .params .params thead tr, .props .props thead tr { - font-weight: bold; + font-weight: bold; + } .params td.description > p:first-child, .props td.description > p:first-child { - margin-top: 0; - padding-top: 0; + margin-top: 0; + padding-top: 0; + } .params td.description > p:last-child, .props td.description > p:last-child { - margin-bottom: 0; - padding-bottom: 0; + margin-bottom: 0; + padding-bottom: 0; + } dl.param-type { - margin-bottom: 1rem; - padding-bottom: 1rem; + margin-bottom: 1rem; + padding-bottom: 1rem; + } /* stylelint-enable */ .param-type dt, .param-type dd { - display: inline-block; + display: inline-block; + } .param-type dd { - font-family: 'code'; - font-size: 1rem; + font-family: 'code'; + font-size: 1rem; + } code { - border-radius: 0.3rem; - font-family: 'code'; - font-size: 1rem; - padding: 0.1rem 0.4rem; + border-radius: 0.3rem; + font-family: 'code'; + font-size: 1rem; + padding: 0.1rem 0.4rem; + } .mt-20 { - margin-top: 1.5rem; + margin-top: 1.5rem; + } .codepen-form { - bottom: 0; - position: absolute; - right: 0.6125rem; + bottom: 0; + position: absolute; + right: 0.6125rem; + } .body-wrapper { - display: flex; - flex-direction: column; - height: 100vh; - position: relative; + display: flex; + flex-direction: column; + height: 100vh; + position: relative; + } .sidebar-container { - position: fixed; - display: flex; - padding: 1rem; - top: 0; - bottom: 0; - left: 0; - width: 25rem; - z-index: 10; + bottom: 0; + display: flex; + left: 0; + padding: 1rem; + position: fixed; + top: 0; + width: 25rem; + z-index: 10; + } .sidebar { - border-radius: 1rem; - flex: 1; - padding: 1.5rem 0; - overflow: hidden; - display: flex; - flex-direction: column; + border-radius: 1rem; + display: flex; + flex: 1; + flex-direction: column; + overflow: hidden; + padding: 1.5rem 0; + } .sidebar-title { - margin: 0; - padding: 0 2rem; - text-decoration: none; - font-size: 1.5rem; - font-family: heading; + font-family: heading; + font-size: 1.5rem; + margin: 0; + padding: 0 2rem; + text-decoration: none; + } .sidebar-title:hover { - text-decoration: none; + text-decoration: none; + } .sidebar-items-container { - margin-top: 5rem; - overflow: auto; - flex: 1; - position: relative; + flex: 1; + margin-top: 5rem; + overflow: auto; + position: relative; + } .sidebar-section-title { - padding: 0.5rem 2rem; - font-family: heading; - font-size: 1.25rem; - border-radius: 1rem; + border-radius: 1rem; + font-family: heading; + font-size: 1.25rem; + padding: 0.5rem 2rem; + } .with-arrow { - align-items: center; - cursor: pointer; - display: flex; + align-items: center; + cursor: pointer; + display: flex; + } .with-arrow div { - flex: 1; + flex: 1; + } .with-arrow svg { - height: 1rem; - width: 1rem; - transition: transform 0.3s; + height: 1rem; + transition: transform 0.3s; + width: 1rem; + } .with-arrow[data-isopen='true'] svg { - transform: rotate(180deg); + transform: rotate(180deg); + } .sidebar-section-children-container { - border-radius: 0.5rem; - overflow: hidden; + border-radius: 0.5rem; + overflow: hidden; + } .sidebar-section-children a { - display: block; - width: 100%; - padding: 0.25rem 2rem; + display: block; + padding: 0.25rem 2rem; + width: 100%; + } .sidebar-section-children a { - text-decoration: none; + text-decoration: none; + } .with-arrow[data-isopen='false'] + .sidebar-section-children-container { - height: 0; - overflow: hidden; + height: 0; + overflow: hidden; + } .with-arrow[data-isopen='true'] + .sidebar-section-children-container { - height: auto; + height: auto; + } .toc-container { - position: fixed; - top: 0; - right: 4rem; - bottom: 0; - width: 16rem; - z-index: 10; + bottom: 0; + position: fixed; + right: 4rem; + top: 0; + width: 16rem; + z-index: 10; + } .toc-content { - padding-top: 10rem; - display: flex; - flex-direction: column; - height: 100%; + display: flex; + flex-direction: column; + height: 100%; + padding-top: 10rem; + } +/* stylelint-disable-next-line selector-max-id,rule-empty-line-before */ #eed4d2a0bfd64539bb9df78095dec881 { - margin: 2rem 0; - flex: 1; - overflow: auto; + flex: 1; + margin: 2rem 0; + overflow: auto; + } .toc-list { - padding-left: 1rem; - list-style: none; + list-style: none; + padding-left: 1rem; + } .toc-link { - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - width: 100%; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; + } .toc-link.is-active-link { - font-family: heading; + font-family: heading; + } .has-anchor { - position: relative; + position: relative; + } .link-anchor { - padding: 0 0.5rem; + padding: 0 0.5rem; + } .has-anchor .link-anchor { - position: absolute; - left: 0; - top: 0; - transform: translateX(-100%); - text-decoration: none; - visibility: hidden; + left: 0; + position: absolute; + text-decoration: none; + top: 0; + transform: translateX(-100%); + visibility: hidden; + } .has-anchor:hover .link-anchor { - visibility: visible; + visibility: visible; + } .navbar-container { - position: fixed; - z-index: 10; - top: 0; - left: 25rem; - right: 25rem; - height: 7rem; - padding-top: 1rem; - display: flex; - justify-content: center; + display: flex; + height: 7rem; + justify-content: center; + left: 25rem; + padding-top: 1rem; + position: fixed; + right: 25rem; + top: 0; + z-index: 10; + } .navbar { - display: flex; - padding: 1rem 4rem 1rem 2rem; - flex: 1; - max-width: var(--outer-wrapper-max-width); + display: flex; + flex: 1; + max-width: var(--outer-wrapper-max-width); + padding: 1rem 4rem 1rem 2rem; + } .navbar-left-items { - display: flex; - flex: 1; + display: flex; + flex: 1; + } .navbar-right-items { - display: flex; + display: flex; + } .icon-button svg { - height: 1rem; - width: 1rem; + height: 1rem; + width: 1rem; + } .icon-button { - background: transparent; - position: relative; - display: inline-flex; - border: 0; - padding: 0.5rem; - border-radius: 50%; - cursor: pointer; - transition: background 0.3s; + background: transparent; + border: 0; + border-radius: 50%; + cursor: pointer; + display: inline-flex; + padding: 0.5rem; + position: relative; + transition: background 0.3s; + } .navbar-right-item { - display: flex; - justify-content: center; - align-items: center; - margin: 0 0.25rem; + align-items: center; + display: flex; + justify-content: center; + margin: 0 0.25rem; + } .navbar-item { - border-radius: 0.5rem; - overflow: hidden; + border-radius: 0.5rem; + overflow: hidden; + } .navbar-item a { - display: inline-block; - padding: 1rem 2rem; - text-decoration: none; - transition: 0.3s; + display: inline-block; + padding: 1rem 2rem; + text-decoration: none; + transition: 0.3s; + } .font-size-tooltip { - display: flex; - align-items: center; - margin: 0 -0.5rem; + align-items: center; + display: flex; + margin: 0 -0.5rem; + } .font-size-tooltip .icon-button.disabled { - pointer-events: none; + pointer-events: none; + } .main-content { - position: relative; - flex: 1; - overflow: auto; - display: flex; - flex-direction: column; - align-items: center; - padding: 7rem 25rem 0; + align-items: center; + display: flex; + flex: 1; + flex-direction: column; + overflow: auto; + padding: 7rem 25rem 0; + position: relative; + } .main-wrapper { - width: 100%; - max-width: var(--outer-wrapper-max-width); - padding: 0 4rem 1rem; + max-width: var(--outer-wrapper-max-width); + padding: 0 4rem 1rem; + width: 100%; + } .p-h-n { - padding: 0.4rem 1rem; + padding: 0.4rem 1rem; + } .footer { - width: 100%; - margin: 5rem 0 0 0; - border-radius: 1rem; - font-size: 0.875rem; - display: flex; - justify-content: center; + border-radius: 1rem; + display: flex; + font-size: 0.875rem; + justify-content: center; + margin-top: 5rem; + width: 100%; + } .source-page + .footer { - margin-top: 3rem; + margin-top: 3rem; + } .footer .wrapper { - flex: 1; - padding: 1rem 2rem; - max-width: var(--outer-wrapper-max-width); + flex: 1; + max-width: var(--outer-wrapper-max-width); + padding: 1rem 2rem; + } pre { - position: relative; + position: relative; + } .hljs table td { - background: transparent; - padding: 0 0.6125rem; - line-height: 1.5; - border-radius: 0; + background: transparent; + border-radius: 0; + line-height: 1.5; + padding: 0 0.6125rem; + } .hljs .hljs-ln-numbers { - width: 2rem; - white-space: nowrap; - /* user-select: none; */ - padding-left: 1.5rem; + padding-left: 1.5rem; + user-select: none; + white-space: nowrap; + width: 2rem; + } .hljs-ln-line.hljs-ln-numbers::before { - content: attr(data-line-number); + content: attr(data-line-number); + } .pre-div { - position: relative; - border-radius: 1rem; - overflow: hidden; - margin: 2rem 0; + border-radius: 1rem; + margin: 2rem 0; + overflow: hidden; + position: relative; + } .pre-top-bar-container { - align-items: center; - display: flex; - justify-content: space-between; - left: 0; - padding: 0.3125rem 1.5rem; - position: absolute; - right: 0; - top: 0; + align-items: center; + display: flex; + justify-content: space-between; + left: 0; + padding: 0.3125rem 1.5rem; + position: absolute; + right: 0; + top: 0; + } .code-copy-icon-container { - align-items: center; - border-radius: 50%; - cursor: pointer; - display: flex; - height: 1.875rem; - justify-content: center; - transition: 0.3s; - width: 1.875rem; + align-items: center; + border-radius: 50%; + cursor: pointer; + display: flex; + height: 1.875rem; + justify-content: center; + transition: 0.3s; + width: 1.875rem; + } .code-copy-icon-container > div { - margin-top: 0.25rem; - position: relative; + margin-top: 0.25rem; + position: relative; + } .sm-icon { - height: 1rem; - width: 1rem; + height: 1rem; + width: 1rem; + } .code-lang-name { - font-family: 'body'; - font-size: 0.75rem; + font-family: 'body'; + font-size: 0.75rem; + } .tooltip { - border-radius: 0.3125rem; - opacity: 0; - padding: 0.1875rem 0.5rem; - position: absolute; - right: 2rem; - top: 0.3125rem; - transform: scale(0); - transition: 0.3s; + border-radius: 0.3125rem; + opacity: 0; + padding: 0.1875rem 0.5rem; + position: absolute; + right: 2rem; + top: 0.3125rem; + transform: scale(0); + transition: 0.3s; + } .show-tooltip { - opacity: 1; - transform: scale(1); + opacity: 1; + transform: scale(1); + } .allow-overflow { - overflow: auto; + overflow: auto; + } .bold { - font-family: heading; + font-family: heading; + } .search-container { - position: fixed; - top: 0; - bottom: 0; - right: 0; - left: 0; - justify-content: center; - z-index: 50; - align-items: flex-start; + align-items: flex-start; + bottom: 0; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 50; + } .search-container .wrapper { - width: 100%; - max-width: 60rem; - padding: 4rem 2rem 2rem; - border-radius: 1rem; - margin: 3rem 25rem; - position: relative; + border-radius: 1rem; + margin: 3rem 25rem; + max-width: 60rem; + padding: 4rem 2rem 2rem; + position: relative; + width: 100%; + } .search-close-button { - position: absolute; - top: 1rem; - right: 1rem; + position: absolute; + right: 1rem; + top: 1rem; + } .search-result-c-text { - display: flex; - justify-content: center; - user-select: none; + display: flex; + justify-content: center; + user-select: none; + } .search-result-c { - min-height: 20rem; - max-height: 40rem; - overflow: auto; - padding: 2rem 0; + max-height: 40rem; + min-height: 20rem; + overflow: auto; + padding: 2rem 0; + } .search-box-c { - width: 100%; - position: relative; - display: flex; - align-items: center; + align-items: center; + display: flex; + position: relative; + width: 100%; + } .search-box-c svg { - height: 1.5rem; - width: 1.5rem; - position: absolute; - left: 1.5rem; + height: 1.5rem; + left: 1.5rem; + position: absolute; + width: 1.5rem; + } .search-input { - border: none; - border-radius: 1rem; - width: 100%; - flex: 1; - padding: 1rem 2rem 1rem 4rem; - font-family: body; - font-size: 1.25rem; + border: 0; + border-radius: 1rem; + flex: 1; + font-family: body; + font-size: 1.25rem; + padding: 1rem 2rem 1rem 4rem; + width: 100%; + } .search-result-item { - display: block; - text-decoration: none; - padding: 1rem; - border-radius: 1rem; - margin: 1rem 0; + border-radius: 1rem; + display: block; + margin: 1rem 0; + padding: 1rem; + text-decoration: none; + } .search-result-item:hover { - text-decoration: none; + text-decoration: none; + } .search-result-item:active { - text-decoration: none; + text-decoration: none; + } .search-result-item-title { - font-family: heading; - font-size: 1.5rem; - margin: 0; + font-family: heading; + font-size: 1.5rem; + margin: 0; + } .search-result-item-p { - font-size: 0.875rem; - margin: 0; + font-size: 0.875rem; + margin: 0; + } .mobile-menu-icon-container { - display: none; - position: fixed; - bottom: 1.5rem; - right: 2rem; - z-index: 30; + bottom: 1.5rem; + display: none; + position: fixed; + right: 2rem; + z-index: 30; + } .mobile-menu-icon-container .icon-button svg { - height: 2rem; - width: 2rem; + height: 2rem; + width: 2rem; + } .mobile-sidebar-container { - position: fixed; - top: 0; - right: 0; - left: 0; - bottom: 0; - padding: 1rem; - z-index: 25; + bottom: 0; + display: none; + left: 0; + padding: 1rem; + position: fixed; + right: 0; + top: 0; + z-index: 25; - display: none; } .mobile-sidebar-container.show { - display: block; + display: block; + } .mobile-sidebar-wrapper { - border-radius: 1rem; - height: 100%; - width: 100%; - display: flex; - flex-direction: column; - padding-top: 2rem; + border-radius: 1rem; + display: flex; + flex-direction: column; + height: 100%; + padding-top: 2rem; + width: 100%; + } .mobile-nav-links { - display: flex; - flex-wrap: wrap; - padding-top: 2rem; + display: flex; + flex-wrap: wrap; + padding-top: 2rem; + } .mobile-sidebar-items-c { - flex: 1; - overflow: auto; + flex: 1; + overflow: auto; + } .mobile-navbar-actions { - display: flex; - padding: 1rem; + display: flex; + padding: 1rem; + } .rel { - position: relative; + position: relative; + } .icon-button.codepen-button svg { - height: 1.5rem; - width: 1.5rem; + height: 1.5rem; + width: 1.5rem; + } .table-div { - width: 100%; - overflow: auto; -} + overflow: auto; + width: 100%; -.tag-default { - overflow: auto; } -/* scroll bar */ -::-webkit-scrollbar { - width: 0.3125rem; - height: 0.3125rem; -} +.tag-default { + overflow: auto; -::-webkit-scrollbar-thumb, -::-webkit-scrollbar-track { - border-radius: 1rem; } @media screen and (max-width: 100em) { - .toc-container { + + .toc-container { display: none; - } - .main-content { - padding: 7rem 0 0 25rem; - } +} + +.main-content { + padding: 7rem 0 0 25rem; - .search-container .wrapper { - margin-right: 1rem; - } +} - .navbar-container { - /* For scrollbar */ +.search-container .wrapper { + margin-right: 1rem; + +} + +.navbar-container { + /* For scrollbar */ right: 1rem; - } + +} + } @media screen and (min-width: 65em) { - .mobile-sidebar-container.show { + + .mobile-sidebar-container.show { display: none; - } + +} + } @media screen and (max-width: 65em) { - h1 { + + h1 { font-size: 3rem; - } - h2 { - font-size: 2rem; - } +} + +h2 { + font-size: 2rem; + +} - h3 { - font-size: 1.875; - } +h3 { + font-size: 1.875; - h4, +} + +h4, h5, h6 { - font-size: 1rem; - } + font-size: 1rem; - .main-wrapper { - padding: 0 1rem 1rem; - } +} - .search-result-c { - max-height: 25rem; - } +.main-wrapper { + padding: 0 1rem 1rem; - .mobile-menu-icon-container { - display: block; - } +} - .sidebar-container { - display: none; - } +.search-result-c { + max-height: 25rem; - .search-container .wrapper { - margin-left: 1rem; - } +} - .main-content { - padding-left: 0; - padding-top: 1rem; - } +.mobile-menu-icon-container { + display: block; - .navbar-container { - display: none; - } +} + +.sidebar-container { + display: none; + +} + +.search-container .wrapper { + margin-left: 1rem; + +} + +.main-content { + padding-left: 0; + padding-top: 1rem; + +} - .source-page + .footer, +.navbar-container { + display: none; + +} + +.source-page + .footer, .footer { - margin-top: 2rem; - } + margin-top: 2rem; - .has-anchor:hover .link-anchor { - visibility: hidden; - } } + +.has-anchor:hover .link-anchor { + visibility: hidden; + +} + +} + +.child-tutorial-container { + display: flex; + flex-direction: row; + flex-wrap: wrap; + +} + +.child-tutorial { + border: 1px solid; + border-radius: 10px; + display: block; + margin: 5px; + padding: 10px 16px; + +} + +.child-tutorial:hover { + text-decoration: none; + +} + diff --git a/api/styles/clean-jsdoc-theme-dark.css b/api/styles/clean-jsdoc-theme-dark.css index 63de899c..78cc519b 100644 --- a/api/styles/clean-jsdoc-theme-dark.css +++ b/api/styles/clean-jsdoc-theme-dark.css @@ -10,7 +10,7 @@ body { a, a:active { - color: #00bbff; + color: #0bf; } hr { @@ -43,6 +43,8 @@ h6 { background: #252525; } + + .with-arrow { fill: #999; } @@ -51,6 +53,10 @@ h6 { background: #292929; } +.sidebar-section-children.active { + background: #444; +} + .sidebar-section-children a:hover { background: #2c2c2c; } @@ -86,8 +92,8 @@ h6 { } .navbar-item a:active { - color: #aaa; background-color: #222; + color: #aaa; } .navbar-item:hover { @@ -105,8 +111,8 @@ h6 { .toc-link { color: #777; - transition: color 0.3s; font-size: 0.875rem; + transition: color 0.3s; } .toc-link.is-active-link { @@ -193,7 +199,6 @@ samp { color: #eee; } -/* stylelint-enable */ table .name, .params .name, @@ -396,12 +401,12 @@ blockquote { background: #222; } -/* scroll bar */ -::-webkit-scrollbar-track { - background: #333; + +.child-tutorial { + border-color: #555; + color: #f3f3f3; } -::-webkit-scrollbar-thumb { - background: #555; - outline: 0.06125rem solid #555; +.child-tutorial:hover { + background: #222; } diff --git a/api/styles/clean-jsdoc-theme-light.css b/api/styles/clean-jsdoc-theme-light.css index a900941e..ee47d2a7 100644 --- a/api/styles/clean-jsdoc-theme-light.css +++ b/api/styles/clean-jsdoc-theme-light.css @@ -1,20 +1,25 @@ .light ::selection { - background: #ffce76; - color: #1d1919; + background: #ffce76; + color: #1d1919; + } +/* stylelint-disable-next-line selector-no-qualifying-type,rule-empty-line-before */ body.light { - background-color: #fff; - color: #111; + background-color: #fff; + color: #111; + } .light a, .light a:active { - color: #007bff; + color: #007bff; + } .light hr { - color: #f7f7f7; + color: #f7f7f7; + } .light h1, @@ -23,231 +28,293 @@ body.light { .light h4, .light h5, .light h6 { - color: #111; + color: #111; + } .light .sidebar { - background-color: #f7f7f7; - color: #222; + background-color: #f7f7f7; + color: #222; + } .light .sidebar-title { - color: #222; + color: #222; + } .light .sidebar-section-title { - color: #222; + color: #222; + } -.light .sidebar-section-title:hover { - background: #eee; +.light .sidebar-section-title:hover, +.light .sidebar-section-title.active { + background: #eee; } + .light .with-arrow { - fill: #111; + fill: #111; + } .light .sidebar-section-children-container { - background: #eee; + background: #eee; +} + +.light .sidebar-section-children.active { + background: #ccc; } + + + .light .sidebar-section-children a:hover { - background: #e0e0e0; + background: #e0e0e0; + } .light .sidebar-section-children a { - color: #111; + color: #111; + } .light .navbar-container { - background: #fff; + background: #fff; + } .light .icon-button svg, .light .navbar-item a { - color: #222; - fill: #222; + color: #222; + fill: #222; + } .light .tippy-box { - background: #eee; - color: #111; + background: #eee; + color: #111; + } .light .tippy-arrow { - color: #f1f1f1; + color: #f1f1f1; + } +/* stylelint-disable-next-line selector-max-compound-selectors,rule-empty-line-before */ .light .font-size-tooltip .icon-button svg { - fill: #111; + fill: #111; + } +/* stylelint-disable-next-line selector-max-compound-selectors, rule-empty-line-before */ .light .font-size-tooltip .icon-button.disabled svg { - fill: #999; + fill: #999; + } .light .icon-button:hover { - background: #ddd; + background: #ddd; + } .light .icon-button:active { - background: #ccc; + background: #ccc; + } .light .navbar-item a:active { - color: #333; - background-color: #eee; + background-color: #eee; + color: #333; + } .light .navbar-item:hover { - background: #f7f7f7; + background: #f7f7f7; + } .light .footer { - background: #f7f7f7; - color: #111; + background: #f7f7f7; + color: #111; + } .light .footer a { - color: #111; + color: #111; + } .light .toc-link { - color: #999; - transition: color 0.3s; - font-size: 0.875rem; + color: #999; + font-size: 0.875rem; + transition: color 0.3s; + } .light .toc-link.is-active-link { - color: #111; + color: #111; + } .light .has-anchor .link-anchor { - color: #ddd; + color: #ddd; + } .light .has-anchor .link-anchor:hover { - color: #ccc; + color: #ccc; + } .light .signature-attributes { - color: #aaa; + color: #aaa; + } .light .ancestors { - color: #999; + color: #999; + } .light .ancestors a { - color: #999 !important; + color: #999 !important; + } .light .important { - color: #ee1313; + color: #ee1313; + } .light .type-signature { - color: #00918e; + color: #00918e; + } .light .name, .light .name a { - color: #293a80; + color: #293a80; + } .light .details { - background: #f9f9f9; - color: #101010; + background: #f9f9f9; + color: #101010; + } .light .member-item-container strong, .light .method-member-container strong { - color: #000; + color: #000; + } .light .prettyprint { - background: #f7f7f7; + background: #f7f7f7; + } .light .pre-div { - background: #f7f7f7; + background: #f7f7f7; + } .light .hljs .hljs-ln-numbers { - color: #aaa; + color: #aaa; + } .light .hljs .selected { - background: #ccc; + background: #ccc; + } +/* stylelint-disable-next-line selector-no-qualifying-type,rule-empty-line-before */ .light table.hljs-ln td { - background: none; + background: none; + } +/* stylelint-disable-next-line selector-max-compound-selectors,rule-empty-line-before */ .light .hljs .selected .hljs-ln-numbers { - color: #444; + color: #444; + } .light .pre-top-bar-container { - background-color: #eee; + background-color: #eee; + } .light .prettyprint code { - background-color: #f7f7f7; + background-color: #f7f7f7; + } .light table .name, .light .params .name, .light .props .name, .light .name code { - color: #4d4e53; + color: #4d4e53; + } .light table td, .light .params td { - background: #f7f7f7; + background: #f7f7f7; + } +/* stylelint-disable-next-line selector-max-compound-selectors,rule-empty-line-before */ .light table thead th, .light .params thead th, .light .props thead th { - background-color: #eee; - color: #111; + background-color: #eee; + color: #111; + } /* stylelint-disable */ .light table .params thead tr, .light .params .params thead tr, .light .props .props thead tr { - background-color: #eee; - color: #111; + background-color: #eee; + color: #111; + } .light .disabled { - color: #454545; + color: #454545; + } .light .code-lang-name { - color: #ff0000; + color: #ff0000; + } .light .tooltip { - background: #ffce76; - color: #000; + background: #ffce76; + color: #000; + } /* Code */ .light .hljs-comment, .light .hljs-quote { - color: #a0a1a7; + color: #a0a1a7; + } .light .hljs-doctag, .light .hljs-keyword, .light .hljs-formula { - color: #a626a4; + color: #a626a4; + } .light .hljs-section, @@ -255,11 +322,13 @@ body.light { .light .hljs-selector-tag, .light .hljs-deletion, .light .hljs-subst { - color: #e45649; + color: #e45649; + } .light .hljs-literal { - color: #0184bb; + color: #0184bb; + } .light .hljs-string, @@ -267,7 +336,8 @@ body.light { .light .hljs-addition, .light .hljs-attribute, .light .hljs-meta .hljs-string { - color: #50a14f; + color: #50a14f; + } .light .hljs-attr, @@ -278,7 +348,8 @@ body.light { .light .hljs-selector-attr, .light .hljs-selector-pseudo, .light .hljs-number { - color: #986801; + color: #986801; + } .light .hljs-symbol, @@ -287,102 +358,125 @@ body.light { .light .hljs-meta, .light .hljs-selector-id, .light .hljs-title { - color: #4078f2; + color: #4078f2; + } .light .hljs-built_in, .light .hljs-title.class_, .light .hljs-class .hljs-title { - color: #c18401; + color: #c18401; + } .light .hljs-emphasis { - font-style: italic; + font-style: italic; + } .light .hljs-strong { - font-weight: bold; + font-weight: bold; + } .light .hljs-link { - text-decoration: underline; + text-decoration: underline; + } /* Code Ends */ .light blockquote { - background: #eee; - color: #111; + background: #eee; + color: #111; + } .light code { - background: #ddd; - color: #000; + background: #ddd; + color: #000; + } .light .search-container { - background: rgba(0, 0, 0, 0.1); + background: rgba(0, 0, 0, 0.1); + } .light .search-close-button svg { - fill: #f00; + fill: #f00; + } .light .search-container .wrapper { - background: #eee; + background: #eee; + } .light .search-result-c { - color: #aaa; + color: #aaa; + } .light .search-box-c svg { - fill: #333; + fill: #333; + } .light .search-input { - background: #f7f7f7; - color: #111; + background: #f7f7f7; + color: #111; + } .light .search-result-item { - background: #f7f7f7; + background: #f7f7f7; + } .light .search-result-item:hover { - background: #e9e9e9; + background: #e9e9e9; + } .light .search-result-item:active { - background: #f7f7f7; + background: #f7f7f7; + } .light .search-result-item-title { - color: #111; + color: #111; + } .light .search-result-item-p { - color: #aaa; + color: #aaa; + } .light .mobile-menu-icon-container .icon-button { - background: #e5e5e5; + background: #e5e5e5; + } .light .mobile-sidebar-container { - background: #fff; + background: #fff; + } .light .mobile-sidebar-wrapper { - background: #f7f7f7; + background: #f7f7f7; + } -/* scroll bar */ -.light ::-webkit-scrollbar-track { - background: #ddd; +.light .child-tutorial { + border-color: #aaa; + color: #222; + } -.light ::-webkit-scrollbar-thumb { - background: #aaa; - outline: 0.06125rem solid #aaa; +.light .child-tutorial:hover { + background: #ccc; + } + diff --git a/api/styles/clean-jsdoc-theme-scrollbar.css b/api/styles/clean-jsdoc-theme-scrollbar.css new file mode 100644 index 00000000..4bcc3f1b --- /dev/null +++ b/api/styles/clean-jsdoc-theme-scrollbar.css @@ -0,0 +1,30 @@ +::-webkit-scrollbar { + height: 0.3125rem; + width: 0.3125rem; + +} + +::-webkit-scrollbar-thumb, +::-webkit-scrollbar-track { + border-radius: 1rem; +} + +::-webkit-scrollbar-track { + background: #333; +} + +::-webkit-scrollbar-thumb { + background: #555; + outline: 0.06125rem solid #555; +} + + +.light ::-webkit-scrollbar-track { + background: #ddd; + +} + +.light ::-webkit-scrollbar-thumb { + background: #aaa; + outline: 0.06125rem solid #aaa; +} \ No newline at end of file diff --git a/api/styles/clean-jsdoc-theme-without-scrollbar.min.css b/api/styles/clean-jsdoc-theme-without-scrollbar.min.css new file mode 100644 index 00000000..76b8bd2f --- /dev/null +++ b/api/styles/clean-jsdoc-theme-without-scrollbar.min.css @@ -0,0 +1 @@ +@font-face{font-display:swap;font-family:"heading";src:url(../fonts/WorkSans-Bold.ttf)format("truetype")}@font-face{font-display:swap;font-family:"body";src:url(../fonts/OpenSans-Regular.ttf)format("truetype")}@font-face{font-display:swap;font-family:"code";src:url(../fonts/Inconsolata-Regular.ttf)format("truetype")}:root{--outer-wrapper-max-width:65rem}*{box-sizing:border-box;margin:0;padding:0}html,body{line-height:1.75;min-height:100%;width:100%}body{font-family:"body";overflow-x:hidden;position:relative}b{font-family:heading}h1,h2,h3,h4,h5,h6{font-family:"heading";font-weight:400;line-height:1.75}h1{font-size:3.5rem;margin:0}h2{font-size:2.25rem;margin:2rem 0 0}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1rem}h6{font-size:1rem}img{max-width:100%}a{text-decoration:none}a:hover{text-decoration:underline}a img{margin-right:.5rem}p{margin:1rem 0}article ul{list-style:none}article ul li,article ol li{padding:.5rem 0}article ol,article ul{padding-left:3rem}article ol p,article ul p{margin:0}.variation{display:none}.signature-attributes{font-style:italic;font-weight:lighter}.ancestors a{text-decoration:none}.important{font-weight:700}.signature{font-family:"code"}.name{font-family:"code";font-weight:700}blockquote{border-radius:1rem;font-size:.875rem;margin:.5rem 0;padding:.0625rem 1.25rem}.details{border-radius:1rem;margin:1rem 0}.details .details-item-container{display:flex;padding:1rem 2rem}dt{font-family:heading}.details dt{float:left;min-width:11rem}.details ul{display:inline-flex;list-style-type:none;margin:0}.details ul li{display:inline-flex;margin-right:.6125rem;padding:0;word-break:break-word}.details ul li p{margin:0}.details pre.prettyprint{margin:0}.details .object-value{padding-top:0}.description{margin-bottom:2rem}.method-member-container table{margin-top:1rem}.pre-div .hljs-ln{margin:0}.code-caption{font-size:.875rem}.prettyprint{font-size:.875rem;overflow:auto}pre.prettyprint{margin-top:3rem}.prettyprint.source{width:inherit}.prettyprint code{display:block;font-size:1rem;line-height:1.75;padding:0 0 1rem}.prettyprint .compact{padding:0}h4.name{margin-top:.5rem}.params,.props,table{border-collapse:separate;border-radius:.5rem;border-spacing:0 .5rem;font-size:.875rem;margin:0;width:100%}table td:first-child,.params td:first-child,table thead th:first-child,.params thead th:first-child,.props thead th:first-child{border-bottom-left-radius:1rem;border-top-left-radius:1rem}table td:last-child,.params td:last-child,table thead th:last-child,.params thead th:last-child,.props thead th:last-child{border-bottom-right-radius:1rem;border-top-right-radius:1rem}table th,.params th{position:sticky;top:0}.params .name,.props .name,.name code{font-family:"code";font-size:1rem}.params td,.params th,.props td,.props th,th,td{display:table-cell;margin:0;padding:1rem 2rem;text-align:left;vertical-align:top}.params thead tr,.props thead tr{font-weight:700}.params .params thead tr,.props .props thead tr{font-weight:700}.params td.description>p:first-child,.props td.description>p:first-child{margin-top:0;padding-top:0}.params td.description>p:last-child,.props td.description>p:last-child{margin-bottom:0;padding-bottom:0}dl.param-type{margin-bottom:1rem;padding-bottom:1rem}.param-type dt,.param-type dd{display:inline-block}.param-type dd{font-family:"code";font-size:1rem}code{border-radius:.3rem;font-family:"code";font-size:1rem;padding:.1rem .4rem}.mt-20{margin-top:1.5rem}.codepen-form{bottom:0;position:absolute;right:.6125rem}.body-wrapper{display:flex;flex-direction:column;height:100vh;position:relative}.sidebar-container{bottom:0;display:flex;left:0;padding:1rem;position:fixed;top:0;width:25rem;z-index:10}.sidebar{border-radius:1rem;display:flex;flex:1;flex-direction:column;overflow:hidden;padding:1.5rem 0}.sidebar-title{font-family:heading;font-size:1.5rem;margin:0;padding:0 2rem;text-decoration:none}.sidebar-title:hover{text-decoration:none}.sidebar-items-container{flex:1;margin-top:5rem;overflow:auto;position:relative}.sidebar-section-title{border-radius:1rem;font-family:heading;font-size:1.25rem;padding:.5rem 2rem}.with-arrow{align-items:center;cursor:pointer;display:flex}.with-arrow div{flex:1}.with-arrow svg{height:1rem;transition:transform .3s;width:1rem}.with-arrow[data-isopen=true] svg{transform:rotate(180deg)}.sidebar-section-children-container{border-radius:.5rem;overflow:hidden}.sidebar-section-children a{display:block;padding:.25rem 2rem;width:100%}.sidebar-section-children a{text-decoration:none}.with-arrow[data-isopen=false]+.sidebar-section-children-container{height:0;overflow:hidden}.with-arrow[data-isopen=true]+.sidebar-section-children-container{height:auto}.toc-container{bottom:0;position:fixed;right:4rem;top:0;width:16rem;z-index:10}.toc-content{display:flex;flex-direction:column;height:100%;padding-top:10rem}#eed4d2a0bfd64539bb9df78095dec881{flex:1;margin:2rem 0;overflow:auto}.toc-list{list-style:none;padding-left:1rem}.toc-link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.toc-link.is-active-link{font-family:heading}.has-anchor{position:relative}.link-anchor{padding:0 .5rem}.has-anchor .link-anchor{left:0;position:absolute;text-decoration:none;top:0;transform:translateX(-100%);visibility:hidden}.has-anchor:hover .link-anchor{visibility:visible}.navbar-container{display:flex;height:7rem;justify-content:center;left:25rem;padding-top:1rem;position:fixed;right:25rem;top:0;z-index:10}.navbar{display:flex;flex:1;max-width:var(--outer-wrapper-max-width);padding:1rem 4rem 1rem 2rem}.navbar-left-items{display:flex;flex:1}.navbar-right-items{display:flex}.icon-button svg{height:1rem;width:1rem}.icon-button{background:0 0;border:0;border-radius:50%;cursor:pointer;display:inline-flex;padding:.5rem;position:relative;transition:background .3s}.navbar-right-item{align-items:center;display:flex;justify-content:center;margin:0 .25rem}.navbar-item{border-radius:.5rem;overflow:hidden}.navbar-item a{display:inline-block;padding:1rem 2rem;text-decoration:none;transition:.3s}.font-size-tooltip{align-items:center;display:flex;margin:0-.5rem}.font-size-tooltip .icon-button.disabled{pointer-events:none}.main-content{align-items:center;display:flex;flex:1;flex-direction:column;overflow:auto;padding:7rem 25rem 0;position:relative}.main-wrapper{max-width:var(--outer-wrapper-max-width);padding:0 4rem 1rem;width:100%}.p-h-n{padding:.4rem 1rem}.footer{border-radius:1rem;display:flex;font-size:.875rem;justify-content:center;margin-top:5rem;width:100%}.source-page+.footer{margin-top:3rem}.footer .wrapper{flex:1;max-width:var(--outer-wrapper-max-width);padding:1rem 2rem}pre{position:relative}.hljs table td{background:0 0;border-radius:0;line-height:1.5;padding:0 .6125rem}.hljs .hljs-ln-numbers{padding-left:1.5rem;user-select:none;white-space:nowrap;width:2rem}.hljs-ln-line.hljs-ln-numbers::before{content:attr(data-line-number)}.pre-div{border-radius:1rem;margin:2rem 0;overflow:hidden;position:relative}.pre-top-bar-container{align-items:center;display:flex;justify-content:space-between;left:0;padding:.3125rem 1.5rem;position:absolute;right:0;top:0}.code-copy-icon-container{align-items:center;border-radius:50%;cursor:pointer;display:flex;height:1.875rem;justify-content:center;transition:.3s;width:1.875rem}.code-copy-icon-container>div{margin-top:.25rem;position:relative}.sm-icon{height:1rem;width:1rem}.code-lang-name{font-family:"body";font-size:.75rem}.tooltip{border-radius:.3125rem;opacity:0;padding:.1875rem .5rem;position:absolute;right:2rem;top:.3125rem;transform:scale(0);transition:.3s}.show-tooltip{opacity:1;transform:scale(1)}.allow-overflow{overflow:auto}.bold{font-family:heading}.search-container{align-items:flex-start;bottom:0;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:50}.search-container .wrapper{border-radius:1rem;margin:3rem 25rem;max-width:60rem;padding:4rem 2rem 2rem;position:relative;width:100%}.search-close-button{position:absolute;right:1rem;top:1rem}.search-result-c-text{display:flex;justify-content:center;user-select:none}.search-result-c{max-height:40rem;min-height:20rem;overflow:auto;padding:2rem 0}.search-box-c{align-items:center;display:flex;position:relative;width:100%}.search-box-c svg{height:1.5rem;left:1.5rem;position:absolute;width:1.5rem}.search-input{border:0;border-radius:1rem;flex:1;font-family:body;font-size:1.25rem;padding:1rem 2rem 1rem 4rem;width:100%}.search-result-item{border-radius:1rem;display:block;margin:1rem 0;padding:1rem;text-decoration:none}.search-result-item:hover{text-decoration:none}.search-result-item:active{text-decoration:none}.search-result-item-title{font-family:heading;font-size:1.5rem;margin:0}.search-result-item-p{font-size:.875rem;margin:0}.mobile-menu-icon-container{bottom:1.5rem;display:none;position:fixed;right:2rem;z-index:30}.mobile-menu-icon-container .icon-button svg{height:2rem;width:2rem}.mobile-sidebar-container{bottom:0;display:none;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:25}.mobile-sidebar-container.show{display:block}.mobile-sidebar-wrapper{border-radius:1rem;display:flex;flex-direction:column;height:100%;padding-top:2rem;width:100%}.mobile-nav-links{display:flex;flex-wrap:wrap;padding-top:2rem}.mobile-sidebar-items-c{flex:1;overflow:auto}.mobile-navbar-actions{display:flex;padding:1rem}.rel{position:relative}.icon-button.codepen-button svg{height:1.5rem;width:1.5rem}.table-div{overflow:auto;width:100%}.tag-default{overflow:auto}@media screen and (max-width:100em){.toc-container{display:none}.main-content{padding:7rem 0 0 25rem}.search-container .wrapper{margin-right:1rem}.navbar-container{right:1rem}}@media screen and (min-width:65em){.mobile-sidebar-container.show{display:none}}@media screen and (max-width:65em){h1{font-size:3rem}h2{font-size:2rem}h3{font-size:1.875}h4,h5,h6{font-size:1rem}.main-wrapper{padding:0 1rem 1rem}.search-result-c{max-height:25rem}.mobile-menu-icon-container{display:block}.sidebar-container{display:none}.search-container .wrapper{margin-left:1rem}.main-content{padding-left:0;padding-top:1rem}.navbar-container{display:none}.source-page+.footer,.footer{margin-top:2rem}.has-anchor:hover .link-anchor{visibility:hidden}}.child-tutorial-container{display:flex;flex-direction:row;flex-wrap:wrap}.child-tutorial{border:1px solid;border-radius:10px;display:block;margin:5px;padding:10px 16px}.child-tutorial:hover{text-decoration:none}::selection{background:#ffce76;color:#222}body{background-color:#1a1a1a;color:#fff}a,a:active{color:#0bf}hr{color:#222}h1,h2,h3,h4,h5,h6{color:#fff}.sidebar{background-color:#222;color:#999}.sidebar-title{color:#999}.sidebar-section-title{color:#999}.sidebar-section-title:hover{background:#252525}.with-arrow{fill:#999}.sidebar-section-children-container{background:#292929}.sidebar-section-children.active{background:#444}.sidebar-section-children a:hover{background:#2c2c2c}.sidebar-section-children a{color:#fff}.navbar-container{background:#1a1a1a}.icon-button svg,.navbar-item a{color:#999;fill:#999}.font-size-tooltip .icon-button svg{fill:#fff}.font-size-tooltip .icon-button.disabled{background:#999}.icon-button:hover{background:#333}.icon-button:active{background:#444}.navbar-item a:active{background-color:#222;color:#aaa}.navbar-item:hover{background:#202020}.footer{background:#222;color:#999}.footer a{color:#999}.toc-link{color:#777;font-size:.875rem;transition:color .3s}.toc-link.is-active-link{color:#fff}.has-anchor .link-anchor{color:#555}.has-anchor .link-anchor:hover{color:#888}tt,code,kbd,samp{background:#333}.signature-attributes{color:#aaa}.ancestors{color:#999}.ancestors a{color:#999!important}.important{color:#c51313}.type-signature{color:#00918e}.name,.name a{color:#f7f7f7}.details{background:#222;color:#fff}.prettyprint{background:#222}.member-item-container strong,.method-member-container strong{color:#fff}.pre-top-bar-container{background:#292929}.prettyprint.source,.prettyprint code{background-color:#222;color:#c9d1d9}.pre-div{background-color:#222}.hljs .hljs-ln-numbers{color:#777}.hljs .selected{background:#444}.hljs .selected .hljs-ln-numbers{color:#eee}table .name,.params .name,.props .name,.name code{color:#fff}table td,.params td{background-color:#292929}table thead th,.params thead th,.props thead th{background-color:#222;color:#fff}table .params thead tr,.params .params thead tr,.props .props thead tr{background-color:#222;color:#fff}.disabled{color:#aaa}.code-lang-name{color:#ff8a00}.tooltip{background:#ffce76;color:#222}.hljs-comment{color:#8b949e}.hljs-doctag,.hljs-keyword,.hljs-template-tag,.hljs-variable.language_{color:#ff7b72}.hljs-template-variable,.hljs-type{color:#30ac7c}.hljs-meta,.hljs-string,.hljs-regexp{color:#a5d6ff}.hljs-title.class_,.hljs-title{color:#ffa657}.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}blockquote{background:#222;color:#fff}.search-container{background:rgba(255,255,255,.1)}.icon-button.search-close-button svg{fill:#a00}.search-container .wrapper{background:#222}.search-result-c{color:#666}.search-box-c{fill:#333}.search-input{background:#333;color:#fff}.search-box-c svg{fill:#fff}.search-result-item{background:#333}.search-result-item:hover{background:#444}.search-result-item:active{background:#555}.search-result-item-title{color:#fff}.search-result-item-p{color:#aaa}.mobile-menu-icon-container .icon-button{background:#333}.mobile-sidebar-container{background:#1a1a1a}.mobile-sidebar-wrapper{background:#222}.child-tutorial{border-color:#555;color:#f3f3f3}.child-tutorial:hover{background:#222}.light ::selection{background:#ffce76;color:#1d1919}body.light{background-color:#fff;color:#111}.light a,.light a:active{color:#007bff}.light hr{color:#f7f7f7}.light h1,.light h2,.light h3,.light h4,.light h5,.light h6{color:#111}.light .sidebar{background-color:#f7f7f7;color:#222}.light .sidebar-title{color:#222}.light .sidebar-section-title{color:#222}.light .sidebar-section-title:hover,.light .sidebar-section-title.active{background:#eee}.light .with-arrow{fill:#111}.light .sidebar-section-children-container{background:#eee}.light .sidebar-section-children.active{background:#ccc}.light .sidebar-section-children a:hover{background:#e0e0e0}.light .sidebar-section-children a{color:#111}.light .navbar-container{background:#fff}.light .icon-button svg,.light .navbar-item a{color:#222;fill:#222}.light .tippy-box{background:#eee;color:#111}.light .tippy-arrow{color:#f1f1f1}.light .font-size-tooltip .icon-button svg{fill:#111}.light .font-size-tooltip .icon-button.disabled svg{fill:#999}.light .icon-button:hover{background:#ddd}.light .icon-button:active{background:#ccc}.light .navbar-item a:active{background-color:#eee;color:#333}.light .navbar-item:hover{background:#f7f7f7}.light .footer{background:#f7f7f7;color:#111}.light .footer a{color:#111}.light .toc-link{color:#999;font-size:.875rem;transition:color .3s}.light .toc-link.is-active-link{color:#111}.light .has-anchor .link-anchor{color:#ddd}.light .has-anchor .link-anchor:hover{color:#ccc}.light .signature-attributes{color:#aaa}.light .ancestors{color:#999}.light .ancestors a{color:#999!important}.light .important{color:#ee1313}.light .type-signature{color:#00918e}.light .name,.light .name a{color:#293a80}.light .details{background:#f9f9f9;color:#101010}.light .member-item-container strong,.light .method-member-container strong{color:#000}.light .prettyprint{background:#f7f7f7}.light .pre-div{background:#f7f7f7}.light .hljs .hljs-ln-numbers{color:#aaa}.light .hljs .selected{background:#ccc}.light table.hljs-ln td{background:0 0}.light .hljs .selected .hljs-ln-numbers{color:#444}.light .pre-top-bar-container{background-color:#eee}.light .prettyprint code{background-color:#f7f7f7}.light table .name,.light .params .name,.light .props .name,.light .name code{color:#4d4e53}.light table td,.light .params td{background:#f7f7f7}.light table thead th,.light .params thead th,.light .props thead th{background-color:#eee;color:#111}.light table .params thead tr,.light .params .params thead tr,.light .props .props thead tr{background-color:#eee;color:#111}.light .disabled{color:#454545}.light .code-lang-name{color:red}.light .tooltip{background:#ffce76;color:#000}.light .hljs-comment,.light .hljs-quote{color:#a0a1a7}.light .hljs-doctag,.light .hljs-keyword,.light .hljs-formula{color:#a626a4}.light .hljs-section,.light .hljs-name,.light .hljs-selector-tag,.light .hljs-deletion,.light .hljs-subst{color:#e45649}.light .hljs-literal{color:#0184bb}.light .hljs-string,.light .hljs-regexp,.light .hljs-addition,.light .hljs-attribute,.light .hljs-meta .hljs-string{color:#50a14f}.light .hljs-attr,.light .hljs-variable,.light .hljs-template-variable,.light .hljs-type,.light .hljs-selector-class,.light .hljs-selector-attr,.light .hljs-selector-pseudo,.light .hljs-number{color:#986801}.light .hljs-symbol,.light .hljs-bullet,.light .hljs-link,.light .hljs-meta,.light .hljs-selector-id,.light .hljs-title{color:#4078f2}.light .hljs-built_in,.light .hljs-title.class_,.light .hljs-class .hljs-title{color:#c18401}.light .hljs-emphasis{font-style:italic}.light .hljs-strong{font-weight:700}.light .hljs-link{text-decoration:underline}.light blockquote{background:#eee;color:#111}.light code{background:#ddd;color:#000}.light .search-container{background:rgba(0,0,0,.1)}.light .search-close-button svg{fill:red}.light .search-container .wrapper{background:#eee}.light .search-result-c{color:#aaa}.light .search-box-c svg{fill:#333}.light .search-input{background:#f7f7f7;color:#111}.light .search-result-item{background:#f7f7f7}.light .search-result-item:hover{background:#e9e9e9}.light .search-result-item:active{background:#f7f7f7}.light .search-result-item-title{color:#111}.light .search-result-item-p{color:#aaa}.light .mobile-menu-icon-container .icon-button{background:#e5e5e5}.light .mobile-sidebar-container{background:#fff}.light .mobile-sidebar-wrapper{background:#f7f7f7}.light .child-tutorial{border-color:#aaa;color:#222}.light .child-tutorial:hover{background:#ccc} \ No newline at end of file diff --git a/api/styles/clean-jsdoc-theme.min.css b/api/styles/clean-jsdoc-theme.min.css index 188d2747..5ce12f1a 100644 --- a/api/styles/clean-jsdoc-theme.min.css +++ b/api/styles/clean-jsdoc-theme.min.css @@ -1 +1 @@ -@font-face{font-family:"heading";src:url(../fonts/WorkSans-Bold.ttf)format("truetype");font-display:swap}@font-face{font-family:"body";src:url(../fonts/OpenSans-Regular.ttf)format("truetype");font-display:swap}@font-face{font-family:"code";src:url(../fonts/Inconsolata-Regular.ttf)format("truetype");font-display:swap}:root{--outer-wrapper-max-width:65rem}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%;width:100%;line-height:1.75}body{font-family:"body";overflow-x:hidden;position:relative}b{font-family:heading}h1,h2,h3,h4,h5,h6{font-family:"heading";font-weight:400;line-height:1.75}h1{font-size:3.5rem;margin:0}h2{font-size:2.25rem;margin:2rem 0 0}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1rem}h6{font-size:1rem}img{max-width:100%}a{text-decoration:none}a:hover{text-decoration:underline}a img{margin-right:.5rem}p{margin:1rem 0}article ul{list-style:none}article ul li,article ol li{padding:.5rem 0}article ol,article ul{padding-left:3rem}article ol p,article ul p{margin:0}.variation{display:none}.signature-attributes{font-style:italic;font-weight:lighter}.ancestors a{text-decoration:none}.important{font-weight:700}.signature{font-family:"code"}.name{font-family:"code";font-weight:700}blockquote{font-size:.875rem;padding:.0625rem 1.25rem;border-radius:1rem;margin:.5rem 0}.details{border-radius:1rem;margin:1rem 0}.details .details-item-container{display:flex;padding:1rem 2rem}dt{font-family:heading}.details dt{float:left;min-width:11rem}.details ul{margin:0;display:inline-flex;list-style-type:none}.details ul li{display:inline-flex;margin-right:.6125rem;padding:0;word-break:break-word}.details ul li p{margin:0}.details pre.prettyprint{margin:0}.details .object-value{padding-top:0}.description{margin-bottom:2rem}.method-member-container table{margin-top:1rem}.pre-div .hljs-ln{margin:0}.code-caption{font-size:.875rem}.prettyprint{font-size:.875rem;overflow:auto}pre.prettyprint{margin-top:3rem}.prettyprint.source{width:inherit}.prettyprint code{display:block;font-size:1rem;line-height:1.75;padding:0 0 1rem}.prettyprint .compact{padding:0}h4.name{margin-top:.5rem}.params,.props,table{border-collapse:separate;border-spacing:0 .5rem;border-radius:.5rem;font-size:.875rem;margin:0;width:100%}table td:first-child,.params td:first-child,table thead th:first-child,.params thead th:first-child,.props thead th:first-child{border-top-left-radius:1rem;border-bottom-left-radius:1rem}table td:last-child,.params td:last-child,table thead th:last-child,.params thead th:last-child,.props thead th:last-child{border-top-right-radius:1rem;border-bottom-right-radius:1rem}table th,.params th{position:sticky;top:0}.params .name,.props .name,.name code{font-family:"code";font-size:1rem}.params td,.params th,.props td,.props th,th,td{display:table-cell;margin:0;padding:1rem 2rem;text-align:left;vertical-align:top}.params thead tr,.props thead tr{font-weight:700}.params .params thead tr,.props .props thead tr{font-weight:700}.params td.description>p:first-child,.props td.description>p:first-child{margin-top:0;padding-top:0}.params td.description>p:last-child,.props td.description>p:last-child{margin-bottom:0;padding-bottom:0}dl.param-type{margin-bottom:1rem;padding-bottom:1rem}.param-type dt,.param-type dd{display:inline-block}.param-type dd{font-family:"code";font-size:1rem}code{border-radius:.3rem;font-family:"code";font-size:1rem;padding:.1rem .4rem}.mt-20{margin-top:1.5rem}.codepen-form{bottom:0;position:absolute;right:.6125rem}.body-wrapper{display:flex;flex-direction:column;height:100vh;position:relative}.sidebar-container{position:fixed;display:flex;padding:1rem;top:0;bottom:0;left:0;width:25rem;z-index:10}.sidebar{border-radius:1rem;flex:1;padding:1.5rem 0;overflow:hidden;display:flex;flex-direction:column}.sidebar-title{margin:0;padding:0 2rem;text-decoration:none;font-size:1.5rem;font-family:heading}.sidebar-title:hover{text-decoration:none}.sidebar-items-container{margin-top:5rem;overflow:auto;flex:1;position:relative}.sidebar-section-title{padding:.5rem 2rem;font-family:heading;font-size:1.25rem;border-radius:1rem}.with-arrow{align-items:center;cursor:pointer;display:flex}.with-arrow div{flex:1}.with-arrow svg{height:1rem;width:1rem;transition:transform .3s}.with-arrow[data-isopen=true] svg{transform:rotate(180deg)}.sidebar-section-children-container{border-radius:.5rem;overflow:hidden}.sidebar-section-children a{display:block;width:100%;padding:.25rem 2rem}.sidebar-section-children a{text-decoration:none}.with-arrow[data-isopen=false]+.sidebar-section-children-container{height:0;overflow:hidden}.with-arrow[data-isopen=true]+.sidebar-section-children-container{height:auto}.toc-container{position:fixed;top:0;right:4rem;bottom:0;width:16rem;z-index:10}.toc-content{padding-top:10rem;display:flex;flex-direction:column;height:100%}#eed4d2a0bfd64539bb9df78095dec881{margin:2rem 0;flex:1;overflow:auto}.toc-list{padding-left:1rem;list-style:none}.toc-link{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.toc-link.is-active-link{font-family:heading}.has-anchor{position:relative}.link-anchor{padding:0 .5rem}.has-anchor .link-anchor{position:absolute;left:0;top:0;transform:translateX(-100%);text-decoration:none;visibility:hidden}.has-anchor:hover .link-anchor{visibility:visible}.navbar-container{position:fixed;z-index:10;top:0;left:25rem;right:25rem;height:7rem;padding-top:1rem;display:flex;justify-content:center}.navbar{display:flex;padding:1rem 4rem 1rem 2rem;flex:1;max-width:var(--outer-wrapper-max-width)}.navbar-left-items{display:flex;flex:1}.navbar-right-items{display:flex}.icon-button svg{height:1rem;width:1rem}.icon-button{background:0 0;position:relative;display:inline-flex;border:0;padding:.5rem;border-radius:50%;cursor:pointer;transition:background .3s}.navbar-right-item{display:flex;justify-content:center;align-items:center;margin:0 .25rem}.navbar-item{border-radius:.5rem;overflow:hidden}.navbar-item a{display:inline-block;padding:1rem 2rem;text-decoration:none;transition:.3s}.font-size-tooltip{display:flex;align-items:center;margin:0-.5rem}.font-size-tooltip .icon-button.disabled{pointer-events:none}.main-content{position:relative;flex:1;overflow:auto;display:flex;flex-direction:column;align-items:center;padding:7rem 25rem 0}.main-wrapper{width:100%;max-width:var(--outer-wrapper-max-width);padding:0 4rem 1rem}.p-h-n{padding:.4rem 1rem}.footer{width:100%;margin:5rem 0 0 0;border-radius:1rem;font-size:.875rem;display:flex;justify-content:center}.source-page+.footer{margin-top:3rem}.footer .wrapper{flex:1;padding:1rem 2rem;max-width:var(--outer-wrapper-max-width)}pre{position:relative}.hljs table td{background:0 0;padding:0 .6125rem;line-height:1.5;border-radius:0}.hljs .hljs-ln-numbers{width:2rem;white-space:nowrap;padding-left:1.5rem}.hljs-ln-line.hljs-ln-numbers::before{content:attr(data-line-number)}.pre-div{position:relative;border-radius:1rem;overflow:hidden;margin:2rem 0}.pre-top-bar-container{align-items:center;display:flex;justify-content:space-between;left:0;padding:.3125rem 1.5rem;position:absolute;right:0;top:0}.code-copy-icon-container{align-items:center;border-radius:50%;cursor:pointer;display:flex;height:1.875rem;justify-content:center;transition:.3s;width:1.875rem}.code-copy-icon-container>div{margin-top:.25rem;position:relative}.sm-icon{height:1rem;width:1rem}.code-lang-name{font-family:"body";font-size:.75rem}.tooltip{border-radius:.3125rem;opacity:0;padding:.1875rem .5rem;position:absolute;right:2rem;top:.3125rem;transform:scale(0);transition:.3s}.show-tooltip{opacity:1;transform:scale(1)}.allow-overflow{overflow:auto}.bold{font-family:heading}.search-container{position:fixed;top:0;bottom:0;right:0;left:0;justify-content:center;z-index:50;align-items:flex-start}.search-container .wrapper{width:100%;max-width:60rem;padding:4rem 2rem 2rem;border-radius:1rem;margin:3rem 25rem;position:relative}.search-close-button{position:absolute;top:1rem;right:1rem}.search-result-c-text{display:flex;justify-content:center;user-select:none}.search-result-c{min-height:20rem;max-height:40rem;overflow:auto;padding:2rem 0}.search-box-c{width:100%;position:relative;display:flex;align-items:center}.search-box-c svg{height:1.5rem;width:1.5rem;position:absolute;left:1.5rem}.search-input{border:0;border-radius:1rem;width:100%;flex:1;padding:1rem 2rem 1rem 4rem;font-family:body;font-size:1.25rem}.search-result-item{display:block;text-decoration:none;padding:1rem;border-radius:1rem;margin:1rem 0}.search-result-item:hover{text-decoration:none}.search-result-item:active{text-decoration:none}.search-result-item-title{font-family:heading;font-size:1.5rem;margin:0}.search-result-item-p{font-size:.875rem;margin:0}.mobile-menu-icon-container{display:none;position:fixed;bottom:1.5rem;right:2rem;z-index:30}.mobile-menu-icon-container .icon-button svg{height:2rem;width:2rem}.mobile-sidebar-container{position:fixed;top:0;right:0;left:0;bottom:0;padding:1rem;z-index:25;display:none}.mobile-sidebar-container.show{display:block}.mobile-sidebar-wrapper{border-radius:1rem;height:100%;width:100%;display:flex;flex-direction:column;padding-top:2rem}.mobile-nav-links{display:flex;flex-wrap:wrap;padding-top:2rem}.mobile-sidebar-items-c{flex:1;overflow:auto}.mobile-navbar-actions{display:flex;padding:1rem}.rel{position:relative}.icon-button.codepen-button svg{height:1.5rem;width:1.5rem}.table-div{width:100%;overflow:auto}.tag-default{overflow:auto}::-webkit-scrollbar{width:.3125rem;height:.3125rem}::-webkit-scrollbar-thumb,::-webkit-scrollbar-track{border-radius:1rem}@media screen and (max-width:100em){.toc-container{display:none}.main-content{padding:7rem 0 0 25rem}.search-container .wrapper{margin-right:1rem}.navbar-container{right:1rem}}@media screen and (min-width:65em){.mobile-sidebar-container.show{display:none}}@media screen and (max-width:65em){h1{font-size:3rem}h2{font-size:2rem}h3{font-size:1.875}h4,h5,h6{font-size:1rem}.main-wrapper{padding:0 1rem 1rem}.search-result-c{max-height:25rem}.mobile-menu-icon-container{display:block}.sidebar-container{display:none}.search-container .wrapper{margin-left:1rem}.main-content{padding-left:0;padding-top:1rem}.navbar-container{display:none}.source-page+.footer,.footer{margin-top:2rem}.has-anchor:hover .link-anchor{visibility:hidden}}::selection{background:#ffce76;color:#222}body{background-color:#1a1a1a;color:#fff}a,a:active{color:#0bf}hr{color:#222}h1,h2,h3,h4,h5,h6{color:#fff}.sidebar{background-color:#222;color:#999}.sidebar-title{color:#999}.sidebar-section-title{color:#999}.sidebar-section-title:hover{background:#252525}.with-arrow{fill:#999}.sidebar-section-children-container{background:#292929}.sidebar-section-children a:hover{background:#2c2c2c}.sidebar-section-children a{color:#fff}.navbar-container{background:#1a1a1a}.icon-button svg,.navbar-item a{color:#999;fill:#999}.font-size-tooltip .icon-button svg{fill:#fff}.font-size-tooltip .icon-button.disabled{background:#999}.icon-button:hover{background:#333}.icon-button:active{background:#444}.navbar-item a:active{color:#aaa;background-color:#222}.navbar-item:hover{background:#202020}.footer{background:#222;color:#999}.footer a{color:#999}.toc-link{color:#777;transition:color .3s;font-size:.875rem}.toc-link.is-active-link{color:#fff}.has-anchor .link-anchor{color:#555}.has-anchor .link-anchor:hover{color:#888}tt,code,kbd,samp{background:#333}.signature-attributes{color:#aaa}.ancestors{color:#999}.ancestors a{color:#999!important}.important{color:#c51313}.type-signature{color:#00918e}.name,.name a{color:#f7f7f7}.details{background:#222;color:#fff}.prettyprint{background:#222}.member-item-container strong,.method-member-container strong{color:#fff}.pre-top-bar-container{background:#292929}.prettyprint.source,.prettyprint code{background-color:#222;color:#c9d1d9}.pre-div{background-color:#222}.hljs .hljs-ln-numbers{color:#777}.hljs .selected{background:#444}.hljs .selected .hljs-ln-numbers{color:#eee}table .name,.params .name,.props .name,.name code{color:#fff}table td,.params td{background-color:#292929}table thead th,.params thead th,.props thead th{background-color:#222;color:#fff}table .params thead tr,.params .params thead tr,.props .props thead tr{background-color:#222;color:#fff}.disabled{color:#aaa}.code-lang-name{color:#ff8a00}.tooltip{background:#ffce76;color:#222}.hljs-comment{color:#8b949e}.hljs-doctag,.hljs-keyword,.hljs-template-tag,.hljs-variable.language_{color:#ff7b72}.hljs-template-variable,.hljs-type{color:#30ac7c}.hljs-meta,.hljs-string,.hljs-regexp{color:#a5d6ff}.hljs-title.class_,.hljs-title{color:#ffa657}.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}blockquote{background:#222;color:#fff}.search-container{background:rgba(255,255,255,.1)}.icon-button.search-close-button svg{fill:#a00}.search-container .wrapper{background:#222}.search-result-c{color:#666}.search-box-c{fill:#333}.search-input{background:#333;color:#fff}.search-box-c svg{fill:#fff}.search-result-item{background:#333}.search-result-item:hover{background:#444}.search-result-item:active{background:#555}.search-result-item-title{color:#fff}.search-result-item-p{color:#aaa}.mobile-menu-icon-container .icon-button{background:#333}.mobile-sidebar-container{background:#1a1a1a}.mobile-sidebar-wrapper{background:#222}::-webkit-scrollbar-track{background:#333}::-webkit-scrollbar-thumb{background:#555;outline:.06125rem solid #555}.light ::selection{background:#ffce76;color:#1d1919}body.light{background-color:#fff;color:#111}.light a,.light a:active{color:#007bff}.light hr{color:#f7f7f7}.light h1,.light h2,.light h3,.light h4,.light h5,.light h6{color:#111}.light .sidebar{background-color:#f7f7f7;color:#222}.light .sidebar-title{color:#222}.light .sidebar-section-title{color:#222}.light .sidebar-section-title:hover{background:#eee}.light .with-arrow{fill:#111}.light .sidebar-section-children-container{background:#eee}.light .sidebar-section-children a:hover{background:#e0e0e0}.light .sidebar-section-children a{color:#111}.light .navbar-container{background:#fff}.light .icon-button svg,.light .navbar-item a{color:#222;fill:#222}.light .tippy-box{background:#eee;color:#111}.light .tippy-arrow{color:#f1f1f1}.light .font-size-tooltip .icon-button svg{fill:#111}.light .font-size-tooltip .icon-button.disabled svg{fill:#999}.light .icon-button:hover{background:#ddd}.light .icon-button:active{background:#ccc}.light .navbar-item a:active{color:#333;background-color:#eee}.light .navbar-item:hover{background:#f7f7f7}.light .footer{background:#f7f7f7;color:#111}.light .footer a{color:#111}.light .toc-link{color:#999;transition:color .3s;font-size:.875rem}.light .toc-link.is-active-link{color:#111}.light .has-anchor .link-anchor{color:#ddd}.light .has-anchor .link-anchor:hover{color:#ccc}.light .signature-attributes{color:#aaa}.light .ancestors{color:#999}.light .ancestors a{color:#999!important}.light .important{color:#ee1313}.light .type-signature{color:#00918e}.light .name,.light .name a{color:#293a80}.light .details{background:#f9f9f9;color:#101010}.light .member-item-container strong,.light .method-member-container strong{color:#000}.light .prettyprint{background:#f7f7f7}.light .pre-div{background:#f7f7f7}.light .hljs .hljs-ln-numbers{color:#aaa}.light .hljs .selected{background:#ccc}.light table.hljs-ln td{background:0 0}.light .hljs .selected .hljs-ln-numbers{color:#444}.light .pre-top-bar-container{background-color:#eee}.light .prettyprint code{background-color:#f7f7f7}.light table .name,.light .params .name,.light .props .name,.light .name code{color:#4d4e53}.light table td,.light .params td{background:#f7f7f7}.light table thead th,.light .params thead th,.light .props thead th{background-color:#eee;color:#111}.light table .params thead tr,.light .params .params thead tr,.light .props .props thead tr{background-color:#eee;color:#111}.light .disabled{color:#454545}.light .code-lang-name{color:red}.light .tooltip{background:#ffce76;color:#000}.light .hljs-comment,.light .hljs-quote{color:#a0a1a7}.light .hljs-doctag,.light .hljs-keyword,.light .hljs-formula{color:#a626a4}.light .hljs-section,.light .hljs-name,.light .hljs-selector-tag,.light .hljs-deletion,.light .hljs-subst{color:#e45649}.light .hljs-literal{color:#0184bb}.light .hljs-string,.light .hljs-regexp,.light .hljs-addition,.light .hljs-attribute,.light .hljs-meta .hljs-string{color:#50a14f}.light .hljs-attr,.light .hljs-variable,.light .hljs-template-variable,.light .hljs-type,.light .hljs-selector-class,.light .hljs-selector-attr,.light .hljs-selector-pseudo,.light .hljs-number{color:#986801}.light .hljs-symbol,.light .hljs-bullet,.light .hljs-link,.light .hljs-meta,.light .hljs-selector-id,.light .hljs-title{color:#4078f2}.light .hljs-built_in,.light .hljs-title.class_,.light .hljs-class .hljs-title{color:#c18401}.light .hljs-emphasis{font-style:italic}.light .hljs-strong{font-weight:700}.light .hljs-link{text-decoration:underline}.light blockquote{background:#eee;color:#111}.light code{background:#ddd;color:#000}.light .search-container{background:rgba(0,0,0,.1)}.light .search-close-button svg{fill:red}.light .search-container .wrapper{background:#eee}.light .search-result-c{color:#aaa}.light .search-box-c svg{fill:#333}.light .search-input{background:#f7f7f7;color:#111}.light .search-result-item{background:#f7f7f7}.light .search-result-item:hover{background:#e9e9e9}.light .search-result-item:active{background:#f7f7f7}.light .search-result-item-title{color:#111}.light .search-result-item-p{color:#aaa}.light .mobile-menu-icon-container .icon-button{background:#e5e5e5}.light .mobile-sidebar-container{background:#fff}.light .mobile-sidebar-wrapper{background:#f7f7f7}.light ::-webkit-scrollbar-track{background:#ddd}.light ::-webkit-scrollbar-thumb{background:#aaa;outline:.06125rem solid #aaa} \ No newline at end of file +@font-face{font-display:swap;font-family:"heading";src:url(../fonts/WorkSans-Bold.ttf)format("truetype")}@font-face{font-display:swap;font-family:"body";src:url(../fonts/OpenSans-Regular.ttf)format("truetype")}@font-face{font-display:swap;font-family:"code";src:url(../fonts/Inconsolata-Regular.ttf)format("truetype")}:root{--outer-wrapper-max-width:65rem}*{box-sizing:border-box;margin:0;padding:0}html,body{line-height:1.75;min-height:100%;width:100%}body{font-family:"body";overflow-x:hidden;position:relative}b{font-family:heading}h1,h2,h3,h4,h5,h6{font-family:"heading";font-weight:400;line-height:1.75}h1{font-size:3.5rem;margin:0}h2{font-size:2.25rem;margin:2rem 0 0}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1rem}h6{font-size:1rem}img{max-width:100%}a{text-decoration:none}a:hover{text-decoration:underline}a img{margin-right:.5rem}p{margin:1rem 0}article ul{list-style:none}article ul li,article ol li{padding:.5rem 0}article ol,article ul{padding-left:3rem}article ol p,article ul p{margin:0}.variation{display:none}.signature-attributes{font-style:italic;font-weight:lighter}.ancestors a{text-decoration:none}.important{font-weight:700}.signature{font-family:"code"}.name{font-family:"code";font-weight:700}blockquote{border-radius:1rem;font-size:.875rem;margin:.5rem 0;padding:.0625rem 1.25rem}.details{border-radius:1rem;margin:1rem 0}.details .details-item-container{display:flex;padding:1rem 2rem}dt{font-family:heading}.details dt{float:left;min-width:11rem}.details ul{display:inline-flex;list-style-type:none;margin:0}.details ul li{display:inline-flex;margin-right:.6125rem;padding:0;word-break:break-word}.details ul li p{margin:0}.details pre.prettyprint{margin:0}.details .object-value{padding-top:0}.description{margin-bottom:2rem}.method-member-container table{margin-top:1rem}.pre-div .hljs-ln{margin:0}.code-caption{font-size:.875rem}.prettyprint{font-size:.875rem;overflow:auto}pre.prettyprint{margin-top:3rem}.prettyprint.source{width:inherit}.prettyprint code{display:block;font-size:1rem;line-height:1.75;padding:0 0 1rem}.prettyprint .compact{padding:0}h4.name{margin-top:.5rem}.params,.props,table{border-collapse:separate;border-radius:.5rem;border-spacing:0 .5rem;font-size:.875rem;margin:0;width:100%}table td:first-child,.params td:first-child,table thead th:first-child,.params thead th:first-child,.props thead th:first-child{border-bottom-left-radius:1rem;border-top-left-radius:1rem}table td:last-child,.params td:last-child,table thead th:last-child,.params thead th:last-child,.props thead th:last-child{border-bottom-right-radius:1rem;border-top-right-radius:1rem}table th,.params th{position:sticky;top:0}.params .name,.props .name,.name code{font-family:"code";font-size:1rem}.params td,.params th,.props td,.props th,th,td{display:table-cell;margin:0;padding:1rem 2rem;text-align:left;vertical-align:top}.params thead tr,.props thead tr{font-weight:700}.params .params thead tr,.props .props thead tr{font-weight:700}.params td.description>p:first-child,.props td.description>p:first-child{margin-top:0;padding-top:0}.params td.description>p:last-child,.props td.description>p:last-child{margin-bottom:0;padding-bottom:0}dl.param-type{margin-bottom:1rem;padding-bottom:1rem}.param-type dt,.param-type dd{display:inline-block}.param-type dd{font-family:"code";font-size:1rem}code{border-radius:.3rem;font-family:"code";font-size:1rem;padding:.1rem .4rem}.mt-20{margin-top:1.5rem}.codepen-form{bottom:0;position:absolute;right:.6125rem}.body-wrapper{display:flex;flex-direction:column;height:100vh;position:relative}.sidebar-container{bottom:0;display:flex;left:0;padding:1rem;position:fixed;top:0;width:25rem;z-index:10}.sidebar{border-radius:1rem;display:flex;flex:1;flex-direction:column;overflow:hidden;padding:1.5rem 0}.sidebar-title{font-family:heading;font-size:1.5rem;margin:0;padding:0 2rem;text-decoration:none}.sidebar-title:hover{text-decoration:none}.sidebar-items-container{flex:1;margin-top:5rem;overflow:auto;position:relative}.sidebar-section-title{border-radius:1rem;font-family:heading;font-size:1.25rem;padding:.5rem 2rem}.with-arrow{align-items:center;cursor:pointer;display:flex}.with-arrow div{flex:1}.with-arrow svg{height:1rem;transition:transform .3s;width:1rem}.with-arrow[data-isopen=true] svg{transform:rotate(180deg)}.sidebar-section-children-container{border-radius:.5rem;overflow:hidden}.sidebar-section-children a{display:block;padding:.25rem 2rem;width:100%}.sidebar-section-children a{text-decoration:none}.with-arrow[data-isopen=false]+.sidebar-section-children-container{height:0;overflow:hidden}.with-arrow[data-isopen=true]+.sidebar-section-children-container{height:auto}.toc-container{bottom:0;position:fixed;right:4rem;top:0;width:16rem;z-index:10}.toc-content{display:flex;flex-direction:column;height:100%;padding-top:10rem}#eed4d2a0bfd64539bb9df78095dec881{flex:1;margin:2rem 0;overflow:auto}.toc-list{list-style:none;padding-left:1rem}.toc-link{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.toc-link.is-active-link{font-family:heading}.has-anchor{position:relative}.link-anchor{padding:0 .5rem}.has-anchor .link-anchor{left:0;position:absolute;text-decoration:none;top:0;transform:translateX(-100%);visibility:hidden}.has-anchor:hover .link-anchor{visibility:visible}.navbar-container{display:flex;height:7rem;justify-content:center;left:25rem;padding-top:1rem;position:fixed;right:25rem;top:0;z-index:10}.navbar{display:flex;flex:1;max-width:var(--outer-wrapper-max-width);padding:1rem 4rem 1rem 2rem}.navbar-left-items{display:flex;flex:1}.navbar-right-items{display:flex}.icon-button svg{height:1rem;width:1rem}.icon-button{background:0 0;border:0;border-radius:50%;cursor:pointer;display:inline-flex;padding:.5rem;position:relative;transition:background .3s}.navbar-right-item{align-items:center;display:flex;justify-content:center;margin:0 .25rem}.navbar-item{border-radius:.5rem;overflow:hidden}.navbar-item a{display:inline-block;padding:1rem 2rem;text-decoration:none;transition:.3s}.font-size-tooltip{align-items:center;display:flex;margin:0-.5rem}.font-size-tooltip .icon-button.disabled{pointer-events:none}.main-content{align-items:center;display:flex;flex:1;flex-direction:column;overflow:auto;padding:7rem 25rem 0;position:relative}.main-wrapper{max-width:var(--outer-wrapper-max-width);padding:0 4rem 1rem;width:100%}.p-h-n{padding:.4rem 1rem}.footer{border-radius:1rem;display:flex;font-size:.875rem;justify-content:center;margin-top:5rem;width:100%}.source-page+.footer{margin-top:3rem}.footer .wrapper{flex:1;max-width:var(--outer-wrapper-max-width);padding:1rem 2rem}pre{position:relative}.hljs table td{background:0 0;border-radius:0;line-height:1.5;padding:0 .6125rem}.hljs .hljs-ln-numbers{padding-left:1.5rem;user-select:none;white-space:nowrap;width:2rem}.hljs-ln-line.hljs-ln-numbers::before{content:attr(data-line-number)}.pre-div{border-radius:1rem;margin:2rem 0;overflow:hidden;position:relative}.pre-top-bar-container{align-items:center;display:flex;justify-content:space-between;left:0;padding:.3125rem 1.5rem;position:absolute;right:0;top:0}.code-copy-icon-container{align-items:center;border-radius:50%;cursor:pointer;display:flex;height:1.875rem;justify-content:center;transition:.3s;width:1.875rem}.code-copy-icon-container>div{margin-top:.25rem;position:relative}.sm-icon{height:1rem;width:1rem}.code-lang-name{font-family:"body";font-size:.75rem}.tooltip{border-radius:.3125rem;opacity:0;padding:.1875rem .5rem;position:absolute;right:2rem;top:.3125rem;transform:scale(0);transition:.3s}.show-tooltip{opacity:1;transform:scale(1)}.allow-overflow{overflow:auto}.bold{font-family:heading}.search-container{align-items:flex-start;bottom:0;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:50}.search-container .wrapper{border-radius:1rem;margin:3rem 25rem;max-width:60rem;padding:4rem 2rem 2rem;position:relative;width:100%}.search-close-button{position:absolute;right:1rem;top:1rem}.search-result-c-text{display:flex;justify-content:center;user-select:none}.search-result-c{max-height:40rem;min-height:20rem;overflow:auto;padding:2rem 0}.search-box-c{align-items:center;display:flex;position:relative;width:100%}.search-box-c svg{height:1.5rem;left:1.5rem;position:absolute;width:1.5rem}.search-input{border:0;border-radius:1rem;flex:1;font-family:body;font-size:1.25rem;padding:1rem 2rem 1rem 4rem;width:100%}.search-result-item{border-radius:1rem;display:block;margin:1rem 0;padding:1rem;text-decoration:none}.search-result-item:hover{text-decoration:none}.search-result-item:active{text-decoration:none}.search-result-item-title{font-family:heading;font-size:1.5rem;margin:0}.search-result-item-p{font-size:.875rem;margin:0}.mobile-menu-icon-container{bottom:1.5rem;display:none;position:fixed;right:2rem;z-index:30}.mobile-menu-icon-container .icon-button svg{height:2rem;width:2rem}.mobile-sidebar-container{bottom:0;display:none;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:25}.mobile-sidebar-container.show{display:block}.mobile-sidebar-wrapper{border-radius:1rem;display:flex;flex-direction:column;height:100%;padding-top:2rem;width:100%}.mobile-nav-links{display:flex;flex-wrap:wrap;padding-top:2rem}.mobile-sidebar-items-c{flex:1;overflow:auto}.mobile-navbar-actions{display:flex;padding:1rem}.rel{position:relative}.icon-button.codepen-button svg{height:1.5rem;width:1.5rem}.table-div{overflow:auto;width:100%}.tag-default{overflow:auto}@media screen and (max-width:100em){.toc-container{display:none}.main-content{padding:7rem 0 0 25rem}.search-container .wrapper{margin-right:1rem}.navbar-container{right:1rem}}@media screen and (min-width:65em){.mobile-sidebar-container.show{display:none}}@media screen and (max-width:65em){h1{font-size:3rem}h2{font-size:2rem}h3{font-size:1.875}h4,h5,h6{font-size:1rem}.main-wrapper{padding:0 1rem 1rem}.search-result-c{max-height:25rem}.mobile-menu-icon-container{display:block}.sidebar-container{display:none}.search-container .wrapper{margin-left:1rem}.main-content{padding-left:0;padding-top:1rem}.navbar-container{display:none}.source-page+.footer,.footer{margin-top:2rem}.has-anchor:hover .link-anchor{visibility:hidden}}.child-tutorial-container{display:flex;flex-direction:row;flex-wrap:wrap}.child-tutorial{border:1px solid;border-radius:10px;display:block;margin:5px;padding:10px 16px}.child-tutorial:hover{text-decoration:none}::selection{background:#ffce76;color:#222}body{background-color:#1a1a1a;color:#fff}a,a:active{color:#0bf}hr{color:#222}h1,h2,h3,h4,h5,h6{color:#fff}.sidebar{background-color:#222;color:#999}.sidebar-title{color:#999}.sidebar-section-title{color:#999}.sidebar-section-title:hover{background:#252525}.with-arrow{fill:#999}.sidebar-section-children-container{background:#292929}.sidebar-section-children.active{background:#444}.sidebar-section-children a:hover{background:#2c2c2c}.sidebar-section-children a{color:#fff}.navbar-container{background:#1a1a1a}.icon-button svg,.navbar-item a{color:#999;fill:#999}.font-size-tooltip .icon-button svg{fill:#fff}.font-size-tooltip .icon-button.disabled{background:#999}.icon-button:hover{background:#333}.icon-button:active{background:#444}.navbar-item a:active{background-color:#222;color:#aaa}.navbar-item:hover{background:#202020}.footer{background:#222;color:#999}.footer a{color:#999}.toc-link{color:#777;font-size:.875rem;transition:color .3s}.toc-link.is-active-link{color:#fff}.has-anchor .link-anchor{color:#555}.has-anchor .link-anchor:hover{color:#888}tt,code,kbd,samp{background:#333}.signature-attributes{color:#aaa}.ancestors{color:#999}.ancestors a{color:#999!important}.important{color:#c51313}.type-signature{color:#00918e}.name,.name a{color:#f7f7f7}.details{background:#222;color:#fff}.prettyprint{background:#222}.member-item-container strong,.method-member-container strong{color:#fff}.pre-top-bar-container{background:#292929}.prettyprint.source,.prettyprint code{background-color:#222;color:#c9d1d9}.pre-div{background-color:#222}.hljs .hljs-ln-numbers{color:#777}.hljs .selected{background:#444}.hljs .selected .hljs-ln-numbers{color:#eee}table .name,.params .name,.props .name,.name code{color:#fff}table td,.params td{background-color:#292929}table thead th,.params thead th,.props thead th{background-color:#222;color:#fff}table .params thead tr,.params .params thead tr,.props .props thead tr{background-color:#222;color:#fff}.disabled{color:#aaa}.code-lang-name{color:#ff8a00}.tooltip{background:#ffce76;color:#222}.hljs-comment{color:#8b949e}.hljs-doctag,.hljs-keyword,.hljs-template-tag,.hljs-variable.language_{color:#ff7b72}.hljs-template-variable,.hljs-type{color:#30ac7c}.hljs-meta,.hljs-string,.hljs-regexp{color:#a5d6ff}.hljs-title.class_,.hljs-title{color:#ffa657}.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}blockquote{background:#222;color:#fff}.search-container{background:rgba(255,255,255,.1)}.icon-button.search-close-button svg{fill:#a00}.search-container .wrapper{background:#222}.search-result-c{color:#666}.search-box-c{fill:#333}.search-input{background:#333;color:#fff}.search-box-c svg{fill:#fff}.search-result-item{background:#333}.search-result-item:hover{background:#444}.search-result-item:active{background:#555}.search-result-item-title{color:#fff}.search-result-item-p{color:#aaa}.mobile-menu-icon-container .icon-button{background:#333}.mobile-sidebar-container{background:#1a1a1a}.mobile-sidebar-wrapper{background:#222}.child-tutorial{border-color:#555;color:#f3f3f3}.child-tutorial:hover{background:#222}.light ::selection{background:#ffce76;color:#1d1919}body.light{background-color:#fff;color:#111}.light a,.light a:active{color:#007bff}.light hr{color:#f7f7f7}.light h1,.light h2,.light h3,.light h4,.light h5,.light h6{color:#111}.light .sidebar{background-color:#f7f7f7;color:#222}.light .sidebar-title{color:#222}.light .sidebar-section-title{color:#222}.light .sidebar-section-title:hover,.light .sidebar-section-title.active{background:#eee}.light .with-arrow{fill:#111}.light .sidebar-section-children-container{background:#eee}.light .sidebar-section-children.active{background:#ccc}.light .sidebar-section-children a:hover{background:#e0e0e0}.light .sidebar-section-children a{color:#111}.light .navbar-container{background:#fff}.light .icon-button svg,.light .navbar-item a{color:#222;fill:#222}.light .tippy-box{background:#eee;color:#111}.light .tippy-arrow{color:#f1f1f1}.light .font-size-tooltip .icon-button svg{fill:#111}.light .font-size-tooltip .icon-button.disabled svg{fill:#999}.light .icon-button:hover{background:#ddd}.light .icon-button:active{background:#ccc}.light .navbar-item a:active{background-color:#eee;color:#333}.light .navbar-item:hover{background:#f7f7f7}.light .footer{background:#f7f7f7;color:#111}.light .footer a{color:#111}.light .toc-link{color:#999;font-size:.875rem;transition:color .3s}.light .toc-link.is-active-link{color:#111}.light .has-anchor .link-anchor{color:#ddd}.light .has-anchor .link-anchor:hover{color:#ccc}.light .signature-attributes{color:#aaa}.light .ancestors{color:#999}.light .ancestors a{color:#999!important}.light .important{color:#ee1313}.light .type-signature{color:#00918e}.light .name,.light .name a{color:#293a80}.light .details{background:#f9f9f9;color:#101010}.light .member-item-container strong,.light .method-member-container strong{color:#000}.light .prettyprint{background:#f7f7f7}.light .pre-div{background:#f7f7f7}.light .hljs .hljs-ln-numbers{color:#aaa}.light .hljs .selected{background:#ccc}.light table.hljs-ln td{background:0 0}.light .hljs .selected .hljs-ln-numbers{color:#444}.light .pre-top-bar-container{background-color:#eee}.light .prettyprint code{background-color:#f7f7f7}.light table .name,.light .params .name,.light .props .name,.light .name code{color:#4d4e53}.light table td,.light .params td{background:#f7f7f7}.light table thead th,.light .params thead th,.light .props thead th{background-color:#eee;color:#111}.light table .params thead tr,.light .params .params thead tr,.light .props .props thead tr{background-color:#eee;color:#111}.light .disabled{color:#454545}.light .code-lang-name{color:red}.light .tooltip{background:#ffce76;color:#000}.light .hljs-comment,.light .hljs-quote{color:#a0a1a7}.light .hljs-doctag,.light .hljs-keyword,.light .hljs-formula{color:#a626a4}.light .hljs-section,.light .hljs-name,.light .hljs-selector-tag,.light .hljs-deletion,.light .hljs-subst{color:#e45649}.light .hljs-literal{color:#0184bb}.light .hljs-string,.light .hljs-regexp,.light .hljs-addition,.light .hljs-attribute,.light .hljs-meta .hljs-string{color:#50a14f}.light .hljs-attr,.light .hljs-variable,.light .hljs-template-variable,.light .hljs-type,.light .hljs-selector-class,.light .hljs-selector-attr,.light .hljs-selector-pseudo,.light .hljs-number{color:#986801}.light .hljs-symbol,.light .hljs-bullet,.light .hljs-link,.light .hljs-meta,.light .hljs-selector-id,.light .hljs-title{color:#4078f2}.light .hljs-built_in,.light .hljs-title.class_,.light .hljs-class .hljs-title{color:#c18401}.light .hljs-emphasis{font-style:italic}.light .hljs-strong{font-weight:700}.light .hljs-link{text-decoration:underline}.light blockquote{background:#eee;color:#111}.light code{background:#ddd;color:#000}.light .search-container{background:rgba(0,0,0,.1)}.light .search-close-button svg{fill:red}.light .search-container .wrapper{background:#eee}.light .search-result-c{color:#aaa}.light .search-box-c svg{fill:#333}.light .search-input{background:#f7f7f7;color:#111}.light .search-result-item{background:#f7f7f7}.light .search-result-item:hover{background:#e9e9e9}.light .search-result-item:active{background:#f7f7f7}.light .search-result-item-title{color:#111}.light .search-result-item-p{color:#aaa}.light .mobile-menu-icon-container .icon-button{background:#e5e5e5}.light .mobile-sidebar-container{background:#fff}.light .mobile-sidebar-wrapper{background:#f7f7f7}.light .child-tutorial{border-color:#aaa;color:#222}.light .child-tutorial:hover{background:#ccc}::-webkit-scrollbar{height:.3125rem;width:.3125rem}::-webkit-scrollbar-thumb,::-webkit-scrollbar-track{border-radius:1rem}::-webkit-scrollbar-track{background:#333}::-webkit-scrollbar-thumb{background:#555;outline:.06125rem solid #555}.light ::-webkit-scrollbar-track{background:#ddd}.light ::-webkit-scrollbar-thumb{background:#aaa;outline:.06125rem solid #aaa} \ No newline at end of file diff --git a/api/time.js.html b/api/time.js.html index def02e57..d8c48eb0 100644 --- a/api/time.js.html +++ b/api/time.js.html @@ -1,6 +1,6 @@ Source: time.js
On this page

time.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

time.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -1331,4 +1331,4 @@
     defineAttr("second");
     defineAttr("isDate");
 })();
-
\ No newline at end of file +
\ No newline at end of file diff --git a/api/timezone.js.html b/api/timezone.js.html index 79ddb08f..410f18bd 100644 --- a/api/timezone.js.html +++ b/api/timezone.js.html @@ -1,6 +1,6 @@ Source: timezone.js
On this page

timezone.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

timezone.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -527,4 +527,4 @@
   }
 }
 export default Timezone;
-
\ No newline at end of file +
\ No newline at end of file diff --git a/api/timezone_service.js.html b/api/timezone_service.js.html index 6c10a66d..55b140c3 100644 --- a/api/timezone_service.js.html +++ b/api/timezone_service.js.html @@ -1,6 +1,6 @@ Source: timezone_service.js
On this page

timezone_service.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

timezone_service.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -108,4 +108,4 @@
 };
 
 export default TimezoneService;
-
\ No newline at end of file +
\ No newline at end of file diff --git a/api/utc_offset.js.html b/api/utc_offset.js.html index c4d76f3c..6b00aa50 100644 --- a/api/utc_offset.js.html +++ b/api/utc_offset.js.html @@ -1,6 +1,6 @@ Source: utc_offset.js
On this page

utc_offset.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

utc_offset.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -185,4 +185,4 @@
   }
 }
 export default UtcOffset;
-
\ No newline at end of file +
\ No newline at end of file diff --git a/api/vcard_time.js.html b/api/vcard_time.js.html index 5552c862..e7fcbef8 100644 --- a/api/vcard_time.js.html +++ b/api/vcard_time.js.html @@ -1,6 +1,6 @@ Source: vcard_time.js
On this page

vcard_time.js

/* This Source Code Form is subject to the terms of the Mozilla Public
+    
On this page

vcard_time.js

/* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  * Portions Copyright (C) Philipp Kewisch */
@@ -184,4 +184,4 @@
   }
 }
 export default VCardTime;
-
\ No newline at end of file +
\ No newline at end of file