Skip to content

Commit

Permalink
Merge pull request #126 from vincentmarchetti/3dtsg-main
Browse files Browse the repository at this point in the history
Add extensions to support draft 3D API
  • Loading branch information
vincentmarchetti authored Apr 11, 2024
2 parents 6e355e3 + fc36b92 commit 9164a6b
Show file tree
Hide file tree
Showing 494 changed files with 19,614 additions and 35,785 deletions.
6 changes: 6 additions & 0 deletions .codesandbox/ci.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"sandboxes": [
"vanilla-ts"
],
"node": "14"
}
6 changes: 1 addition & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
dist-commonjs
dist-esmodule
dist-umd
dist-var
coverage
npm-debug.log
node_modules
dist
debug.log
types
5 changes: 4 additions & 1 deletion .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@
**/tsconfig.json
**/webpack.config.js
node_modules
src
src
mocha_3d_tests.js
test
pkg-tests
24 changes: 7 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,19 @@
# manifesto

[![Build Status](https://travis-ci.org/IIIF-Commons/manifesto.svg?branch=master)](https://travis-ci.org/IIIF-Commons/manifesto)
Client and server utility library to support
draft 3D extensions to to the IIIF Presentation API client and server utility library.

IIIF Presentation API client and server utility library.
Forked from [IIIF-Commons/manifesto](https://github.com/IIIF-Commons/manifesto).

npm install manifesto.js --save
Goal of implementing the [Draft API](https://github.com/IIIF/3d/blob/main/temp-draft-4.md)
under development by the [IIIF 3D Technical Study Group](https://github.com/IIIF/3d/).

## Getting Started

### Documentation

https://iiif-commons.github.io/manifesto/
[Manifesto.js](https://vincentmarchetti.github.io/manifesto/)


### Developer Setup

git clone https://github.com/iiif-commons/manifesto.git
npm install
npm build
npm test

### Publishing Package

git checkout master
npm version patch
git add .
git commit -m "Release v1.2.3"
git tag v1.2.3
git push origin master v1.2.3
56 changes: 56 additions & 0 deletions dist-commonjs/Annotation.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import { AnnotationMotivation } from "@iiif/vocabulary/dist-commonjs";
import { AnnotationBody, IManifestoOptions, ManifestResource, Resource, SpecificResource } from "./internal";
import { Vector3 } from "threejs-math";
export declare class Annotation extends ManifestResource {
constructor(jsonld: any, options: IManifestoOptions);
/**
In spite of its name, this method returns an array of objects, each of which
represents a potential body annotations
@see{ https://iiif.io/api/cookbook/recipe/0033-choice/ }
**/
getBody(): (AnnotationBody | SpecificResource)[];
get Body(): (SpecificResource | AnnotationBody)[];
/**
auxiliary function to getBody; intended to hande an object that has an element items
which is a array of annotation- body-like objects. This : https://iiif.io/api/cookbook/recipe/0033-choice/
seems to be the use case for this
**/
private parseBodiesFromItemsList;
/**
auxiliary function to parseBodiesFromItemsList and getBody, this is the last
step on recursively going through collections of bodies.
**/
private parseSingletonBody;
/**
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.
At this stage, the merging of the 2D API anf the draft 3D API has been completed, so
3D applications can use the getBody() function to retrieve the body of an Annotation intended
to target a scene. For compatibily the return value of the function is still an
array.
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.
**/
getBody3D(): (AnnotationBody | SpecificResource);
getMotivation(): AnnotationMotivation | null;
getOn(): string;
getTarget(): any;
get Target(): any;
getResource(): Resource;
/**
* 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)
**/
get lookAtLocation(): Vector3;
}
155 changes: 155 additions & 0 deletions dist-commonjs/Annotation.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist-commonjs/Annotation.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions dist-commonjs/AnnotationBody.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { ExternalResourceType, MediaType } from "@iiif/vocabulary/dist-commonjs";
import { IManifestoOptions, ManifestResource } from "./internal";
/**
With the 3D extensions to the IIIF Presentation API the name of this
class is misleading, but for now is being retained for the sake backward
compatibility with earlier manifesto code and tests.
The 3D extensions allow that the body property of an annotation can be
a light, camera, or model, or a SpecificResource object wrapping a light, camera,
or model.
**/
export declare class AnnotationBody extends ManifestResource {
constructor(jsonld?: any, options?: IManifestoOptions);
getFormat(): MediaType | null;
getType(): ExternalResourceType | null;
getWidth(): number;
getHeight(): number;
isModel: boolean;
isLight: boolean;
isCamera: boolean;
}
65 changes: 65 additions & 0 deletions dist-commonjs/AnnotationBody.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist-commonjs/AnnotationBody.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions dist-commonjs/AnnotationBodyParser.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { AnnotationBody, IManifestoOptions } from "./internal";
export declare class AnnotationBodyParser {
static BuildFromJson(jsonld: any, options?: IManifestoOptions): AnnotationBody;
}
Loading

0 comments on commit 9164a6b

Please sign in to comment.