0.0.5 • Published 3 years ago

capacitor-digitalink v0.0.5

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 years ago

capacitor-digitalink

CodeFactor

Allows use of Google's MLKit DigitalInk models

You must provide a set of coordinates with or without time values to properly use this plugin. There are various implementations out there, but the most common way to accomplish this is by using a Canvas, moving the Canvas Context to draw with pixels, then sending the data over to the plugin.

For example, the picture at predrawn-inks/hi/hi.png:

npm.io

Would have this data:

// predrawn-inks/hi/hi.json
// [ [x1[], y1[]], [x2[], y2[]], [x3[], y3[]] ]
[
  [ [86.67578125, 86.67578125, 86.859375, ...], [103.3359375, 103.40234375, 104.69921875, ...] ], // h
  [ [203.86328125, 203.86328125, 203.7578125, ...], [159.9921875, 160.05859375, 161.91796875, ..] ], // i stem
  [ [206.203125, 206.203125, 205.99609375, ...], [123.25390625, 123.18359375, 122.91015625, ...] ] // i point
]

Again, the time values are optional.

Once the data has been sent to the plugin, call the doRecognition method to perform recognition. See the API docs below for details on params, returns, etc.

Install

npm install capacitor-digitalink
npx cap sync

Todos / Notes

  • Provide functionality for finding LocalModel (en-US) as a default model, and don't allow en-US as a param in deleting models?

QA Check - check Asana

API

initializePlugin()

initializePlugin() => Promise<{ ok: boolean; msg: string; }>

Initializes notifications on iOS -- NOT supported in Android due to the use of other event listeners

Returns: Promise<{ ok: boolean; msg: string; }>


erase()

erase() => Promise<{ ok: boolean; msg: string; }>

Erases natively stored stroke/point/ink data

Returns: Promise<{ ok: boolean; msg: string; }>


logStrokes(...)

logStrokes(options: XYTOptions) => Promise<{ ok: boolean; msg: string; options: XYTOptions; }>

Sends XY coordinate data to native code to be prepared for model inference Can include/exclude time values Ensure all units for coordinates/time are consistent between logs. Unit types don't matter, they just need to be the same -- all values are normalized

ParamTypeDescription
optionsXYTOptions- X coordinate, Y coordinate, T time in milliseconds

Returns: Promise<{ ok: boolean; msg: string; options: XYTOptions; }>


doRecognition(...)

doRecognition(options: RecognitionOptions) => Promise<{ ok: boolean; msg: string; results: { candidates: string[]; scores: number[]; }; options: RecognitionOptions; }>

Runs inference either on the provided model via the model param, or on the default English model. All params are optional.

ParamType
optionsRecognitionOptions

Returns: Promise<{ ok: boolean; msg: string; results: { candidates: string[]; scores: number[]; }; options: RecognitionOptions; }>


downloadSingularModel(...)

downloadSingularModel(model: Model, callback: SingularModelCallback) => Promise<CallbackID>

Downloads singular model. Last callback has the 'done' property set to true, and signals the last callback.

ParamTypeDescription
modelModelmodel to download. Native code checks if model is valid and if it's already downloaded.
callback(response: Response, error?: any) => voidcallback function that runs each time data is sent from the native code.

Returns: Promise<string>


downloadMultipleModels(...)

downloadMultipleModels(models: Models, callback: MultipleModelCallback) => Promise<CallbackID>

Downloads multiple models from a given array. Callback function will return a response or an error dependent on whether a given model has already been downloaded, is a valid/invalid model, or is finished being downloaded. The last model will be have the 'done' property set to true and signals the last callback.

ParamTypeDescription
modelsModelsarray of models to download.
callback(response: Response, error?: any) => voidcallback that runs each time data is sent from the native code.

Returns: Promise<string>


deleteModel(...)

deleteModel(options: DeleteModelOptions, callback: DeleteModelCallback) => Promise<CallbackID>

Deletes a singular/collection of models downloaded to the device, or all models.

ParamTypeDescription
optionsDeleteModelOptionsdelete all models, a singular model, or an array of models.
callback(response: Response, error?: any) => void

Returns: Promise<string>


getDownloadedModels()

getDownloadedModels() => Promise<{ ok: true; msg: string; models: string[]; }>

Returns: Promise<{ ok: true; msg: string; models: string[]; }>


Interfaces

XYTOptions

PropType
xnumber[]
ynumber[]
tnumber[]

RecognitionOptions

PropType
modelstring
contextstring
writingArea{ w: number; h: number; }

Model

PropType
modelstring

Models

PropType
modelsstring[]

DeleteModelOptions

PropType
allboolean
modelstring
modelsstring[]