diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 269e18fa..a183f1d3 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE52XQY/aMBCF/4vPqKirdlVx2y5diYrdRYH2UvUw6wzBWsdObQctVP3vVUIDCRlPol7nvffFeJx4+PFbBHwLYiYewagt+rA5FCgmooCwEzOBpsz9tK2924Vci4l4VSYVs09/JmfCOkAo/b1Ne/mLEk9vHOKTTZF6fluLE+6MsQGCsuaSlxq8Rz+9aN38+xua8NmmB45S6eNJK3Ae3RDv5BpHXSofOF6ljyOtIEOOVOkc6R5ydNAnnOp80uzBU8mqziat1ijpTl+0AYIlGlKXudwcPToFWpH9bKsspXSRc9ooXHqxWDwk6G3pJNG5tspRvq6fn5bzOKerc6QlvKD+DrrEFShiV7o6TzJZCRk+QkFhzmKPMTm5xEykWDiUEDAVbbDKdsT7UpfZBVkJWh0xrZdPADo6R2o+oX1Go4xJx9t17eBoK6tMWGP1mlAvQUdmOc4W6MIhsjkdmeMkYKhvUF1mc2hSdMpkRLaR+HxsN8fsYlJ9IHHjwPitdTkB6Ro41lqC5lBdnSehIX5QXWZz+KtEQ+1Fo/Bpt1d0uBbYrDpSQXXkUwVKtVUy3sNrB0fb7Mr8pY+oy4M5A0pHspXE5uMtH9Xtsyk2YVwZBlmaP9J9D088jW0U56Rw6W9BaWI6qMvs9XgnJXq/sa/YumCVCei2IKsbsmXogm4+3rZBX94COgN6kUOGzTGaQwAaG7WPekj/IFNs+jAPIIeX/N+rfS6qacWPo/8zsw9o7jHLkq9dHFLWg2iCGoLaY9L7i7AtTT0u+int7LJvP7TQWGp0D87m0bvgAo95GbyuxpMxCyeNHNhC2h9IWryWzmCK6pvCcTqGHujnX1DrOml9DgAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE52XT4/aMBDFv4vPqKirdlVx2+52JSp2FwHtpeph1hnAWsdObQcBVb97ldCAQ8aTqNd57/1i/Hf48VsE3AcxEU9g1Bp9WB0KFCNRQNiKiUBT5n4ca++2IddiJN6UycTk05/RmbAMEEp/b7NO/qKk0yuH+GwzpL4fa2nCnTE2QFDWXPJSg/foxxetnX9/QxM+2+zAUSp9OGkOzqPr451cw6gz5QPHq/RhpDlskCNVOke6hxwddAmnOp80O/BUsqqzSas1SnqlL1oPwRILUpe53AN6dAq0ItczVllK6RL7tFG49HQ6fVygt6WTxMrFKkf5unx5nj2kOW2dI83gFfV30CXOQRGz0tZ5ktmUsMEnKCjMWewwRieXmIgMC4cSAmYiBqvNljgvdZkdkJWg1RGzevgEoKVzpOYK7TIaZUg6vVzXDo42t8qEJVbHhDoELZnlOFugC4fE5LRkjrMAQ91BdZnNocnQKbMhso3E51OzOWQWF9UFiSsHxq+tywlI28CxlhI0h2rrPAkN8YPqMpvDXyUaai4ahU+7naLDtcBm1ZEKqiOfKlCqtZLpNbx2cLQV7kMJmn71I5FlbMv8lUhX5d6cAaUT2Upi8+ltM2jHnE2pLuXK0MvS/LHoenjiqfWjOCeFS38LShMdRl1mn9g7KdH7lX3D6JFWJqBbg6xe2cjQBt18vI1BX/YBnQE9zWGDzVZ8gAA0Nmkf9JHuYaDY9IHoQfYP+b9H+1JUHY8fRv9nZj/QvIWWJV+7OKSsm9kFaghqh4vO34x1aeqW049pZ5t9+yFCY6nRPTqbJ9+TCzzlZfC6anGGDJw0cmALWbepiXiRzmCK6k7hOC1DB/TzL2qjiFvBDgAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 4c59ae7f..68fac6f7 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/Annotation.html b/docs/classes/Annotation.html index b66eae8b..ea0c7b81 100644 --- a/docs/classes/Annotation.html +++ b/docs/classes/Annotation.html @@ -1,4 +1,4 @@ -Annotation | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

constructor +Annotation | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string

Accessors

  • get LookAtLocation(): Vector3
  • A 3D point coordinate object for the location of an Annotation +

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string

Accessors

  • get LookAtLocation(): Vector3
  • A 3D point coordinate object for the location of an Annotation to satisfy the requirements of the lookAt property of camera and spotlight resources, according to the draft v4 API as of April 1 2024

    Is the position of the point for a target which is a SpecificResource with a PointSelector Otherwise, for example when the annotation target is an entire Scene, the location for lookAt is the origin (0,0,0)

    -

    Returns Vector3

Methods

Methods

  • Developer Note: 8 April 2024 getBody3D function was developed in the early stages of the 3D API Feb-March 2024 as alternative to the existing Annotation getBody function, but the signature for getBody3D was chosen to be a single object instance, not an array.

    @@ -57,13 +57,13 @@

    3D clients using getBody are responsible for choosing the appropriate instance from the returned array. In most cases this will be the sole 0th element. *

    -

    Returns SpecificResource | AnnotationBody

  • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

    Returns PropertyValue

    Example

    var label = manifest.getLabel().getValue(); // returns the string for default locale
     

    Example

    var label = manifest.getLabel().getValue(locale); // locale a string , examples
    // would be "fr", "en-US",
    -
  • Returns null | AnnotationMotivation

  • Returns null | AnnotationMotivation

  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -74,11 +74,11 @@

    Example

    var
     
-

Parameters

Returns any

\ No newline at end of file +

Parameters

Returns SpecificResource | AnnotationBody

\ No newline at end of file diff --git a/docs/classes/AnnotationBody.html b/docs/classes/AnnotationBody.html index 2bb27529..2b184ba9 100644 --- a/docs/classes/AnnotationBody.html +++ b/docs/classes/AnnotationBody.html @@ -5,7 +5,7 @@ a light, camera, or model, or a SpecificResource object wrapping a light, camera, or model. *

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string
isAnnotationBody: boolean = true
isCamera: boolean = false
isLight: boolean = false
isModel: boolean = true
isSpecificResource: boolean = false

Methods

  • returns the PropertyValue which in turn allows a language-specific string +

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string
isAnnotationBody: boolean = true
isCamera: boolean = false
isLight: boolean = false
isModel: boolean = true
isSpecificResource: boolean = false

Methods

  • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

    Returns PropertyValue

    Example

    var label = manifest.getLabel().getValue(); // returns the string for default locale
     

    Example

    var label = manifest.getLabel().getValue(locale); // locale a string , examples
    // would be "fr", "en-US",
    -
  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -57,4 +57,4 @@

    Example

    var
     
-

Parameters

  • name: string

Returns any

\ No newline at end of file +

Parameters

  • name: string

Returns any

\ No newline at end of file diff --git a/docs/classes/AnnotationBodyParser.html b/docs/classes/AnnotationBodyParser.html index 08ac404c..b87e2991 100644 --- a/docs/classes/AnnotationBodyParser.html +++ b/docs/classes/AnnotationBodyParser.html @@ -1,3 +1,3 @@ -AnnotationBodyParser | @iiif/3d-manifesto-dev

Constructors

constructor +AnnotationBodyParser | @iiif/3d-manifesto-dev

Constructors

Methods

Constructors

Methods

\ No newline at end of file +

Constructors

Methods

\ No newline at end of file diff --git a/docs/classes/AnnotationList.html b/docs/classes/AnnotationList.html index bbb072d7..5464ad86 100644 --- a/docs/classes/AnnotationList.html +++ b/docs/classes/AnnotationList.html @@ -1,4 +1,4 @@ -AnnotationList | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

constructor +AnnotationList | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

__jsonld: any
context: string
id: string
isLoaded: boolean
label: string

Methods

  • A function that wraps the getProperty function, which client +

Constructors

Properties

__jsonld: any
context: string
id: string
isLoaded: boolean
label: string

Methods

  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -22,4 +22,4 @@

    -

    Parameters

    • name: string

    Returns any

\ No newline at end of file +

Parameters

  • name: string

Returns any

\ No newline at end of file diff --git a/docs/classes/AnnotationPage.html b/docs/classes/AnnotationPage.html index e9866f15..5020d7d7 100644 --- a/docs/classes/AnnotationPage.html +++ b/docs/classes/AnnotationPage.html @@ -1,4 +1,4 @@ -AnnotationPage | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

constructor +AnnotationPage | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string

Methods

  • returns the PropertyValue which in turn allows a language-specific string +

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string

Methods

  • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

    Returns PropertyValue

    Example

    var label = manifest.getLabel().getValue(); // returns the string for default locale
     

    Example

    var label = manifest.getLabel().getValue(locale); // locale a string , examples
    // would be "fr", "en-US",
    -
  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -42,4 +42,4 @@

    Example

    var
     
-

Parameters

  • name: string

Returns any

\ No newline at end of file +

Parameters

  • name: string

Returns any

\ No newline at end of file diff --git a/docs/classes/Camera.html b/docs/classes/Camera.html index c428670c..86c32239 100644 --- a/docs/classes/Camera.html +++ b/docs/classes/Camera.html @@ -5,7 +5,7 @@ a light, camera, or model, or a SpecificResource object wrapping a light, camera, or model. *

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string
isAnnotationBody: boolean = true
isCamera: boolean = false
isLight: boolean = false
isModel: boolean = true
isSpecificResource: boolean = false

Accessors

  • get FieldOfView(): undefined | number
  • Full angular size of perspective viewport in vertical direction. +

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string
isAnnotationBody: boolean = true
isCamera: boolean = false
isLight: boolean = false
isModel: boolean = true
isSpecificResource: boolean = false

Accessors

  • get FieldOfView(): undefined | number
  • Full angular size of perspective viewport in vertical direction. Angular unit is degrees *

    -

    Returns undefined | number

  • get ViewHeight(): undefined | number
  • Returns undefined | number

Methods

  • Returns undefined | number

    full angular size of perspective viewport in vertical direction. +

    Returns undefined | number

  • get ViewHeight(): undefined | number
  • Returns undefined | number

Methods

  • Returns undefined | number

    full angular size of perspective viewport in vertical direction. Angular unit is degrees *

    -
  • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

    Returns PropertyValue

    Example

    var label = manifest.getLabel().getValue(); // returns the string for default locale
     

    Example

    var label = manifest.getLabel().getValue(locale); // locale a string , examples
    // would be "fr", "en-US",
    -
  • Returns null | object | PointSelector

    : if not null, is either a PointSelector, or an object with an id matching the id of an Annotation instance.

    -
  • A function that wraps the getProperty function, which client +

  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -73,10 +73,10 @@

    Example

    var
     
-

Parameters

  • name: string

Returns any

  • Returns undefined | number

    full linear size of orthographic viewport in vertical direction. linear unit is Scene global unit of measure

    Name of this property was originally Height, has been changed at this revision to ViewHeight: See issues at https://github.com/IIIF/api/issues/2289 *

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/Canvas.html b/docs/classes/Canvas.html index f38625c2..b372eee6 100644 --- a/docs/classes/Canvas.html +++ b/docs/classes/Canvas.html @@ -1,4 +1,4 @@ -Canvas | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

constructor +Canvas | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string
index: number
ranges: Range[]

Accessors

Methods

  • Parameters

    • Optional w: number

    Returns string

  • returns the PropertyValue which in turn allows a language-specific string +

Constructors

Properties

__jsonld: any
context: string
externalResource: IExternalResource
id: string
index: number
ranges: Range[]

Accessors

Methods

  • Parameters

    • Optional w: number

    Returns string

  • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

    Returns PropertyValue

    Example

    var label = manifest.getLabel().getValue(); // returns the string for default locale
     

    Example

    var label = manifest.getLabel().getValue(locale); // locale a string , examples
    // would be "fr", "en-US",
    -
  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -65,8 +65,8 @@

    Example

    var
     
-

Parameters

  • name: string

Returns any

  • Returns null | ViewingHint

  • Returns null | ViewingHint

  • Returns the fragment placement values if a resourceAnnotation is placed on a canvas somewhere besides the full extent

    -

    Parameters

    • id: any

    Returns any

  • Returns a given resource Annotation, based on a contained resource or body +

    Parameters

    • id: any

    Returns any

  • Returns a given resource Annotation, based on a contained resource or body id

    -

    Parameters

    • id: any

    Returns any

\ No newline at end of file +

Parameters

  • id: any

Returns any

\ No newline at end of file diff --git a/docs/classes/Collection.html b/docs/classes/Collection.html index b21e3f8c..7f7cc903 100644 --- a/docs/classes/Collection.html +++ b/docs/classes/Collection.html @@ -1,4 +1,4 @@ -Collection | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

constructor +Collection | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

__jsonld: any
_collections: null | Collection[] = null
_manifests: null | Manifest[] = null
context: string
defaultTree: TreeNode
externalResource: IExternalResource
id: string
index: number = -1
isLoaded: boolean = false
items: IIIFResource[] = []
parentCollection: Collection
parentLabel: string

Methods

  • Note: this only will return the first behavior as per the manifesto convention +

Constructors

Properties

__jsonld: any
_collections: null | Collection[] = null
_manifests: null | Manifest[] = null
context: string
defaultTree: TreeNode
externalResource: IExternalResource
id: string
index: number = -1
isLoaded: boolean = false
items: IIIFResource[] = []
parentCollection: Collection
parentLabel: string

Methods

  • Note: this only will return the first behavior as per the manifesto convention IIIF v3 supports multiple behaviors

    -

    Returns null | Behavior

  • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

    Returns PropertyValue

    Example

    var label = manifest.getLabel().getValue(); // returns the string for default locale
     

    Example

    var label = manifest.getLabel().getValue(locale); // locale a string , examples
    // would be "fr", "en-US",
    -
  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -75,4 +75,4 @@

    Example

    var
     
-

Parameters

  • name: string

Returns any

\ No newline at end of file +

Parameters

  • name: string

Returns any

\ No newline at end of file diff --git a/docs/classes/Color.html b/docs/classes/Color.html index 0d445a50..99cac962 100644 --- a/docs/classes/Color.html +++ b/docs/classes/Color.html @@ -1,7 +1,7 @@ Color | @iiif/3d-manifesto-dev

class structure with red, green, blue values in 0-255 range Uses the color-string library for conversion from and to string representations of color.

-

Constructors

Constructors

Properties

Accessors

CSS blue @@ -9,11 +9,11 @@ red

Methods

Constructors

  • Parameters

    • rgbValue: number[]

      Array of three 0-255 integers for r,g,b value. Ex: [255.0,0] for red

      -

    Returns Color

Properties

value: number[]

Returns

Array of 3 integers in range 0-255

-

Accessors

  • get CSS(): string
  • Returns string

    hex string (as for CSS ) representation of r,g,b components

    -
  • get blue(): number
  • Returns number

    0 to 255 value of blue color component

    -
  • get green(): number
  • Returns number

    0 to 255 value of green color component

    -
  • get red(): number
  • Returns number

    0 to 255 value of red color component

    -

Methods

  • Parameters

    • cssTerm: string

      hex representtion of color as used in CSS. Ex "#FF0000" as red

      +

    Returns Color

Properties

value: number[]

Returns

Array of 3 integers in range 0-255

+

Accessors

  • get CSS(): string
  • Returns string

    hex string (as for CSS ) representation of r,g,b components

    +
  • get blue(): number
  • Returns number

    0 to 255 value of blue color component

    +
  • get green(): number
  • Returns number

    0 to 255 value of green color component

    +
  • get red(): number
  • Returns number

    0 to 255 value of red color component

    +

Methods

  • Parameters

    • cssTerm: string

      hex representtion of color as used in CSS. Ex "#FF0000" as red

    Returns Color

    Color instance.

    -
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/Deserialiser.html b/docs/classes/Deserialiser.html index 14fa1e6a..f732a60a 100644 --- a/docs/classes/Deserialiser.html +++ b/docs/classes/Deserialiser.html @@ -1,4 +1,4 @@ -Deserialiser | @iiif/3d-manifesto-dev

Constructors

constructor +Deserialiser | @iiif/3d-manifesto-dev

Constructors

Methods

\ No newline at end of file +

Constructors

Methods

\ No newline at end of file diff --git a/docs/classes/Duration.html b/docs/classes/Duration.html index 5d2388a3..dace9543 100644 --- a/docs/classes/Duration.html +++ b/docs/classes/Duration.html @@ -1,5 +1,5 @@ -Duration | @iiif/3d-manifesto-dev

Constructors

constructor +Duration | @iiif/3d-manifesto-dev

Constructors

Properties

Methods

Constructors

Properties

end: number
start: number

Methods

\ No newline at end of file +

Constructors

Properties

end: number
start: number

Methods

\ No newline at end of file diff --git a/docs/classes/IIIFResource.html b/docs/classes/IIIFResource.html index 82e73b1a..80c19899 100644 --- a/docs/classes/IIIFResource.html +++ b/docs/classes/IIIFResource.html @@ -1,4 +1,4 @@ -IIIFResource | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

constructor +IIIFResource | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

Properties

Constructors

Properties

__jsonld: any
context: string
defaultTree: TreeNode
externalResource: IExternalResource
id: string
index: number = -1
isLoaded: boolean = false
parentCollection: Collection
parentLabel: string

Methods

  • returns the PropertyValue which in turn allows a language-specific string +

Constructors

Properties

__jsonld: any
context: string
defaultTree: TreeNode
externalResource: IExternalResource
id: string
index: number = -1
isLoaded: boolean = false
parentCollection: Collection
parentLabel: string

Methods

  • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

    Returns PropertyValue

    Example

    var label = manifest.getLabel().getValue(); // returns the string for default locale
     

    Example

    var label = manifest.getLabel().getValue(locale); // locale a string , examples
    // would be "fr", "en-US",
    -
  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -57,4 +57,4 @@

    Example

    var
     
-

Parameters

  • name: string

Returns any

\ No newline at end of file +

Parameters

  • name: string

Returns any

\ No newline at end of file diff --git a/docs/classes/JSONLDResource.html b/docs/classes/JSONLDResource.html index 91d236eb..507cc6cb 100644 --- a/docs/classes/JSONLDResource.html +++ b/docs/classes/JSONLDResource.html @@ -1,10 +1,10 @@ -JSONLDResource | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

constructor +JSONLDResource | @iiif/3d-manifesto-dev

Hierarchy (view full)

Constructors

Properties

__jsonld: any
context: string
id: string

Methods

  • A function that wraps the getProperty function, which client +

Constructors

Properties

__jsonld: any
context: string
id: string

Methods

  • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

    If the value of the json value is a bare string, then it will be @@ -15,4 +15,4 @@

    -

    Parameters

    • name: string

    Returns any

\ No newline at end of file +

Parameters

  • name: string

Returns any

\ No newline at end of file diff --git a/docs/classes/LabelValuePair.html b/docs/classes/LabelValuePair.html index 42a085c7..cc27bf2e 100644 --- a/docs/classes/LabelValuePair.html +++ b/docs/classes/LabelValuePair.html @@ -1,4 +1,4 @@ -LabelValuePair | @iiif/3d-manifesto-dev

Constructors

constructor +LabelValuePair | @iiif/3d-manifesto-dev

Constructors

Properties

Constructors

Properties

defaultLocale: string
label: null | PropertyValue
resource: any
value: null | PropertyValue

Methods

  • Parameters

    • Optional locale: string | string[]

    Returns null | string

  • Parameters

    • Optional locale: string | string[]
    • joinWith: string = "<br/>"

    Returns null | string

  • Parameters

    • Optional locale: string | string[]

    Returns (null | string)[]

\ No newline at end of file +

Constructors

Properties

defaultLocale: string
label: null | PropertyValue
resource: any
value: null | PropertyValue

Methods

  • Parameters

    • Optional locale: string | string[]

    Returns null | string

  • Parameters

    • Optional locale: string | string[]
    • joinWith: string = "<br/>"

    Returns null | string

  • Parameters

    • Optional locale: string | string[]

    Returns (null | string)[]

\ No newline at end of file diff --git a/docs/classes/LanguageMap.html b/docs/classes/LanguageMap.html index 7d5ec282..a2ab5c7e 100644 --- a/docs/classes/LanguageMap.html +++ b/docs/classes/LanguageMap.html @@ -1,5 +1,5 @@ LanguageMap | @iiif/3d-manifesto-dev

Deprecated

Use PropertyValue instead

-

Hierarchy

  • Array<Language>
    • LanguageMap

Constructors

Hierarchy

  • Array<Language>
    • LanguageMap

Constructors

Properties

[unscopables] length [species] @@ -196,7 +196,7 @@
  • mapfn: ((v, k) => U)

    A mapping function to call on every element of the array.

      • (v, k): U
      • Parameters

        • v: T
        • k: number

        Returns U

  • Optional thisArg: any

    Value of 'this' used to invoke the mapfn.

  • Returns U[]

    • Parameters

      Returns null | string

      Deprecated

      Use the PropertyValue#getValue instance method instead

      -
    • Parameters

      Returns (null | string)[]

      Deprecated

      Use the PropertyValue#getValues instance method instead

      -
    • Parameters

      • arg: any

      Returns arg is any[]

    • Parameters

      Returns (null | string)[]

      Deprecated

      Use the PropertyValue#getValues instance method instead

      +
    • Parameters

      • arg: any

      Returns arg is any[]

    • Returns a new array from a set of elements.

      Type Parameters

      • T

      Parameters

      • Rest ...items: T[]

        A set of elements to include in the new array object.

      Returns T[]

    \ No newline at end of file diff --git a/docs/classes/Light.html b/docs/classes/Light.html index 51ab70b8..6cc99e3d 100644 --- a/docs/classes/Light.html +++ b/docs/classes/Light.html @@ -5,7 +5,7 @@ a light, camera, or model, or a SpecificResource object wrapping a light, camera, or model. *

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    isAnnotationBody: boolean = true
    isCamera: boolean = false
    isLight: boolean = false
    isModel: boolean = true
    isSpecificResource: boolean = false

    Accessors

    • get Angle(): undefined | number
    • Returns undefined | number

    Methods

    • As defined in the temp-draft-4.md ( +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    isAnnotationBody: boolean = true
    isCamera: boolean = false
    isLight: boolean = false
    isModel: boolean = true
    isSpecificResource: boolean = false

    Accessors

    • get Angle(): undefined | number
    • Returns undefined | number

    Methods

    • As defined in the temp-draft-4.md ( https://github.com/IIIF/3d/blob/main/temp-draft-4.md#lights ; 12 May 2024) this quantity is the half-angle of the cone of the spotlight.

      The inconsistency between this definition of the angle and the definition of @@ -60,7 +60,7 @@

      provisional decision is to return undefined in case that this property is accessed in a light that is not a spotlight

      Returns undefined | number

      number

      -
    • The implementation of the intensity is based on +

    • The implementation of the intensity is based on temp-draft-4.md and the example 3D manifests lights @@ -70,15 +70,15 @@ and it will be assumed that a relative unit value of 1.0 corresponds to the brightest light source a rendering engine supports.

      This code will implement a default intensity of 1.0

      -

      Returns number

    • returns the PropertyValue which in turn allows a language-specific string +

      Returns number

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • Returns null | object | PointSelector

      : if not null, is either a PointSelector, or an object with an id matching the id of an Annotation instance.

      -
    • A function that wraps the getProperty function, which client +

    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -89,4 +89,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/LocalizedValue.html b/docs/classes/LocalizedValue.html index 27c000d9..0e0d2506 100644 --- a/docs/classes/LocalizedValue.html +++ b/docs/classes/LocalizedValue.html @@ -1,5 +1,5 @@ LocalizedValue | @iiif/3d-manifesto-dev

    Utility class to hold one or more values with their associated (optional) locale

    -

    Implements

    • default

    Constructors

    Implements

    • default

    Constructors

    Properties

    _defaultLocale _locale? _value @@ -7,15 +7,15 @@ value

    Methods

    Constructors

    Properties

    _defaultLocale: string
    _locale?: string
    _value: string | string[]

    Accessors

    • get locale(): string
      • +

    Constructors

    Properties

    _defaultLocale: string
    _locale?: string
    _value: string | string[]

    Accessors

    • get locale(): string

      Returns string

      Deprecated

      Don't use, only used for backwards compatibility reasons

      -
    • get value(): string

      Returns string

      Deprecated

      Use PropertyValue#getValue instead

      -

    Methods

    Methods

    • Parse a localized value from a IIIF v2 property value

      Parameters

      • rawVal: any

        value from IIIF resource

      • Optional defaultLocale: string

        deprecated: defaultLocale the default locale to use for this value

        -

      Returns null | LocalizedValue

    \ No newline at end of file +

    Returns null | LocalizedValue

    \ No newline at end of file diff --git a/docs/classes/Manifest.html b/docs/classes/Manifest.html index 2a75e523..ee2dbf55 100644 --- a/docs/classes/Manifest.html +++ b/docs/classes/Manifest.html @@ -3,7 +3,7 @@

    See

    Sequence

    Example

    var manifest: Manifest;
    function doSomethingWithScene(scene:Scene)...
    ...
    foreach(var seq:Sequence of manifest.getSequences()
    foreach(var scene : Scene of seq.getScenes()
    doSomethingWithScene(scene);
    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    __jsonld _allRanges _annotationIdMap @@ -68,7 +68,7 @@

    Example

    varisScene
     isSequence
     load
    -

    Constructors

    Properties

    __jsonld: any
    _allRanges: null | Range[] = null
    _annotationIdMap: any
    _topRanges: Range[] = []
    context: string
    defaultTree: TreeNode
    externalResource: IExternalResource
    id: string
    index: number = 0
    isLoaded: boolean = false
    items: Sequence[] = []
    parentCollection: Collection
    parentLabel: string

    Accessors

    • get annotationIdMap(): Object
    • Developer Note: The concept of the "id map" appear in the +

    Constructors

    Properties

    __jsonld: any
    _allRanges: null | Range[] = null
    _annotationIdMap: any
    _topRanges: Range[] = []
    context: string
    defaultTree: TreeNode
    externalResource: IExternalResource
    id: string
    index: number = 0
    isLoaded: boolean = false
    items: Sequence[] = []
    parentCollection: Collection
    parentLabel: string

    Accessors

    • get annotationIdMap(): Object
    • Developer Note: The concept of the "id map" appear in the JSON-LD specification https://www.w3.org/TR/json-ld11/#dfn-id-map This functionality may be available as well in the 'nodeMap' code of the digitalbazaar/jsonld library

      @@ -76,14 +76,14 @@

      Example

      var
       

      THe annotationIdMap is a Javascript object whose property names are IRI (id values) and property values are instances of the Annotation class

      -

      Returns Object

    Methods

    • Parameters

      • r: any
      • path: string
      • Optional parentRange: Range

      Returns void

    Methods

    • Parameters

      • r: any
      • path: string
      • Optional parentRange: Range

      Returns void

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -94,5 +94,5 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    • Returns null | ViewingDirection

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    • Returns null | ViewingDirection

    \ No newline at end of file diff --git a/docs/classes/ManifestResource.html b/docs/classes/ManifestResource.html index 3a4f7a26..b68393eb 100644 --- a/docs/classes/ManifestResource.html +++ b/docs/classes/ManifestResource.html @@ -1,4 +1,4 @@ -ManifestResource | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +ManifestResource | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Methods

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Methods

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -41,4 +41,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/PointSelector.html b/docs/classes/PointSelector.html index 829624f0..2e652ac5 100644 --- a/docs/classes/PointSelector.html +++ b/docs/classes/PointSelector.html @@ -1,4 +1,4 @@ -PointSelector | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +PointSelector | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    __jsonld context id @@ -7,11 +7,11 @@

    Methods

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isPointSelector: boolean = true

    Accessors

    • get Location(): Vector3
    • Returns Vector3

      the 3D coordinates of the point as a Vector3 instance. +

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isPointSelector: boolean = true

    Accessors

    • get Location(): Vector3
    • Returns Vector3

      the 3D coordinates of the point as a Vector3 instance. *

      -

    Methods

    • Returns Vector3

      the 3D coordinates of the point as a Vector3 instance. +

    Methods

    • Returns Vector3

      the 3D coordinates of the point as a Vector3 instance. *

      -
    • A function that wraps the getProperty function, which client +

    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -22,4 +22,4 @@

      -

      Parameters

      • name: string

      Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/PropertyValue.html b/docs/classes/PropertyValue.html index a7f77931..82e3f812 100644 --- a/docs/classes/PropertyValue.html +++ b/docs/classes/PropertyValue.html @@ -1,7 +1,7 @@ PropertyValue | @iiif/3d-manifesto-dev

    Holds a collection of values and their (optional) languages and allows language-based value retrieval as per the algorithm described in https://iiif.io/api/presentation/2.1/#language-of-property-values

    -

    Hierarchy

    Constructors

    Hierarchy

    Constructors

    Properties

    Constructors

    Properties

    [unscopables]: {
        [unscopables]?: boolean;
        length?: boolean;
        [iterator]?: any;
        at?: any;
        concat?: any;
        copyWithin?: any;
        entries?: any;
        every?: any;
        fill?: any;
        filter?: any;
        find?: any;
        findIndex?: any;
        flat?: any;
        flatMap?: any;
        forEach?: any;
        includes?: any;
        indexOf?: any;
        join?: any;
        keys?: any;
        lastIndexOf?: any;
        map?: any;
        pop?: any;
        push?: any;
        reduce?: any;
        reduceRight?: any;
        reverse?: any;
        shift?: any;
        slice?: any;
        some?: any;
        sort?: any;
        splice?: any;
        toLocaleString?: any;
        toString?: any;
        unshift?: any;
        values?: any;
    }

    Is an object whose properties have the value 'true' +

    Constructors

    Properties

    [unscopables]: {
        [unscopables]?: boolean;
        length?: boolean;
        [iterator]?: any;
        at?: any;
        concat?: any;
        copyWithin?: any;
        entries?: any;
        every?: any;
        fill?: any;
        filter?: any;
        find?: any;
        findIndex?: any;
        flat?: any;
        flatMap?: any;
        forEach?: any;
        includes?: any;
        indexOf?: any;
        join?: any;
        keys?: any;
        lastIndexOf?: any;
        map?: any;
        pop?: any;
        push?: any;
        reduce?: any;
        reduceRight?: any;
        reverse?: any;
        shift?: any;
        slice?: any;
        some?: any;
        sort?: any;
        splice?: any;
        toLocaleString?: any;
        toString?: any;
        unshift?: any;
        values?: any;
    }

    Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement.

    Type declaration

    • Optional Readonly [unscopables]?: boolean

      Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement.

    • Optional length?: boolean

      Gets or sets the length of the array. This is a number one higher than the highest index in the array.

      -
    _defaultLocale?: string
    length: number

    Gets or sets the length of the array. This is a number one higher than the highest index in the array.

    +
    _defaultLocale?: string
    length: number

    Gets or sets the length of the array. This is a number one higher than the highest index in the array.

    [species]: ArrayConstructor

    Methods

    • Iterator

      Returns IterableIterator<LocalizedValue>

    • Takes an integer value and returns the item at that index, allowing for positive and negative integers. @@ -125,17 +125,17 @@

    Returns void

      • Try to find the available locale that best fit's the user's preferences.
      -

      Parameters

      • locales: string[]

      Returns undefined | string

    • Get a value in the most suitable locale.

      +

      Parameters

      • locales: string[]

      Returns undefined | string

    • Get a value in the most suitable locale.

      Parameters

      • Optional locales: string | string[]

        Desired locale, can be a list of locales sorted by descending priority.

      • Optional joinWith: string

        String to join multiple available values by, if undefined only the first available value will be returned

      Returns null | string

      the first value in the most suitable locale or null if none could be found

      -
    • Get all values available in the most suitable locale.

      +
    • Get all values available in the most suitable locale.

      Parameters

      • Optional userLocales: string | string[]

        Desired locale, can be a list of locales sorted by descending priority.

      Returns string[]

      the values for the most suitable locale, empty if none could be found

      -
    • Determines whether an array includes a certain element, returning true or false as appropriate.

      +
    • Determines whether an array includes a certain element, returning true or false as appropriate.

      Parameters

      • searchElement: LocalizedValue

        The element to search for.

      • Optional fromIndex: number

        The position in this array at which to begin searching for searchElement.

      Returns boolean

    • Returns the index of the first occurrence of a value in an array, or -1 if it is not present.

      @@ -170,7 +170,7 @@

      If there's an existing locale that matches the given locale, it will be updated.

      Parameters

      • value: string | string[]

        value to set

      • Optional locale: string

        Locale to set the value for

        -

      Returns void

    • Removes the first element from an array and returns it. +

    Returns void

    • Removes the first element from an array and returns it. If the array is empty, undefined is returned and the array is not modified.

      Returns undefined | LocalizedValue

    • Returns a copy of a section of an array. For both start and end, a negative index can be used to indicate an offset from the end of the array. @@ -220,4 +220,4 @@

        • (v, k): U
        • Parameters

          • v: T
          • k: number

          Returns U

    • Optional thisArg: any

      Value of 'this' used to invoke the mapfn.

    Returns U[]

    • Parameters

      • arg: any

      Returns arg is any[]

    • Returns a new array from a set of elements.

      Type Parameters

      • T

      Parameters

      • Rest ...items: T[]

        A set of elements to include in the new array object.

        -

      Returns T[]

    \ No newline at end of file +

    Returns T[]

    \ No newline at end of file diff --git a/docs/classes/Range.html b/docs/classes/Range.html index 368bf591..6594f32d 100644 --- a/docs/classes/Range.html +++ b/docs/classes/Range.html @@ -1,4 +1,4 @@ -Range | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +Range | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    _ranges: null | Range[] = null
    canvases: null | string[] = null
    context: string
    externalResource: IExternalResource
    id: string
    items: ManifestResource[] = []
    parentRange: undefined | Range
    path: string
    treeNode: TreeNode

    Methods

    • Returns null | Behavior

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    _ranges: null | Range[] = null
    canvases: null | string[] = null
    context: string
    externalResource: IExternalResource
    id: string
    items: ManifestResource[] = []
    parentRange: undefined | Range
    path: string
    treeNode: TreeNode

    Methods

    • Returns null | Behavior

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -56,4 +56,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    • Returns null | ViewingDirection

    • Returns null | ViewingHint

    • Parameters

      • time: number

      Returns boolean

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    • Returns null | ViewingDirection

    • Returns null | ViewingHint

    • Parameters

      • time: number

      Returns boolean

    \ No newline at end of file diff --git a/docs/classes/Rendering.html b/docs/classes/Rendering.html index 810f3e93..c2bcdd66 100644 --- a/docs/classes/Rendering.html +++ b/docs/classes/Rendering.html @@ -1,4 +1,4 @@ -Rendering | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +Rendering | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Methods

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Methods

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -42,4 +42,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/Resource.html b/docs/classes/Resource.html index 99a62ada..4c3cfef6 100644 --- a/docs/classes/Resource.html +++ b/docs/classes/Resource.html @@ -1,4 +1,4 @@ -Resource | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +Resource | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    index: number

    Methods

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    index: number

    Methods

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -49,4 +49,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    • Returns null | ExternalResourceType

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    • Returns null | ExternalResourceType

    \ No newline at end of file diff --git a/docs/classes/RotateTransform.html b/docs/classes/RotateTransform.html index ff215321..2a933bcf 100644 --- a/docs/classes/RotateTransform.html +++ b/docs/classes/RotateTransform.html @@ -1,4 +1,4 @@ -RotateTransform | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +RotateTransform | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    __jsonld context id @@ -10,7 +10,7 @@

    Methods

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Accessors

    Methods

    • A function that wraps the getProperty function, which client +

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Accessors

    Methods

    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -21,4 +21,4 @@

      -

      Parameters

      • name: string

      Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/ScaleTransform.html b/docs/classes/ScaleTransform.html index c7582837..1e3d9675 100644 --- a/docs/classes/ScaleTransform.html +++ b/docs/classes/ScaleTransform.html @@ -1,4 +1,4 @@ -ScaleTransform | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +ScaleTransform | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    __jsonld context id @@ -9,7 +9,7 @@

    Methods

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Methods

    • A function that wraps the getProperty function, which client +

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Methods

    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -20,4 +20,4 @@

      -

      Parameters

      • name: string

      Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/Scene.html b/docs/classes/Scene.html index f27521e3..719dcc2c 100644 --- a/docs/classes/Scene.html +++ b/docs/classes/Scene.html @@ -1,4 +1,4 @@ -Scene | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +Scene | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Accessors

    Methods

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Accessors

    Methods

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -45,4 +45,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/Sequence.html b/docs/classes/Sequence.html index cc7b98a5..4f731aa8 100644 --- a/docs/classes/Sequence.html +++ b/docs/classes/Sequence.html @@ -1,4 +1,4 @@ -Sequence | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +Sequence | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    _thumbnails: null | Thumbnail[] = null
    context: string
    externalResource: IExternalResource
    id: string
    items: Canvas[] = []

    Methods

    • Parameters

      • canvasIndex: number

      Returns any

    • Parameters

      • id: string

      Returns null | number

    • Parameters

      • label: string
      • Optional foliated: boolean

      Returns number

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    _thumbnails: null | Thumbnail[] = null
    context: string
    externalResource: IExternalResource
    id: string
    items: Canvas[] = []

    Methods

    • Parameters

      • canvasIndex: number

      Returns any

    • Parameters

      • id: string

      Returns null | number

    • Parameters

      • label: string
      • Optional foliated: boolean

      Returns number

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • Parameters

      • Optional alphanumeric: boolean

      Returns string

    • Parameters

      • canvasIndex: number
      • Optional pagingEnabled: boolean

      Returns number

    • Parameters

      • canvasIndex: number
      • Optional pagingEnabled: boolean

      Returns number[]

    • Parameters

      • canvasIndex: number
      • Optional pagingEnabled: boolean

      Returns number

    • Parameters

      • Optional alphanumeric: boolean

      Returns string

    • Parameters

      • canvasIndex: number
      • Optional pagingEnabled: boolean

      Returns number

    • Parameters

      • canvasIndex: number
      • Optional pagingEnabled: boolean

      Returns number[]

    • Parameters

      • canvasIndex: number
      • Optional pagingEnabled: boolean

      Returns number

    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -67,5 +67,5 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    • Returns null | ViewingDirection

    • Parameters

      • canvasIndex: number

      Returns boolean

    • Parameters

      • canvasIndex: number

      Returns boolean

    • Parameters

      • canvasIndex: number

      Returns boolean

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    • Returns null | ViewingDirection

    • Parameters

      • canvasIndex: number

      Returns boolean

    • Parameters

      • canvasIndex: number

      Returns boolean

    • Parameters

      • canvasIndex: number

      Returns boolean

    \ No newline at end of file diff --git a/docs/classes/Service.html b/docs/classes/Service.html index 3c947572..f0f2f824 100644 --- a/docs/classes/Service.html +++ b/docs/classes/Service.html @@ -1,4 +1,4 @@ -Service | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +Service | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Methods

    • Returns null | string

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string

    Methods

    • Returns null | string

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -49,4 +49,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/Size.html b/docs/classes/Size.html index b16105fc..dbfb0075 100644 --- a/docs/classes/Size.html +++ b/docs/classes/Size.html @@ -1,4 +1,4 @@ -Size | @iiif/3d-manifesto-dev

    Constructors

    constructor +Size | @iiif/3d-manifesto-dev

    Constructors

    Properties

    Constructors

    Properties

    height: number
    width: number
    \ No newline at end of file +

    Constructors

    Properties

    height: number
    width: number
    \ No newline at end of file diff --git a/docs/classes/SpecificResource.html b/docs/classes/SpecificResource.html index 0e06c4bf..a927ff66 100644 --- a/docs/classes/SpecificResource.html +++ b/docs/classes/SpecificResource.html @@ -4,7 +4,7 @@ section 4 : https://www.w3.org/TR/annotation-model/#specific-resources

    The getTransform() method returning an Array of 3D Transfom resources, is an extension of SpecificResource beyond the web annotation model.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    isAnnotationBody: boolean = false
    isSpecificResource: boolean = true

    Accessors

    Methods

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    isAnnotationBody: boolean = false
    isSpecificResource: boolean = true

    Accessors

    Methods

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -55,4 +55,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/TextualBody.html b/docs/classes/TextualBody.html new file mode 100644 index 00000000..533a2a9d --- /dev/null +++ b/docs/classes/TextualBody.html @@ -0,0 +1,66 @@ +TextualBody | @iiif/3d-manifesto-dev

    An implementation of the TextualBody class (class in JSON-LD sense) +as it is described in Web Annotation Data Model Section 3.2.4 +https://www.w3.org/TR/annotation-model/#embedded-textual-body +*

    +

    Hierarchy (view full)

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    isAnnotationBody: boolean = true
    isCamera: boolean = false
    isLight: boolean = false
    isModel: boolean = true
    isSpecificResource: boolean = false

    Accessors

    • get Value(): string
    • The simple string that is the data content of this resource +will return empty string as a default value +*

      +

      Returns string

    • get isTextualBody(): boolean
    • identify an instance of this typescript as representing a resource +having these json-ld Class relationships. +*

      +

      Returns boolean

    Methods

    • returns the PropertyValue which in turn allows a language-specific string +encoded in the json as the "label" property

      +

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
      +
      +

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US", +
      +
    • A function that wraps the getProperty function, which client +code can use if it is needed to identify when the json value of +a property is an IRI -- Internationalized Resource Identifier

      +

      If the value of the json value is a bare string, then it will be +wrapped in a json object with the string in the property 'id', +additionally that property will have a property 'isIRI' which will +be true for the literal string case, otherwise false meaning the +returned getProperty should be parsed as before.

      +
        +
      • +
      +

      Parameters

      • name: string

      Returns any

    \ No newline at end of file diff --git a/docs/classes/Thumb.html b/docs/classes/Thumb.html index 62343c44..f97ca74f 100644 --- a/docs/classes/Thumb.html +++ b/docs/classes/Thumb.html @@ -1,4 +1,4 @@ -Thumb | @iiif/3d-manifesto-dev

    Constructors

    constructor +Thumb | @iiif/3d-manifesto-dev

    Constructors

    Properties

    Constructors

    Properties

    data: any
    height: number
    index: number
    label: string
    uri: string
    viewingHint: null | ViewingHint
    visible: boolean
    width: number
    \ No newline at end of file +

    Constructors

    Properties

    data: any
    height: number
    index: number
    label: string
    uri: string
    viewingHint: null | ViewingHint
    visible: boolean
    width: number
    \ No newline at end of file diff --git a/docs/classes/Thumbnail.html b/docs/classes/Thumbnail.html index d88ad833..74e6e116 100644 --- a/docs/classes/Thumbnail.html +++ b/docs/classes/Thumbnail.html @@ -1,4 +1,4 @@ -Thumbnail | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +Thumbnail | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    index: number

    Methods

    • returns the PropertyValue which in turn allows a language-specific string +

    Constructors

    Properties

    __jsonld: any
    context: string
    externalResource: IExternalResource
    id: string
    index: number

    Methods

    • returns the PropertyValue which in turn allows a language-specific string encoded in the json as the "label" property

      Returns PropertyValue

      Example

      var label = manifest.getLabel().getValue(); // returns the string for default locale
       

      Example

      var label = manifest.getLabel().getValue(locale); // locale a string , examples
      // would be "fr", "en-US",
      -
    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -49,4 +49,4 @@

      Example

      var
       
    -

    Parameters

    • name: string

    Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/Transform.html b/docs/classes/Transform.html index 87d30f66..b93ce1de 100644 --- a/docs/classes/Transform.html +++ b/docs/classes/Transform.html @@ -1,4 +1,4 @@ -Transform | @iiif/3d-manifesto-dev

    Class TransformAbstract

    Hierarchy (view full)

    Constructors

    constructor +Transform | @iiif/3d-manifesto-dev

    Class TransformAbstract

    Hierarchy (view full)

    Constructors

    Properties

    Methods

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Methods

    • A function that wraps the getProperty function, which client +

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Methods

    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -19,4 +19,4 @@

      -

      Parameters

      • name: string

      Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/TransformParser.html b/docs/classes/TransformParser.html index 446e1bf5..802f9b24 100644 --- a/docs/classes/TransformParser.html +++ b/docs/classes/TransformParser.html @@ -1,3 +1,3 @@ -TransformParser | @iiif/3d-manifesto-dev

    Constructors

    constructor +TransformParser | @iiif/3d-manifesto-dev

    Constructors

    Methods

    Constructors

    Methods

    \ No newline at end of file +

    Constructors

    Methods

    \ No newline at end of file diff --git a/docs/classes/TranslateTransform.html b/docs/classes/TranslateTransform.html index a34ac758..56c20100 100644 --- a/docs/classes/TranslateTransform.html +++ b/docs/classes/TranslateTransform.html @@ -1,4 +1,4 @@ -TranslateTransform | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    constructor +TranslateTransform | @iiif/3d-manifesto-dev

    Hierarchy (view full)

    Constructors

    Properties

    __jsonld context id @@ -9,7 +9,7 @@

    Methods

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Methods

    • A function that wraps the getProperty function, which client +

    Constructors

    Properties

    __jsonld: any
    context: string
    id: string
    isRotateTransform: undefined | boolean
    isScaleTransform: undefined | boolean
    isTransform: boolean = true
    isTranslateTransform: undefined | boolean

    Methods

    • A function that wraps the getProperty function, which client code can use if it is needed to identify when the json value of a property is an IRI -- Internationalized Resource Identifier

      If the value of the json value is a bare string, then it will be @@ -20,4 +20,4 @@

      -

      Parameters

      • name: string

      Returns any

    \ No newline at end of file +

    Parameters

    • name: string

    Returns any

    \ No newline at end of file diff --git a/docs/classes/TreeNode.html b/docs/classes/TreeNode.html index be581c94..ca828623 100644 --- a/docs/classes/TreeNode.html +++ b/docs/classes/TreeNode.html @@ -1,4 +1,4 @@ -TreeNode | @iiif/3d-manifesto-dev

    Constructors

    constructor +TreeNode | @iiif/3d-manifesto-dev

    Constructors

    Properties

    Constructors

    Properties

    data: any
    expanded: boolean
    id: string
    label: string
    navDate: Date
    nodes: TreeNode[]
    parentNode: TreeNode
    selected: boolean

    Methods

    \ No newline at end of file +

    Constructors

    Properties

    data: any
    expanded: boolean
    id: string
    label: string
    navDate: Date
    nodes: TreeNode[]
    parentNode: TreeNode
    selected: boolean

    Methods

    \ No newline at end of file diff --git a/docs/classes/Utils.html b/docs/classes/Utils.html index 23c24436..9159e7a6 100644 --- a/docs/classes/Utils.html +++ b/docs/classes/Utils.html @@ -1,4 +1,4 @@ -Utils | @iiif/3d-manifesto-dev

    Constructors

    constructor +Utils | @iiif/3d-manifesto-dev

    Constructors

    Methods

    • Parameters

      • resource: IExternalResource
      • tokenStorageStrategy: string
      • clickThrough: ((resource) => Promise<any>)
      • restricted: ((resource) => Promise<any>)
      • login: ((resource) => Promise<any>)
      • getAccessToken: ((resource, rejectOnError) => Promise<IAccessToken>)
      • storeAccessToken: ((resource, token, tokenStorageStrategy) => Promise<any>)
          • (resource, token, tokenStorageStrategy): Promise<any>
          • Parameters

            Returns Promise<any>

      • getStoredAccessToken: ((resource, tokenStorageStrategy) => Promise<IAccessToken>)

      Returns Promise<IExternalResource>

    • Parameters

      • response: any

      Returns any

    • Parameters

      • message: string

      Returns Error

    • Parameters

      • resource: IExternalResource
      • openContentProviderInteraction: ((service) => any)
          • (service): any
          • Parameters

            Returns any

      • openTokenService: ((resource, tokenService) => Promise<any>)
      • userInteractedWithContentProvider: ((contentProviderInteraction) => Promise<any>)
          • (contentProviderInteraction): Promise<any>
          • Parameters

            • contentProviderInteraction: any

            Returns Promise<any>

      • getContentProviderInteraction: ((resource, service) => Promise<any>)
      • handleMovedTemporarily: ((resource) => Promise<any>)
      • showOutOfOptionsMessages: ((resource, service) => void)

      Returns Promise<void | IExternalResource>

    • Parameters

      Returns void

    • Parameters

      • profile: ServiceProfile

      Returns string

    • Parameters

      • locale: string

      Returns string

    • Parameters

      • resource: any
      • locale: string

      Returns null | string

    • Parameters

      • type: string

      Returns MediaType

    • Parameters

      • resource: any
      • __namedParameters: {
            onlyService?: boolean;
            onlyServices?: boolean;
            skipParentResources?: boolean;
        } = {}
        • Optional onlyService?: boolean
        • Optional onlyServices?: boolean
        • Optional skipParentResources?: boolean

      Returns Service[]

    • Parameters

      • target: string

      Returns null | number[]

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • type: null | string

      Returns boolean

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • resource: IExternalResource
      • tokenStorageStrategy: string
      • clickThrough: ((resource) => Promise<any>)
      • restricted: ((resource) => Promise<any>)
      • login: ((resource) => Promise<any>)
      • getAccessToken: ((resource, rejectOnError) => Promise<IAccessToken>)
      • storeAccessToken: ((resource, token, tokenStorageStrategy) => Promise<any>)
          • (resource, token, tokenStorageStrategy): Promise<any>
          • Parameters

            Returns Promise<any>

      • getStoredAccessToken: ((resource, tokenStorageStrategy) => Promise<IAccessToken>)
      • handleResourceResponse: ((resource) => Promise<any>)
      • Optional options: IManifestoOptions

      Returns Promise<IExternalResource>

    • Parameters

      • resource: IExternalResource
      • openContentProviderInteraction: ((service) => any)
          • (service): any
          • Parameters

            Returns any

      • openTokenService: ((resource, tokenService) => Promise<void>)
      • getStoredAccessToken: ((resource) => Promise<null | IAccessToken>)
      • userInteractedWithContentProvider: ((contentProviderInteraction) => Promise<any>)
          • (contentProviderInteraction): Promise<any>
          • Parameters

            • contentProviderInteraction: any

            Returns Promise<any>

      • getContentProviderInteraction: ((resource, service) => Promise<any>)
      • handleMovedTemporarily: ((resource) => Promise<any>)
      • showOutOfOptionsMessages: ((resource, service) => void)

      Returns Promise<IExternalResource>

    • Parameters

      • resources: IExternalResource[]
      • tokenStorageStrategy: string
      • clickThrough: ((resource) => Promise<any>)
      • restricted: ((resource) => Promise<any>)
      • login: ((resource) => Promise<any>)
      • getAccessToken: ((resource, rejectOnError) => Promise<IAccessToken>)
      • storeAccessToken: ((resource, token, tokenStorageStrategy) => Promise<any>)
          • (resource, token, tokenStorageStrategy): Promise<any>
          • Parameters

            Returns Promise<any>

      • getStoredAccessToken: ((resource, tokenStorageStrategy) => Promise<IAccessToken>)
      • handleResourceResponse: ((resource) => Promise<any>)
      • Optional options: IManifestoOptions

      Returns Promise<IExternalResource[]>

    • Parameters

      • resources: IExternalResource[]
      • openContentProviderInteraction: ((service) => any)
          • (service): any
          • Parameters

            Returns any

      • openTokenService: ((resource, tokenService) => Promise<any>)
      • getStoredAccessToken: ((resource) => Promise<null | IAccessToken>)
      • userInteractedWithContentProvider: ((contentProviderInteraction) => Promise<any>)
          • (contentProviderInteraction): Promise<any>
          • Parameters

            • contentProviderInteraction: any

            Returns Promise<any>

      • getContentProviderInteraction: ((resource, service) => Promise<any>)
      • handleMovedTemporarily: ((resource) => Promise<any>)
      • showOutOfOptionsMessages: ((resource, service) => void)

      Returns Promise<IExternalResource[]>

    • Parameters

      • url: string

      Returns Promise<any>

    • Parameters

      • type: string

      Returns string

    • Parameters

      • url: string

      Returns string

    • Parameters

      • url1: string
      • url2: string

      Returns boolean

    • Parameters

      • resource: IExternalResource
      • tokenStorageStrategy: any
      • clickThrough: any
      • restricted: any
      • login: any
      • getAccessToken: any
      • storeAccessToken: any
      • resolve: any
      • reject: any

      Returns void

    • Does a depth first traversal of an Object, returning an Object that +

    Constructors

    Methods

    • Parameters

      • resource: IExternalResource
      • tokenStorageStrategy: string
      • clickThrough: ((resource) => Promise<any>)
      • restricted: ((resource) => Promise<any>)
      • login: ((resource) => Promise<any>)
      • getAccessToken: ((resource, rejectOnError) => Promise<IAccessToken>)
      • storeAccessToken: ((resource, token, tokenStorageStrategy) => Promise<any>)
          • (resource, token, tokenStorageStrategy): Promise<any>
          • Parameters

            Returns Promise<any>

      • getStoredAccessToken: ((resource, tokenStorageStrategy) => Promise<IAccessToken>)

      Returns Promise<IExternalResource>

    • Parameters

      • response: any

      Returns any

    • Parameters

      • message: string

      Returns Error

    • Parameters

      • resource: IExternalResource
      • openContentProviderInteraction: ((service) => any)
          • (service): any
          • Parameters

            Returns any

      • openTokenService: ((resource, tokenService) => Promise<any>)
      • userInteractedWithContentProvider: ((contentProviderInteraction) => Promise<any>)
          • (contentProviderInteraction): Promise<any>
          • Parameters

            • contentProviderInteraction: any

            Returns Promise<any>

      • getContentProviderInteraction: ((resource, service) => Promise<any>)
      • handleMovedTemporarily: ((resource) => Promise<any>)
      • showOutOfOptionsMessages: ((resource, service) => void)

      Returns Promise<void | IExternalResource>

    • Parameters

      Returns void

    • Parameters

      • profile: ServiceProfile

      Returns string

    • Parameters

      • locale: string

      Returns string

    • Parameters

      • resource: any
      • locale: string

      Returns null | string

    • Parameters

      • type: string

      Returns MediaType

    • Parameters

      • resource: any
      • __namedParameters: {
            onlyService?: boolean;
            onlyServices?: boolean;
            skipParentResources?: boolean;
        } = {}
        • Optional onlyService?: boolean
        • Optional onlyServices?: boolean
        • Optional skipParentResources?: boolean

      Returns Service[]

    • Parameters

      • target: string

      Returns null | number[]

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • type: null | string

      Returns boolean

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • profile: ServiceProfile

      Returns boolean

    • Parameters

      • resource: IExternalResource
      • tokenStorageStrategy: string
      • clickThrough: ((resource) => Promise<any>)
      • restricted: ((resource) => Promise<any>)
      • login: ((resource) => Promise<any>)
      • getAccessToken: ((resource, rejectOnError) => Promise<IAccessToken>)
      • storeAccessToken: ((resource, token, tokenStorageStrategy) => Promise<any>)
          • (resource, token, tokenStorageStrategy): Promise<any>
          • Parameters

            Returns Promise<any>

      • getStoredAccessToken: ((resource, tokenStorageStrategy) => Promise<IAccessToken>)
      • handleResourceResponse: ((resource) => Promise<any>)
      • Optional options: IManifestoOptions

      Returns Promise<IExternalResource>

    • Parameters

      • resource: IExternalResource
      • openContentProviderInteraction: ((service) => any)
          • (service): any
          • Parameters

            Returns any

      • openTokenService: ((resource, tokenService) => Promise<void>)
      • getStoredAccessToken: ((resource) => Promise<null | IAccessToken>)
      • userInteractedWithContentProvider: ((contentProviderInteraction) => Promise<any>)
          • (contentProviderInteraction): Promise<any>
          • Parameters

            • contentProviderInteraction: any

            Returns Promise<any>

      • getContentProviderInteraction: ((resource, service) => Promise<any>)
      • handleMovedTemporarily: ((resource) => Promise<any>)
      • showOutOfOptionsMessages: ((resource, service) => void)

      Returns Promise<IExternalResource>

    • Parameters

      • resources: IExternalResource[]
      • tokenStorageStrategy: string
      • clickThrough: ((resource) => Promise<any>)
      • restricted: ((resource) => Promise<any>)
      • login: ((resource) => Promise<any>)
      • getAccessToken: ((resource, rejectOnError) => Promise<IAccessToken>)
      • storeAccessToken: ((resource, token, tokenStorageStrategy) => Promise<any>)
          • (resource, token, tokenStorageStrategy): Promise<any>
          • Parameters

            Returns Promise<any>

      • getStoredAccessToken: ((resource, tokenStorageStrategy) => Promise<IAccessToken>)
      • handleResourceResponse: ((resource) => Promise<any>)
      • Optional options: IManifestoOptions

      Returns Promise<IExternalResource[]>

    • Parameters

      • resources: IExternalResource[]
      • openContentProviderInteraction: ((service) => any)
          • (service): any
          • Parameters

            Returns any

      • openTokenService: ((resource, tokenService) => Promise<any>)
      • getStoredAccessToken: ((resource) => Promise<null | IAccessToken>)
      • userInteractedWithContentProvider: ((contentProviderInteraction) => Promise<any>)
          • (contentProviderInteraction): Promise<any>
          • Parameters

            • contentProviderInteraction: any

            Returns Promise<any>

      • getContentProviderInteraction: ((resource, service) => Promise<any>)
      • handleMovedTemporarily: ((resource) => Promise<any>)
      • showOutOfOptionsMessages: ((resource, service) => void)

      Returns Promise<IExternalResource[]>

    • Parameters

      • url: string

      Returns Promise<any>

    • Parameters

      • type: string

      Returns string

    • Parameters

      • url: string

      Returns string

    • Parameters

      • url1: string
      • url2: string

      Returns boolean

    • Parameters

      • resource: IExternalResource
      • tokenStorageStrategy: any
      • clickThrough: any
      • restricted: any
      • login: any
      • getAccessToken: any
      • storeAccessToken: any
      • resolve: any
      • reject: any

      Returns void

    • Does a depth first traversal of an Object, returning an Object that matches provided k and v arguments

      Parameters

      • object: any
      • k: string
      • v: string

      Returns undefined | object

      Example

      Utils.traverseAndFind({foo: 'bar'}, 'foo', 'bar')
       
      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/enums/ManifestType.html b/docs/enums/ManifestType.html index 51484816..226bd391 100644 --- a/docs/enums/ManifestType.html +++ b/docs/enums/ManifestType.html @@ -1,4 +1,4 @@ -ManifestType | @iiif/3d-manifesto-dev

    Enumeration ManifestType

    Enumeration Members

    EMPTY +ManifestType | @iiif/3d-manifesto-dev

    Enumeration ManifestType

    Enumeration Members

    Enumeration Members

    EMPTY: ""
    MANUSCRIPT: "manuscript"
    MONOGRAPH: "monograph"
    \ No newline at end of file +

    Enumeration Members

    EMPTY: ""
    MANUSCRIPT: "manuscript"
    MONOGRAPH: "monograph"
    \ No newline at end of file diff --git a/docs/enums/StatusCode.html b/docs/enums/StatusCode.html index f2772b62..4a98e7ee 100644 --- a/docs/enums/StatusCode.html +++ b/docs/enums/StatusCode.html @@ -1,5 +1,5 @@ -StatusCode | @iiif/3d-manifesto-dev

    Enumeration StatusCode

    Enumeration Members

    AUTHORIZATION_FAILED +StatusCode | @iiif/3d-manifesto-dev

    Enumeration StatusCode

    Enumeration Members

    AUTHORIZATION_FAILED: 1
    FORBIDDEN: 2
    INTERNAL_SERVER_ERROR: 3
    RESTRICTED: 4
    \ No newline at end of file +

    Enumeration Members

    AUTHORIZATION_FAILED: 1
    FORBIDDEN: 2
    INTERNAL_SERVER_ERROR: 3
    RESTRICTED: 4
    \ No newline at end of file diff --git a/docs/enums/TreeNodeType.html b/docs/enums/TreeNodeType.html index 901924e7..73e3827a 100644 --- a/docs/enums/TreeNodeType.html +++ b/docs/enums/TreeNodeType.html @@ -1,4 +1,4 @@ -TreeNodeType | @iiif/3d-manifesto-dev

    Enumeration TreeNodeType

    Enumeration Members

    COLLECTION +TreeNodeType | @iiif/3d-manifesto-dev

    Enumeration TreeNodeType

    Enumeration Members

    Enumeration Members

    COLLECTION: "collection"
    MANIFEST: "manifest"
    RANGE: "range"
    \ No newline at end of file +

    Enumeration Members

    COLLECTION: "collection"
    MANIFEST: "manifest"
    RANGE: "range"
    \ No newline at end of file diff --git a/docs/functions/cameraRelativeRotation.html b/docs/functions/cameraRelativeRotation.html index 644a2923..54fb9059 100644 --- a/docs/functions/cameraRelativeRotation.html +++ b/docs/functions/cameraRelativeRotation.html @@ -12,4 +12,4 @@

    Parameters

    • direction: Vector3

      A vector interpreted as a direction. Client code responsible for not passing a 0-length vector, else a

    Returns Euler

    threejs-math.EulerAngle instance

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/eulerFromRotateTransform.html b/docs/functions/eulerFromRotateTransform.html index ff9768c1..c499f9d7 100644 --- a/docs/functions/eulerFromRotateTransform.html +++ b/docs/functions/eulerFromRotateTransform.html @@ -4,4 +4,4 @@

    Parameters

    • transform: RotateTransform

      : A object with a Rotation member object, properties x,y,z

    Returns Euler

    threejs-math.EulerAngle instance. From this threejs-math functionsa allow conversion to other rotation representations.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/lightRelativeRotation.html b/docs/functions/lightRelativeRotation.html index 075fbb73..fc998294 100644 --- a/docs/functions/lightRelativeRotation.html +++ b/docs/functions/lightRelativeRotation.html @@ -1 +1 @@ -lightRelativeRotation | @iiif/3d-manifesto-dev

    Function lightRelativeRotation

    • Parameters

      • direction: Vector3

      Returns Euler

    \ No newline at end of file +lightRelativeRotation | @iiif/3d-manifesto-dev

    Function lightRelativeRotation

    • Parameters

      • direction: Vector3

      Returns Euler

    \ No newline at end of file diff --git a/docs/functions/loadManifest.html b/docs/functions/loadManifest.html index f092fc2c..8e91b948 100644 --- a/docs/functions/loadManifest.html +++ b/docs/functions/loadManifest.html @@ -3,4 +3,4 @@

    Parameters

    • url: string

      string containing the URL to Fetch

    Returns Promise<any>

    Promise The object returned through the Promise is the javascript object obtained by deserializing the json text. *

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/parseManifest.html b/docs/functions/parseManifest.html index 9c7d7793..ff404204 100644 --- a/docs/functions/parseManifest.html +++ b/docs/functions/parseManifest.html @@ -2,4 +2,4 @@

    Parameters

    • manifest: any

      Either a string containing text of a manifest file or an javascript object obtained by deserializing by the JSON.parse function a manifest file.

    • Optional options: IManifestoOptions

    Returns null | IIIFResource

    instance of Manifest class. *

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index d9604960..2a9ee5b2 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -@iiif/3d-manifesto-dev
    \ No newline at end of file +@iiif/3d-manifesto-dev
    \ No newline at end of file diff --git a/docs/interfaces/IAccessToken.html b/docs/interfaces/IAccessToken.html index b3d66fae..d73281c4 100644 --- a/docs/interfaces/IAccessToken.html +++ b/docs/interfaces/IAccessToken.html @@ -1,6 +1,6 @@ -IAccessToken | @iiif/3d-manifesto-dev
    interface IAccessToken {
        accessToken: string;
        error: string;
        errorDescription: string;
        expiresIn: number;
        tokenType: string;
    }

    Properties

    accessToken +IAccessToken | @iiif/3d-manifesto-dev
    interface IAccessToken {
        accessToken: string;
        error: string;
        errorDescription: string;
        expiresIn: number;
        tokenType: string;
    }

    Properties

    accessToken: string
    error: string
    errorDescription: string
    expiresIn: number
    tokenType: string
    \ No newline at end of file +

    Properties

    accessToken: string
    error: string
    errorDescription: string
    expiresIn: number
    tokenType: string
    \ No newline at end of file diff --git a/docs/interfaces/IExternalImageResourceData.html b/docs/interfaces/IExternalImageResourceData.html index c953cbd1..f30a245d 100644 --- a/docs/interfaces/IExternalImageResourceData.html +++ b/docs/interfaces/IExternalImageResourceData.html @@ -1,8 +1,8 @@ -IExternalImageResourceData | @iiif/3d-manifesto-dev

    Interface IExternalImageResourceData

    interface IExternalImageResourceData {
        contentLocation: string;
        hasServiceDescriptor: boolean;
        height: number;
        id: string;
        index: number;
        profile: string | any[];
        width: number;
    }

    Hierarchy (view full)

    Properties

    contentLocation +IExternalImageResourceData | @iiif/3d-manifesto-dev

    Interface IExternalImageResourceData

    interface IExternalImageResourceData {
        contentLocation: string;
        hasServiceDescriptor: boolean;
        height: number;
        id: string;
        index: number;
        profile: string | any[];
        width: number;
    }

    Hierarchy (view full)

    Properties

    contentLocation: string
    hasServiceDescriptor: boolean
    height: number
    id: string
    index: number
    profile: string | any[]
    width: number
    \ No newline at end of file +

    Properties

    contentLocation: string
    hasServiceDescriptor: boolean
    height: number
    id: string
    index: number
    profile: string | any[]
    width: number
    \ No newline at end of file diff --git a/docs/interfaces/IExternalResource.html b/docs/interfaces/IExternalResource.html index bf77cfcc..c01fdc9e 100644 --- a/docs/interfaces/IExternalResource.html +++ b/docs/interfaces/IExternalResource.html @@ -1,4 +1,4 @@ -IExternalResource | @iiif/3d-manifesto-dev

    Interface IExternalResource

    interface IExternalResource {
        authAPIVersion: number;
        authHoldingPage: any;
        clickThroughService: null | Service;
        data: IExternalResourceData;
        dataUri: null | string;
        error: any;
        externalService: null | Service;
        height: number;
        index: number;
        isResponseHandled: boolean;
        kioskService: null | Service;
        loginService: null | Service;
        logoutService: null | Service;
        options?: IManifestoOptions;
        restrictedService: null | Service;
        status: number;
        tokenService: null | Service;
        width: number;
        getData(accessToken?): Promise<IExternalResource>;
        hasServiceDescriptor(): boolean;
        isAccessControlled(): boolean;
    }

    Properties

    authAPIVersion +IExternalResource | @iiif/3d-manifesto-dev

    Interface IExternalResource

    interface IExternalResource {
        authAPIVersion: number;
        authHoldingPage: any;
        clickThroughService: null | Service;
        data: IExternalResourceData;
        dataUri: null | string;
        error: any;
        externalService: null | Service;
        height: number;
        index: number;
        isResponseHandled: boolean;
        kioskService: null | Service;
        loginService: null | Service;
        logoutService: null | Service;
        options?: IManifestoOptions;
        restrictedService: null | Service;
        status: number;
        tokenService: null | Service;
        width: number;
        getData(accessToken?): Promise<IExternalResource>;
        hasServiceDescriptor(): boolean;
        isAccessControlled(): boolean;
    }

    Properties

    authAPIVersion: number
    authHoldingPage: any
    clickThroughService: null | Service
    dataUri: null | string
    error: any
    externalService: null | Service
    height: number
    index: number
    isResponseHandled: boolean
    kioskService: null | Service
    loginService: null | Service
    logoutService: null | Service
    restrictedService: null | Service
    status: number
    tokenService: null | Service
    width: number

    Methods

    \ No newline at end of file +

    Properties

    authAPIVersion: number
    authHoldingPage: any
    clickThroughService: null | Service
    dataUri: null | string
    error: any
    externalService: null | Service
    height: number
    index: number
    isResponseHandled: boolean
    kioskService: null | Service
    loginService: null | Service
    logoutService: null | Service
    restrictedService: null | Service
    status: number
    tokenService: null | Service
    width: number

    Methods

    \ No newline at end of file diff --git a/docs/interfaces/IExternalResourceData.html b/docs/interfaces/IExternalResourceData.html index 9c271ec0..804dc47c 100644 --- a/docs/interfaces/IExternalResourceData.html +++ b/docs/interfaces/IExternalResourceData.html @@ -1,6 +1,6 @@ -IExternalResourceData | @iiif/3d-manifesto-dev

    Interface IExternalResourceData

    interface IExternalResourceData {
        contentLocation: string;
        hasServiceDescriptor: boolean;
        id: string;
        index: number;
        profile: string | any[];
    }

    Hierarchy (view full)

    Properties

    contentLocation +IExternalResourceData | @iiif/3d-manifesto-dev

    Interface IExternalResourceData

    interface IExternalResourceData {
        contentLocation: string;
        hasServiceDescriptor: boolean;
        id: string;
        index: number;
        profile: string | any[];
    }

    Hierarchy (view full)

    Properties

    contentLocation: string
    hasServiceDescriptor: boolean
    id: string
    index: number
    profile: string | any[]
    \ No newline at end of file +

    Properties

    contentLocation: string
    hasServiceDescriptor: boolean
    id: string
    index: number
    profile: string | any[]
    \ No newline at end of file diff --git a/docs/interfaces/IExternalResourceOptions.html b/docs/interfaces/IExternalResourceOptions.html index 42ac17cb..de5028b3 100644 --- a/docs/interfaces/IExternalResourceOptions.html +++ b/docs/interfaces/IExternalResourceOptions.html @@ -1,2 +1,2 @@ -IExternalResourceOptions | @iiif/3d-manifesto-dev

    Interface IExternalResourceOptions

    interface IExternalResourceOptions {
        authApiVersion: number;
    }

    Properties

    Properties

    authApiVersion: number
    \ No newline at end of file +IExternalResourceOptions | @iiif/3d-manifesto-dev

    Interface IExternalResourceOptions

    interface IExternalResourceOptions {
        authApiVersion: number;
    }

    Properties

    Properties

    authApiVersion: number
    \ No newline at end of file diff --git a/docs/interfaces/IManifestoOptions.html b/docs/interfaces/IManifestoOptions.html index 3cfe4a3a..72b88c79 100644 --- a/docs/interfaces/IManifestoOptions.html +++ b/docs/interfaces/IManifestoOptions.html @@ -1,7 +1,7 @@ -IManifestoOptions | @iiif/3d-manifesto-dev

    Interface IManifestoOptions

    interface IManifestoOptions {
        defaultLabel: string;
        index?: number;
        locale: string;
        navDate?: Date;
        pessimisticAccessControl: boolean;
        resource: IIIFResource;
    }

    Properties

    defaultLabel +IManifestoOptions | @iiif/3d-manifesto-dev

    Interface IManifestoOptions

    interface IManifestoOptions {
        defaultLabel: string;
        index?: number;
        locale: string;
        navDate?: Date;
        pessimisticAccessControl: boolean;
        resource: IIIFResource;
    }

    Properties

    defaultLabel: string
    index?: number
    locale: string
    navDate?: Date
    pessimisticAccessControl: boolean
    resource: IIIFResource
    \ No newline at end of file +

    Properties

    defaultLabel: string
    index?: number
    locale: string
    navDate?: Date
    pessimisticAccessControl: boolean
    resource: IIIFResource
    \ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index cbaabb3e..a8e8c814 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -32,6 +32,7 @@ Service Size SpecificResource +TextualBody Thumb Thumbnail Transform diff --git a/src/Annotation.ts b/src/Annotation.ts index bd537d17..7d099b9d 100644 --- a/src/Annotation.ts +++ b/src/Annotation.ts @@ -5,7 +5,8 @@ import { IManifestoOptions, ManifestResource, Resource, - SpecificResource + SpecificResource, + TextualBody } from "./internal"; import { Vector3 } from "threejs-math"; @@ -23,6 +24,28 @@ export class Annotation extends ManifestResource { **/ getBody(): ( AnnotationBody | SpecificResource) [] { let bodies: ( AnnotationBody | SpecificResource)[] = []; + + /* + A bodyValue property in the annotation json will short circuit + the parsing process and be interpreted as a shorthand version of + a TextualBody resource defining as the body + + This procedure is allowed, see Web Annotation Data Model section 3.2.5 + https://www.w3.org/TR/annotation-model/#string-body + */ + + var stringBody : string | undefined = this.getProperty("bodyValue"); + //console.log("retrieved stringBody " + stringBody); + if (stringBody){ + return [new TextualBody( + { "id" : "https://example.com/TextualBody/1", + "value" : stringBody, + "type" : "TextualBody" + }, + this.options + )]; + } + const body: any = this.getProperty("body"); // the following is intended to handle the following cases for diff --git a/src/TextualBody.ts b/src/TextualBody.ts new file mode 100644 index 00000000..bb9e74fd --- /dev/null +++ b/src/TextualBody.ts @@ -0,0 +1,30 @@ +import { + IManifestoOptions, + AnnotationBody} from "./internal"; + +/** +An implementation of the TextualBody class (class in JSON-LD sense) +as it is described in Web Annotation Data Model Section 3.2.4 +https://www.w3.org/TR/annotation-model/#embedded-textual-body +**/ +export class TextualBody extends AnnotationBody { + constructor(jsonld?: any, options?: IManifestoOptions) { + super(jsonld, options); + this.isModel = false; + this.isLight = false; + this.isCamera = false; + } + +/** +identify an instance of this typescript as representing a resource +having these json-ld Class relationships. +**/ +get isTextualBody() : boolean { return true;} +get isText() : boolean {return true;} + +/** +The simple string that is the data content of this resource +will return empty string as a default value +**/ +get Value(): string {return this.getProperty("value") || "" ;} +} \ No newline at end of file diff --git a/src/internal.ts b/src/internal.ts index 2b454d83..80487c48 100644 --- a/src/internal.ts +++ b/src/internal.ts @@ -10,6 +10,7 @@ export * from "./SpecificResource"; export * from "./AnnotationBody"; export * from "./Light"; export * from "./Camera"; +export * from "./TextualBody"; export * from "./AnnotationBodyParser"; export * from "./Annotation"; diff --git a/test/index.js b/test/index.js index 2d168c08..e04538f8 100644 --- a/test/index.js +++ b/test/index.js @@ -148,6 +148,10 @@ function run_iiif3d_tests(){ importTest('orthographic_camera_lookat_point', './tests_3d/2_cameras/orthographic_camera_lookat_point.js'); }); + describe("xx_whale_comments" , function(){ + importTest('c_comments_with_camera', './tests_3d/xx_whale_comments/c_comment_annotation_camera.js'); + + }); } diff --git a/test/tests_3d/xx_whale_comments/c_comment_annotation_camera.js b/test/tests_3d/xx_whale_comments/c_comment_annotation_camera.js new file mode 100644 index 00000000..8ae3fcb6 --- /dev/null +++ b/test/tests_3d/xx_whale_comments/c_comment_annotation_camera.js @@ -0,0 +1,72 @@ +var expect = require('chai').expect; +var should = require('chai').should(); +var manifesto = require('../../../dist-commonjs/'); +//var manifests_3d = require('../fixtures/manifests_3d'); + + +var ExternalResourceType = require('@iiif/vocabulary/dist-commonjs/').ExternalResourceType; +var MediaType = require('@iiif/vocabulary/dist-commonjs/').MediaType; + + +let manifest, scene , annotations, body; + +let manifest_url = { + local: "", + remote : "https://raw.githubusercontent.com/IIIF/3d/whale_anno/manifests/xx_whale_comments/c_comment_annotation_camera.json" + }.remote; + +describe('c_comment_annotation_camera', function() { + + it('loads successfully', function(done) { + manifesto.loadManifest(manifest_url).then(function(data) { + manifest = manifesto.parseManifest(data); + done(); + }); + }); + + + + it('has a scene', function() { + sequence = manifest.getSequenceByIndex(0); + scene = sequence.getScenes()[0]; + expect(scene).to.exist; + expect(scene.isScene()).to.be.ok; + }); + + + it('with 4 annotation', function(){ + var annotations = scene.getContent(); + expect(annotations.length).to.equal(4); + }); + + it('annotation 3 is TextualBody', function(){ + var annotations = scene.getContent(); + expect(annotations.length).to.equal(4); + var textBody = annotations[2].getBody()[0]; + expect(textBody.isTextualBody).to.equal(true); + expect(textBody.Value).to.exist; + }); + + it('annotation 4 is a camera', function(){ + var annotations = scene.getContent(); + expect(annotations.length).to.equal(4); + var body = annotations[3].getBody()[0]; + expect(body).to.exist; + var camera = body.isSpecificResource?body.Source:body; + + + expect(camera.isCamera).to.equal(true); + expect(camera.isPerspectiveCamera).to.equal(true); + }); + + it('all annotation have a body', function(){ + var annotations = scene.getContent(); + for (var i = 0; i < annotations.length; ++i){ + var custom_message = "annotation " + i + " body fails exist"; + var body = annotations[i].getBody()[0]; + expect(body, custom_message).to.exist; + } + }); + + +});