tabris 3.9.0-dev.20221108 → 3.9.0-dev.20221109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/boot.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Tabris.js 3.9.0-dev.20221108+0310
2
+ * Tabris.js 3.9.0-dev.20221109+0310
3
3
  *
4
4
  * Copyright (c) 2014, 2020 EclipseSource Inc.
5
5
  * All rights reserved.
@@ -116,7 +116,7 @@ class Module {
116
116
  return JSON.parse(src);
117
117
  }
118
118
  catch (ex) {
119
- throw new Error('Could not parse ' + url + ': ' + ex.message);
119
+ throw new Error('Could not parse ' + url + ': ' + (ex === null || ex === void 0 ? void 0 : ex.message));
120
120
  }
121
121
  }
122
122
  }
package/boot.min.js CHANGED
@@ -1 +1 @@
1
- !function(){"use strict";const t=["",".js",".json","/package.json","/index.js","/index.json"],e=["/package.json","/index.js","/index.json"],r="(function (module, exports, require, __filename, __dirname) { ",n="\n});";class o{constructor(t,e,r){this.exports={},this._cache={},this._paths={},this.id=t||"",this.parent=e||null;let n={},o=!1;const i=this.require.bind(this);Object.defineProperty(this,"_cache",{enumerable:!1,writable:!1,value:this.parent?this.parent._cache:this._cache}),Object.defineProperty(this,"_paths",{enumerable:!1,writable:!1,value:this.parent?this.parent._paths:this._paths}),t&&(this._cache[t]=this),Object.defineProperty(this,"exports",{set(t){n=t},get(){return o||(o=!0,"function"==typeof r&&t?r(this,n,i,t.slice(1),l(t).slice(1)):r instanceof Object&&(n=r)),n}}),function(t){if((null===t||void 0===t?void 0:t.id.endsWith("package.json"))&&t.exports&&"browser"in t.exports){const e=t.id+' has a "browser" field.\nThis module may function better with a file bundler';console.print?console.print("warn",e):console.warn(e)}}(this)}require(t){if("."!==t.slice(0,1)){const e=this._cache[t];if(e)return e.exports;const r=function(t){if(-1!==this.id.indexOf("/node_modules"))return null;let e,r,n=0;for(const o in this._paths){const i=o.indexOf("*");if(-1!==i){const s=o.substr(0,i),a=o.substr(i+1);t.length>=s.length+a.length&&t.startsWith(s)&&t.endsWith(a)&&n<s.length&&(n=s.length,e=o,r=t.substr(s.length,t.length-a.length))}else if(o===t){e=o,r=void 0;break}}if(!e)return null;const o=[];for(const n of this._paths[e]){const e=r?n.replace("*",r):n;o.push(e);const s=i.call(this,e,c(t));if(s)return s}throw new Error(`Cannot find module "${t}" at "${o.join('" or "')}"`)}.call(this,t);return r?r.exports:(this._cache[t]=!1,function(t){let e=l(this.id);const r=c(t),n="/node_modules/"+t;let o;do{o=i.call(this,h(e+n),r),(e=h(e+"/.."))&&"/node_modules"===e.slice(-1*"/node_modules".length)&&(e=h(e+"/.."))}while(!o&&e);if(!o)throw new Error("Cannot find module '"+t+"'");return o}.call(this,t).exports)}return function(t){const e=h(l(this.id)+"/"+t),r=i.call(this,e,c(t));if(!r)throw new Error("Cannot find module '"+t+"'");return r}.call(this,t).exports}static createLoader(t){let e;try{e=tabris._client.loadAndExecute(t,r,n)}catch(e){throw new Error("Could not parse "+t+":"+e)}return e.loadError?null:e.executeResult}static execute(t,e){return tabris._client.execute(t,e).executeResult}static readJSON(t){const e=this.load(t);if(e)try{return JSON.parse(e)}catch(e){throw new Error("Could not parse "+t+": "+e.message)}}static getSourceMap(){return null}static load(t){return tabris._client.load(t)}static createRequire(t){if("string"!=typeof t||"/"!==t[0])throw new Error(`The argument 'path' must be an absolute path string. Received ${t}`);return function(e){return o.root.require(h(l("."+t)+"/"+e))}}static define(t,e){if(2!==arguments.length)throw new Error(`Expected exactly 2 arguments, got ${arguments.length}`);if("string"!=typeof t)throw new Error("Expected argument 1 to be of type string");if("/"!==t.charAt(0))throw new Error('Path needs to start with a "/"');const r="."+t;if(o.root._cache[r])throw new Error(`Module "${t}" is already defined'`);if(!1===o.root._cache[r])throw new Error(`Module "${t}" was accessed before it was defined'`);if(e instanceof o)throw new Error("Expected argument 2 to be module exports, got a module instance");new o("."+t,this.root,t=>t.exports=e)}static addPath(t,e){if(t instanceof Object){!function(t){if(!("paths"in t))throw new Error('Missing option "paths"');if(!(t.paths instanceof Object))throw new Error('Expected option "paths" to be an object');if("baseUrl"in t&&"string"!=typeof t.baseUrl)throw new Error('Expected option "baseUrl" to be a string');if(t.baseUrl&&!t.baseUrl.startsWith("/"))throw new Error('Expected baseUrl to start with "/"')}(t);for(const e in t.paths){const r=t.paths[e];if(!Array.isArray(r)||r.some(t=>"string"!=typeof t))throw new Error(`Expected paths for pattern "${e}" to be array of strings`);this.addPath(e,r.map(e=>t.baseUrl?"./"+h(t.baseUrl+"/"+e):e))}}else{if(arguments.length<=1)throw new Error("Expected argument 1 to be of type object");if(function(t,e){if("string"!=typeof t)throw new Error("Expected argument 1 to be of type string");if(!Array.isArray(e))throw new Error(`Expected paths for pattern "${t}" to be array of strings`);if(e.some(t=>"string"!=typeof t))throw new Error(`Expected paths for pattern "${t}" to be array of strings`);if(""===t)throw new Error("Pattern not be empty string");if(/^[./]./.test(t))throw new Error(`Pattern may not start with "${t.charAt(0)}"`);if(t.split("*").length>2)throw new Error('Pattern may contain only one "*"');if(t.includes(" "))throw new Error("Pattern may not contain spaces");if(0===e.length)throw new Error(`Paths array for pattern "${t}" is empty`);const r=t.includes("*");e.forEach(e=>{if(!e.startsWith("./"))throw new Error(`Expected path "${e}" for pattern "${t}" to start with "./"`);const n=e.split("*").length-1;if(r){if(1!==n)throw new Error(`Expected path "${e}" for pattern "${t}" to contain exactly one "*"`)}else if(0!==n)throw new Error(`Expected path "${e}" for pattern "${t}" to not contain "*"`)})}(t,e),this.root._paths[t])throw new Error(`Pattern "${t}" is already registered`);const r=t.split("*")[0];if(Object.keys(this.root._cache).some(t=>t.startsWith(r)))throw new Error(`Can not add pattern "${t}" since a matching module was already imported'`);this.root._paths[t]=e}}}function i(e,r){if(e)for(const n of r){let r=a.call(this,e+n);if("/package.json"===n)if(s(r)){const n=h(e+"/"+s(r));r=i.call(this,n,t)}else r=null;if(r)return r}return null}function s(t){return t&&t.exports&&t.exports.main}function a(t){if(t in this._cache)return this._cache[t]||null;if(".json"===t.slice(-5)){const e=o.readJSON(t);if(e)return new o(t,this,e)}else{const e=o.createLoader(t);if(e)return new o(t,this,e)}return this._cache[t]=!1,null}function c(r){return"/"===r.slice(-1)?e:t}function l(t){return t&&"."===t.slice(0,1)?t.slice(0,t.lastIndexOf("/")):"./"}function h(t){const e=[],r=t.split("/");for(const t of r)if(".."===t){const t=e.pop();if(!t||"."===t)return""}else("."===t?0===e.length:""!==t)&&e.push(t);return e.join("/")}function u(t,e){console.print?console.print("error",t+(e.stack||e)):console.error(t,e)}o.root=new o,global.window=global.self=global,global.tabris={},tabris._start=function(t){try{tabris._client=t;const e=o.root;global.module=e,global.require=e.require.bind(e),global.exports=e.exports,global.__dirname="./",global.__filename=".";try{e.require("tabris"),tabris._client=t}catch(t){return void u("Could not load tabris module:",t)}tabris.Module=o,tabris._defineModule=function(t,r){return new o(t,e,r)};const r=document.createElement("script");r.src="./cordova.js",document.head.appendChild(r);const n=global.workerScriptPath;delete global.workerScriptPath;const i=void 0!==n;tabris._init&&tabris._init(t,{headless:i});const s=function(){try{global.debugClient&&!i&&global.debugClient.start(e),e.require("./"+(i?n:"")),tabris.flush()}catch(t){u("Could not load "+(i?"worker":"main module")+":",t)}};tabris._entryPoint?(tabris._entryPoint(s),tabris._entryPoint=null):s(),tabris.flush()}catch(t){u("Could not start tabris:",t)}},tabris._notify=function(...t){return tabris._notify.apply(this,t)}}();
1
+ !function(){"use strict";const t=["",".js",".json","/package.json","/index.js","/index.json"],e=["/package.json","/index.js","/index.json"],r="(function (module, exports, require, __filename, __dirname) { ",n="\n});";class o{constructor(t,e,r){this.exports={},this._cache={},this._paths={},this.id=t||"",this.parent=e||null;let n={},o=!1;const i=this.require.bind(this);Object.defineProperty(this,"_cache",{enumerable:!1,writable:!1,value:this.parent?this.parent._cache:this._cache}),Object.defineProperty(this,"_paths",{enumerable:!1,writable:!1,value:this.parent?this.parent._paths:this._paths}),t&&(this._cache[t]=this),Object.defineProperty(this,"exports",{set(t){n=t},get(){return o||(o=!0,"function"==typeof r&&t?r(this,n,i,t.slice(1),l(t).slice(1)):r instanceof Object&&(n=r)),n}}),function(t){if((null===t||void 0===t?void 0:t.id.endsWith("package.json"))&&t.exports&&"browser"in t.exports){const e=t.id+' has a "browser" field.\nThis module may function better with a file bundler';console.print?console.print("warn",e):console.warn(e)}}(this)}require(t){if("."!==t.slice(0,1)){const e=this._cache[t];if(e)return e.exports;const r=function(t){if(-1!==this.id.indexOf("/node_modules"))return null;let e,r,n=0;for(const o in this._paths){const i=o.indexOf("*");if(-1!==i){const s=o.substr(0,i),a=o.substr(i+1);t.length>=s.length+a.length&&t.startsWith(s)&&t.endsWith(a)&&n<s.length&&(n=s.length,e=o,r=t.substr(s.length,t.length-a.length))}else if(o===t){e=o,r=void 0;break}}if(!e)return null;const o=[];for(const n of this._paths[e]){const e=r?n.replace("*",r):n;o.push(e);const s=i.call(this,e,c(t));if(s)return s}throw new Error(`Cannot find module "${t}" at "${o.join('" or "')}"`)}.call(this,t);return r?r.exports:(this._cache[t]=!1,function(t){let e=l(this.id);const r=c(t),n="/node_modules/"+t;let o;do{o=i.call(this,h(e+n),r),(e=h(e+"/.."))&&"/node_modules"===e.slice(-1*"/node_modules".length)&&(e=h(e+"/.."))}while(!o&&e);if(!o)throw new Error("Cannot find module '"+t+"'");return o}.call(this,t).exports)}return function(t){const e=h(l(this.id)+"/"+t),r=i.call(this,e,c(t));if(!r)throw new Error("Cannot find module '"+t+"'");return r}.call(this,t).exports}static createLoader(t){let e;try{e=tabris._client.loadAndExecute(t,r,n)}catch(e){throw new Error("Could not parse "+t+":"+e)}return e.loadError?null:e.executeResult}static execute(t,e){return tabris._client.execute(t,e).executeResult}static readJSON(t){const e=this.load(t);if(e)try{return JSON.parse(e)}catch(e){throw new Error("Could not parse "+t+": "+(null===e||void 0===e?void 0:e.message))}}static getSourceMap(){return null}static load(t){return tabris._client.load(t)}static createRequire(t){if("string"!=typeof t||"/"!==t[0])throw new Error(`The argument 'path' must be an absolute path string. Received ${t}`);return function(e){return o.root.require(h(l("."+t)+"/"+e))}}static define(t,e){if(2!==arguments.length)throw new Error(`Expected exactly 2 arguments, got ${arguments.length}`);if("string"!=typeof t)throw new Error("Expected argument 1 to be of type string");if("/"!==t.charAt(0))throw new Error('Path needs to start with a "/"');const r="."+t;if(o.root._cache[r])throw new Error(`Module "${t}" is already defined'`);if(!1===o.root._cache[r])throw new Error(`Module "${t}" was accessed before it was defined'`);if(e instanceof o)throw new Error("Expected argument 2 to be module exports, got a module instance");new o("."+t,this.root,t=>t.exports=e)}static addPath(t,e){if(t instanceof Object){!function(t){if(!("paths"in t))throw new Error('Missing option "paths"');if(!(t.paths instanceof Object))throw new Error('Expected option "paths" to be an object');if("baseUrl"in t&&"string"!=typeof t.baseUrl)throw new Error('Expected option "baseUrl" to be a string');if(t.baseUrl&&!t.baseUrl.startsWith("/"))throw new Error('Expected baseUrl to start with "/"')}(t);for(const e in t.paths){const r=t.paths[e];if(!Array.isArray(r)||r.some(t=>"string"!=typeof t))throw new Error(`Expected paths for pattern "${e}" to be array of strings`);this.addPath(e,r.map(e=>t.baseUrl?"./"+h(t.baseUrl+"/"+e):e))}}else{if(arguments.length<=1)throw new Error("Expected argument 1 to be of type object");if(function(t,e){if("string"!=typeof t)throw new Error("Expected argument 1 to be of type string");if(!Array.isArray(e))throw new Error(`Expected paths for pattern "${t}" to be array of strings`);if(e.some(t=>"string"!=typeof t))throw new Error(`Expected paths for pattern "${t}" to be array of strings`);if(""===t)throw new Error("Pattern not be empty string");if(/^[./]./.test(t))throw new Error(`Pattern may not start with "${t.charAt(0)}"`);if(t.split("*").length>2)throw new Error('Pattern may contain only one "*"');if(t.includes(" "))throw new Error("Pattern may not contain spaces");if(0===e.length)throw new Error(`Paths array for pattern "${t}" is empty`);const r=t.includes("*");e.forEach(e=>{if(!e.startsWith("./"))throw new Error(`Expected path "${e}" for pattern "${t}" to start with "./"`);const n=e.split("*").length-1;if(r){if(1!==n)throw new Error(`Expected path "${e}" for pattern "${t}" to contain exactly one "*"`)}else if(0!==n)throw new Error(`Expected path "${e}" for pattern "${t}" to not contain "*"`)})}(t,e),this.root._paths[t])throw new Error(`Pattern "${t}" is already registered`);const r=t.split("*")[0];if(Object.keys(this.root._cache).some(t=>t.startsWith(r)))throw new Error(`Can not add pattern "${t}" since a matching module was already imported'`);this.root._paths[t]=e}}}function i(e,r){if(e)for(const n of r){let r=a.call(this,e+n);if("/package.json"===n)if(s(r)){const n=h(e+"/"+s(r));r=i.call(this,n,t)}else r=null;if(r)return r}return null}function s(t){return t&&t.exports&&t.exports.main}function a(t){if(t in this._cache)return this._cache[t]||null;if(".json"===t.slice(-5)){const e=o.readJSON(t);if(e)return new o(t,this,e)}else{const e=o.createLoader(t);if(e)return new o(t,this,e)}return this._cache[t]=!1,null}function c(r){return"/"===r.slice(-1)?e:t}function l(t){return t&&"."===t.slice(0,1)?t.slice(0,t.lastIndexOf("/")):"./"}function h(t){const e=[],r=t.split("/");for(const t of r)if(".."===t){const t=e.pop();if(!t||"."===t)return""}else("."===t?0===e.length:""!==t)&&e.push(t);return e.join("/")}function u(t,e){console.print?console.print("error",t+(e.stack||e)):console.error(t,e)}o.root=new o,global.window=global.self=global,global.tabris={},tabris._start=function(t){try{tabris._client=t;const e=o.root;global.module=e,global.require=e.require.bind(e),global.exports=e.exports,global.__dirname="./",global.__filename=".";try{e.require("tabris"),tabris._client=t}catch(t){return void u("Could not load tabris module:",t)}tabris.Module=o,tabris._defineModule=function(t,r){return new o(t,e,r)};const r=document.createElement("script");r.src="./cordova.js",document.head.appendChild(r);const n=global.workerScriptPath;delete global.workerScriptPath;const i=void 0!==n;tabris._init&&tabris._init(t,{headless:i});const s=function(){try{global.debugClient&&!i&&global.debugClient.start(e),e.require("./"+(i?n:"")),tabris.flush()}catch(t){u("Could not load "+(i?"worker":"main module")+":",t)}};tabris._entryPoint?(tabris._entryPoint(s),tabris._entryPoint=null):s(),tabris.flush()}catch(t){u("Could not start tabris:",t)}},tabris._notify=function(...t){return tabris._notify.apply(this,t)}}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tabris",
3
- "version": "3.9.0-dev.20221108+0310",
3
+ "version": "3.9.0-dev.20221109+0310",
4
4
  "description": "Mobile apps with native UIs in JavaScript",
5
5
  "keywords": [
6
6
  "native",
package/tabris.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Type definitions for Tabris.js 3.9.0-dev.20221108+0310
1
+ // Type definitions for Tabris.js 3.9.0-dev.20221109+0310
2
2
  /// <reference path="globals.d.ts" />
3
3
 
4
4
  // General helper types
@@ -23,10 +23,21 @@ export type JSXShorthands<T> = T extends {layoutData?: LayoutDataValue}
23
23
  ? {center?: true, stretch?: true, stretchX?: true, stretchY?: true}
24
24
  : {};
25
25
  export type JSXCandidate = {set: any; jsxAttributes: any}; // JSX.Element?
26
+ export type AnyWidget = {
27
+ cid: string;
28
+ id: string;
29
+ data: any;
30
+ parent: Function;
31
+ appendTo: Function;
32
+ set: Function;
33
+ jsxAttributes: any;
34
+ dispose: Function;
35
+ isDisposed(): boolean
36
+ };
26
37
  export type JSXAttributes<
27
38
  T extends JSXCandidate,
28
39
  U = Omit<T, 'set' | 'jsxAttributes'> // prevent self-reference issues
29
- > = Properties<U> & ListenersMap<U> & JSXShorthands<U>;
40
+ > = Properties<U & {set: any}> & ListenersMap<U> & JSXShorthands<U>;
30
41
 
31
42
  /**
32
43
  * The attributes object for the given widget type, includes all properties,
@@ -37,8 +48,8 @@ export type JSXAttributes<
37
48
  */
38
49
  export type Attributes<T extends JSXCandidate, TData = any> = T['jsxAttributes'] & {data?: TData};
39
50
 
40
- export type JSXCompositeAttributes<T extends Composite, U extends Widget>
41
- = JSXAttributes<T> & {apply?: RuleSet<T>, children?: JSXChildren<U>};
51
+ export type JSXCompositeAttributes<ThisType extends JSXCandidate, ChildType extends AnyWidget>
52
+ = JSXAttributes<ThisType> & {apply?: RuleSet<ThisType>, children?: JSXChildren<ChildType>};
42
53
  type ExtendedEvent<EventData, Target = {}> = EventObject<Target> & EventData;
43
54
  export type Listener<T = {}> = (ev: ExtendedEvent<T>) => any;
44
55
  type ListenersTriggerParam<T> = Omit<T, keyof EventObject<any>>;
@@ -48,7 +59,8 @@ export interface Listeners<EventData extends {target: object}> {
48
59
  // tslint:disable-next-line:callable-types
49
60
  (listener: Listener<ExtendedEvent<EventData>>): TargetType<EventData>;
50
61
  }
51
- export type JSXChildren<T extends Widget> = T|WidgetCollection<T>|Array<T|WidgetCollection<T>>|{cid?: never}|undefined;
62
+ export type JSXChildren<T extends AnyWidget>
63
+ = T|WidgetCollection<T>|Array<T|WidgetCollection<T>>|{cid?: never}|undefined;
52
64
  export type SFC<T> = (attributes: object|null, children: any[]) => T;
53
65
  type Flatten<T> = T|Array<T>|undefined;
54
66
 
@@ -328,11 +340,20 @@ export type SiblingSelectorString = string;
328
340
  * An expression or a predicate function to select a set of widgets.
329
341
  */
330
342
  export type Selector<
331
- Candidate extends Widget = Widget,
343
+ Candidate extends AnyWidget = Widget,
332
344
  Result extends Candidate = Candidate
333
345
  > = SelectorString | SelectorFunction<Candidate> | Constructor<Result> | SFC<Result>;
334
346
 
335
- export type SelectorFunction<Candidate extends Widget> = (widget: Candidate, index: number, collection: WidgetCollection<Candidate>) => boolean;
347
+ /**
348
+ * An expression or a predicate function to select a parent widget.
349
+ */
350
+ export type ParentSelector<
351
+ Candidate extends Composite = Composite,
352
+ Result extends Candidate = Candidate
353
+ > = SelectorString | SelectorFunction<Candidate> | Constructor<Result> | SFC<Result>;
354
+
355
+
356
+ export type SelectorFunction<Candidate extends AnyWidget> = (widget: Candidate, index: number, collection: WidgetCollection<Candidate>) => boolean;
336
357
 
337
358
  /**
338
359
  * A positive float, or 0, representing device independent pixels.
@@ -708,35 +729,6 @@ export namespace widgets {
708
729
  */
709
730
  public constructor(properties?: Properties<Action>);
710
731
 
711
- /**
712
- * Appends this widget to the given `NavigationView` instance.
713
- * @param parent
714
- */
715
- appendTo(parent: NavigationView): this;
716
-
717
- /**
718
- * Inserts this widget directly after the given Action.
719
- * @param widget
720
- */
721
- insertAfter(widget: Action): this;
722
-
723
- /**
724
- * Inserts this widget directly before the given Action.
725
- * @param widget
726
- */
727
- insertBefore(widget: Action): this;
728
-
729
- /**
730
- * Returns the `NavigationView` the `Action` is hosted in or `null` if it has no parent.
731
- */
732
- parent(): NavigationView;
733
-
734
- /**
735
- * Returns a (possibly empty) collection of all siblings of this widget that match the given selector.
736
- * @param selector A selector expression or a predicate function to filter the results.
737
- */
738
- siblings<Result extends Widget = Action | Page>(selector?: Selector<Widget, Result>): WidgetCollection<Result>;
739
-
740
732
  /**
741
733
  * Icon image for the action.
742
734
  * On iOS the `image` is tinted with the apps default accent color whereas on Android the `image` is
@@ -791,7 +783,7 @@ export namespace widgets {
791
783
 
792
784
  export type Action = widgets.Action;
793
785
  export type ActionConstructor = typeof widgets.Action;
794
- export interface ActionFactory extends Factory<ActionConstructor>, ActionConstructor {}
786
+ export interface ActionFactory extends Factory<ActionConstructor, widgets.Action>, ActionConstructor {}
795
787
  export const Action: ActionFactory;
796
788
 
797
789
  // ActionSheet
@@ -968,7 +960,7 @@ export namespace widgets {
968
960
 
969
961
  export type ActivityIndicator = widgets.ActivityIndicator;
970
962
  export type ActivityIndicatorConstructor = typeof widgets.ActivityIndicator;
971
- export interface ActivityIndicatorFactory extends Factory<ActivityIndicatorConstructor>, ActivityIndicatorConstructor {}
963
+ export interface ActivityIndicatorFactory extends Factory<ActivityIndicatorConstructor, widgets.ActivityIndicator>, ActivityIndicatorConstructor {}
972
964
  export const ActivityIndicator: ActivityIndicatorFactory;
973
965
 
974
966
  // AlertDialog
@@ -1221,7 +1213,7 @@ export namespace widgets {
1221
1213
 
1222
1214
  export type Button = widgets.Button;
1223
1215
  export type ButtonConstructor = typeof widgets.Button;
1224
- export interface ButtonFactory extends Factory<ButtonConstructor>, ButtonConstructor {}
1216
+ export interface ButtonFactory extends Factory<ButtonConstructor, widgets.Button>, ButtonConstructor {}
1225
1217
  export const Button: ButtonFactory;
1226
1218
 
1227
1219
  // Camera
@@ -1380,7 +1372,7 @@ export namespace widgets {
1380
1372
 
1381
1373
  export type CameraView = widgets.CameraView;
1382
1374
  export type CameraViewConstructor = typeof widgets.CameraView;
1383
- export interface CameraViewFactory extends Factory<CameraViewConstructor>, CameraViewConstructor {}
1375
+ export interface CameraViewFactory extends Factory<CameraViewConstructor, widgets.CameraView>, CameraViewConstructor {}
1384
1376
  export const CameraView: CameraViewFactory;
1385
1377
 
1386
1378
  // Canvas
@@ -1424,7 +1416,7 @@ export namespace widgets {
1424
1416
 
1425
1417
  export type Canvas = widgets.Canvas;
1426
1418
  export type CanvasConstructor = typeof widgets.Canvas;
1427
- export interface CanvasFactory extends Factory<CanvasConstructor>, CanvasConstructor {}
1419
+ export interface CanvasFactory extends Factory<CanvasConstructor, widgets.Canvas>, CanvasConstructor {}
1428
1420
  export const Canvas: CanvasFactory;
1429
1421
 
1430
1422
  // CanvasContext
@@ -1859,7 +1851,7 @@ export namespace widgets {
1859
1851
 
1860
1852
  export type CheckBox = widgets.CheckBox;
1861
1853
  export type CheckBoxConstructor = typeof widgets.CheckBox;
1862
- export interface CheckBoxFactory extends Factory<CheckBoxConstructor>, CheckBoxConstructor {}
1854
+ export interface CheckBoxFactory extends Factory<CheckBoxConstructor, widgets.CheckBox>, CheckBoxConstructor {}
1863
1855
  export const CheckBox: CheckBoxFactory;
1864
1856
 
1865
1857
  // CollectionView
@@ -2122,7 +2114,7 @@ export namespace widgets {
2122
2114
 
2123
2115
  export type CollectionView<CellWidgetType extends Widget = Widget> = widgets.CollectionView<CellWidgetType>;
2124
2116
  export type CollectionViewConstructor = typeof widgets.CollectionView;
2125
- export interface CollectionViewFactory extends Factory<CollectionViewConstructor>, CollectionViewConstructor {}
2117
+ export interface CollectionViewFactory extends Factory<CollectionViewConstructor, widgets.CollectionView>, CollectionViewConstructor {}
2126
2118
  export const CollectionView: CollectionViewFactory;
2127
2119
 
2128
2120
  // Color
@@ -2346,7 +2338,7 @@ export namespace widgets {
2346
2338
  /**
2347
2339
  * An empty widget that can contain other widgets.
2348
2340
  */
2349
- export class Composite<ChildType extends Widget = Widget> extends Widget {
2341
+ export class Composite<ChildType extends AnyWidget = Widget> extends Widget {
2350
2342
 
2351
2343
  /**
2352
2344
  * An empty widget that can contain other widgets.
@@ -2553,9 +2545,9 @@ export namespace widgets {
2553
2545
  }
2554
2546
 
2555
2547
 
2556
- export type Composite<ChildType extends Widget = Widget> = widgets.Composite<ChildType>;
2548
+ export type Composite<ChildType extends AnyWidget = Widget> = widgets.Composite<ChildType>;
2557
2549
  export type CompositeConstructor = typeof widgets.Composite;
2558
- export interface CompositeFactory extends Factory<CompositeConstructor>, CompositeConstructor {}
2550
+ export interface CompositeFactory extends Factory<CompositeConstructor, widgets.Composite>, CompositeConstructor {}
2559
2551
  export const Composite: CompositeFactory;
2560
2552
 
2561
2553
  // Constraint
@@ -2656,7 +2648,7 @@ export class ConstraintLayout extends Layout {
2656
2648
  * Every instance of `ContentView` is controlled by an associated non-widget object, either an instance
2657
2649
  * of `Popover` or the global `tabris` object.
2658
2650
  */
2659
- export class ContentView<ChildType extends Widget = Widget> extends Composite<ChildType> {
2651
+ export class ContentView<ChildType extends AnyWidget = Widget> extends Composite<ChildType> {
2660
2652
 
2661
2653
  /**
2662
2654
  * A composite that does not require (or support) a parent to be visible. It also can not be disposed.
@@ -3252,7 +3244,7 @@ export namespace widgets {
3252
3244
 
3253
3245
  export type ImageView = widgets.ImageView;
3254
3246
  export type ImageViewConstructor = typeof widgets.ImageView;
3255
- export interface ImageViewFactory extends Factory<ImageViewConstructor>, ImageViewConstructor {}
3247
+ export interface ImageViewFactory extends Factory<ImageViewConstructor, widgets.ImageView>, ImageViewConstructor {}
3256
3248
  export const ImageView: ImageViewFactory;
3257
3249
 
3258
3250
  // InactivityTimer
@@ -4284,7 +4276,7 @@ export namespace widgets {
4284
4276
 
4285
4277
  export type NavigationView<PageType extends Page = Page, ActionType extends Action = Action> = widgets.NavigationView<PageType, ActionType>;
4286
4278
  export type NavigationViewConstructor = typeof widgets.NavigationView;
4287
- export interface NavigationViewFactory extends Factory<NavigationViewConstructor>, NavigationViewConstructor {}
4279
+ export interface NavigationViewFactory extends Factory<NavigationViewConstructor, widgets.NavigationView>, NavigationViewConstructor {}
4288
4280
  export const NavigationView: NavigationViewFactory;
4289
4281
 
4290
4282
  // Observable
@@ -4357,35 +4349,6 @@ export namespace widgets {
4357
4349
  */
4358
4350
  public constructor(properties?: Properties<Page>);
4359
4351
 
4360
- /**
4361
- * Appends this widget to the given `NavigationView` instance.
4362
- * @param parent
4363
- */
4364
- appendTo(parent: NavigationView): this;
4365
-
4366
- /**
4367
- * Inserts this widget directly after the given `Action`.
4368
- * @param widget
4369
- */
4370
- insertAfter(widget: Page): this;
4371
-
4372
- /**
4373
- * Inserts this widget directly before the given `Page`.
4374
- * @param widget
4375
- */
4376
- insertBefore(widget: Page): this;
4377
-
4378
- /**
4379
- * Returns the `NavigationView` the `Page` is hosted in or `null` if it has no parent.
4380
- */
4381
- parent(): NavigationView;
4382
-
4383
- /**
4384
- * Returns a (possibly empty) collection of all siblings of this widget that match the given selector.
4385
- * @param selector A selector expression or a predicate function to filter the results.
4386
- */
4387
- siblings<Result extends Widget = Action | Page>(selector?: Selector<Widget, Result>): WidgetCollection<Result>;
4388
-
4389
4352
  /**
4390
4353
  * Defines whether this page will be automatically disposed when popped from the NavigationView, e.g.
4391
4354
  * using native back navigation.
@@ -4432,7 +4395,7 @@ export namespace widgets {
4432
4395
 
4433
4396
  export type Page = widgets.Page;
4434
4397
  export type PageConstructor = typeof widgets.Page;
4435
- export interface PageFactory extends Factory<PageConstructor>, PageConstructor {}
4398
+ export interface PageFactory extends Factory<PageConstructor, widgets.Page>, PageConstructor {}
4436
4399
  export const Page: PageFactory;
4437
4400
 
4438
4401
  // PdfView
@@ -4534,7 +4497,7 @@ export namespace widgets {
4534
4497
 
4535
4498
  export type PdfView = widgets.PdfView;
4536
4499
  export type PdfViewConstructor = typeof widgets.PdfView;
4537
- export interface PdfViewFactory extends Factory<PdfViewConstructor>, PdfViewConstructor {}
4500
+ export interface PdfViewFactory extends Factory<PdfViewConstructor, widgets.PdfView>, PdfViewConstructor {}
4538
4501
  export const PdfView: PdfViewFactory;
4539
4502
 
4540
4503
  // Percent
@@ -4719,7 +4682,7 @@ export namespace widgets {
4719
4682
 
4720
4683
  export type Picker = widgets.Picker;
4721
4684
  export type PickerConstructor = typeof widgets.Picker;
4722
- export interface PickerFactory extends Factory<PickerConstructor>, PickerConstructor {}
4685
+ export interface PickerFactory extends Factory<PickerConstructor, widgets.Picker>, PickerConstructor {}
4723
4686
  export const Picker: PickerFactory;
4724
4687
 
4725
4688
  // Popover
@@ -4928,7 +4891,7 @@ export namespace widgets {
4928
4891
 
4929
4892
  export type ProgressBar = widgets.ProgressBar;
4930
4893
  export type ProgressBarConstructor = typeof widgets.ProgressBar;
4931
- export interface ProgressBarFactory extends Factory<ProgressBarConstructor>, ProgressBarConstructor {}
4894
+ export interface ProgressBarFactory extends Factory<ProgressBarConstructor, widgets.ProgressBar>, ProgressBarConstructor {}
4932
4895
  export const ProgressBar: ProgressBarFactory;
4933
4896
 
4934
4897
  // RadioButton
@@ -5033,7 +4996,7 @@ export namespace widgets {
5033
4996
 
5034
4997
  export type RadioButton = widgets.RadioButton;
5035
4998
  export type RadioButtonConstructor = typeof widgets.RadioButton;
5036
- export interface RadioButtonFactory extends Factory<RadioButtonConstructor>, RadioButtonConstructor {}
4999
+ export interface RadioButtonFactory extends Factory<RadioButtonConstructor, widgets.RadioButton>, RadioButtonConstructor {}
5037
5000
  export const RadioButton: RadioButtonFactory;
5038
5001
 
5039
5002
  // RefreshComposite
@@ -5099,7 +5062,7 @@ export namespace widgets {
5099
5062
 
5100
5063
  export type RefreshComposite = widgets.RefreshComposite;
5101
5064
  export type RefreshCompositeConstructor = typeof widgets.RefreshComposite;
5102
- export interface RefreshCompositeFactory extends Factory<RefreshCompositeConstructor>, RefreshCompositeConstructor {}
5065
+ export interface RefreshCompositeFactory extends Factory<RefreshCompositeConstructor, widgets.RefreshComposite>, RefreshCompositeConstructor {}
5103
5066
  export const RefreshComposite: RefreshCompositeFactory;
5104
5067
 
5105
5068
  // ResourceBuilder
@@ -5222,7 +5185,7 @@ export namespace widgets {
5222
5185
 
5223
5186
  export type Row = widgets.Row;
5224
5187
  export type RowConstructor = typeof widgets.Row;
5225
- export interface RowFactory extends Factory<RowConstructor>, RowConstructor {}
5188
+ export interface RowFactory extends Factory<RowConstructor, widgets.Row>, RowConstructor {}
5226
5189
  export const Row: RowFactory;
5227
5190
 
5228
5191
  // RowLayout
@@ -5389,7 +5352,7 @@ export namespace widgets {
5389
5352
 
5390
5353
  export type ScrollView = widgets.ScrollView;
5391
5354
  export type ScrollViewConstructor = typeof widgets.ScrollView;
5392
- export interface ScrollViewFactory extends Factory<ScrollViewConstructor>, ScrollViewConstructor {}
5355
+ export interface ScrollViewFactory extends Factory<ScrollViewConstructor, widgets.ScrollView>, ScrollViewConstructor {}
5393
5356
  export const ScrollView: ScrollViewFactory;
5394
5357
 
5395
5358
  // SearchAction
@@ -5475,7 +5438,7 @@ export namespace widgets {
5475
5438
 
5476
5439
  export type SearchAction = widgets.SearchAction;
5477
5440
  export type SearchActionConstructor = typeof widgets.SearchAction;
5478
- export interface SearchActionFactory extends Factory<SearchActionConstructor>, SearchActionConstructor {}
5441
+ export interface SearchActionFactory extends Factory<SearchActionConstructor, widgets.SearchAction>, SearchActionConstructor {}
5479
5442
  export const SearchAction: SearchActionFactory;
5480
5443
 
5481
5444
  // Setter
@@ -5600,7 +5563,7 @@ export namespace widgets {
5600
5563
 
5601
5564
  export type Slider = widgets.Slider;
5602
5565
  export type SliderConstructor = typeof widgets.Slider;
5603
- export interface SliderFactory extends Factory<SliderConstructor>, SliderConstructor {}
5566
+ export interface SliderFactory extends Factory<SliderConstructor, widgets.Slider>, SliderConstructor {}
5604
5567
  export const Slider: SliderFactory;
5605
5568
 
5606
5569
  // Stack
@@ -5651,7 +5614,7 @@ export namespace widgets {
5651
5614
 
5652
5615
  export type Stack = widgets.Stack;
5653
5616
  export type StackConstructor = typeof widgets.Stack;
5654
- export interface StackFactory extends Factory<StackConstructor>, StackConstructor {}
5617
+ export interface StackFactory extends Factory<StackConstructor, widgets.Stack>, StackConstructor {}
5655
5618
  export const Stack: StackFactory;
5656
5619
 
5657
5620
  // StackLayout
@@ -5861,7 +5824,7 @@ export namespace widgets {
5861
5824
 
5862
5825
  export type Switch = widgets.Switch;
5863
5826
  export type SwitchConstructor = typeof widgets.Switch;
5864
- export interface SwitchFactory extends Factory<SwitchConstructor>, SwitchConstructor {}
5827
+ export interface SwitchFactory extends Factory<SwitchConstructor, widgets.Switch>, SwitchConstructor {}
5865
5828
  export const Switch: SwitchFactory;
5866
5829
 
5867
5830
  // Tab
@@ -5883,35 +5846,6 @@ export namespace widgets {
5883
5846
  */
5884
5847
  public constructor(properties?: Properties<Tab>);
5885
5848
 
5886
- /**
5887
- * Appends this widget to the given `TabFolder` instance.
5888
- * @param parent
5889
- */
5890
- appendTo(parent: TabFolder): this;
5891
-
5892
- /**
5893
- * Inserts this widget directly after the given `Tab`.
5894
- * @param widget
5895
- */
5896
- insertAfter(widget: Tab): this;
5897
-
5898
- /**
5899
- * Inserts this widget directly before the given `Tab`.
5900
- * @param widget
5901
- */
5902
- insertBefore(widget: Tab): this;
5903
-
5904
- /**
5905
- * Returns the `TabFolder` the `Tab` is hosted in or `null` if it has no parent.
5906
- */
5907
- parent(): TabFolder;
5908
-
5909
- /**
5910
- * Returns a (possibly empty) collection of all siblings of this widget that match the given selector.
5911
- * @param selector A selector expression or a predicate function to filter the results.
5912
- */
5913
- siblings<Result extends Widget = Tab>(selector?: Selector<Widget, Result>): WidgetCollection<Result>;
5914
-
5915
5849
  /**
5916
5850
  * A badge to attach on the tab. Setting the `badge` to `0` hides the badge. The background color of the
5917
5851
  * badge can be controlled with the `badgeColor` property.
@@ -5992,7 +5926,7 @@ export namespace widgets {
5992
5926
 
5993
5927
  export type Tab = widgets.Tab;
5994
5928
  export type TabConstructor = typeof widgets.Tab;
5995
- export interface TabFactory extends Factory<TabConstructor>, TabConstructor {}
5929
+ export interface TabFactory extends Factory<TabConstructor, widgets.Tab>, TabConstructor {}
5996
5930
  export const Tab: TabFactory;
5997
5931
 
5998
5932
  // TabFolder
@@ -6148,7 +6082,7 @@ export namespace widgets {
6148
6082
 
6149
6083
  export type TabFolder<TabType extends Tab = Tab> = widgets.TabFolder<TabType>;
6150
6084
  export type TabFolderConstructor = typeof widgets.TabFolder;
6151
- export interface TabFolderFactory extends Factory<TabFolderConstructor>, TabFolderConstructor {}
6085
+ export interface TabFolderFactory extends Factory<TabFolderConstructor, widgets.TabFolder>, TabFolderConstructor {}
6152
6086
  export const TabFolder: TabFolderFactory;
6153
6087
 
6154
6088
  // Tabris
@@ -6614,7 +6548,7 @@ export namespace widgets {
6614
6548
 
6615
6549
  export type TextInput = widgets.TextInput;
6616
6550
  export type TextInputConstructor = typeof widgets.TextInput;
6617
- export interface TextInputFactory extends Factory<TextInputConstructor>, TextInputConstructor {}
6551
+ export interface TextInputFactory extends Factory<TextInputConstructor, widgets.TextInput>, TextInputConstructor {}
6618
6552
  export const TextInput: TextInputFactory;
6619
6553
 
6620
6554
  // TextResources
@@ -6785,7 +6719,7 @@ export namespace widgets {
6785
6719
 
6786
6720
  export type TextView = widgets.TextView;
6787
6721
  export type TextViewConstructor = typeof widgets.TextView;
6788
- export interface TextViewFactory extends Factory<TextViewConstructor>, TextViewConstructor {}
6722
+ export interface TextViewFactory extends Factory<TextViewConstructor, widgets.TextView>, TextViewConstructor {}
6789
6723
  export const TextView: TextViewFactory;
6790
6724
 
6791
6725
  // TimeDialog
@@ -6959,7 +6893,7 @@ export namespace widgets {
6959
6893
 
6960
6894
  export type ToggleButton = widgets.ToggleButton;
6961
6895
  export type ToggleButtonConstructor = typeof widgets.ToggleButton;
6962
- export interface ToggleButtonFactory extends Factory<ToggleButtonConstructor>, ToggleButtonConstructor {}
6896
+ export interface ToggleButtonFactory extends Factory<ToggleButtonConstructor, widgets.ToggleButton>, ToggleButtonConstructor {}
6963
6897
  export const ToggleButton: ToggleButtonFactory;
6964
6898
 
6965
6899
  // Video
@@ -7095,7 +7029,7 @@ export namespace widgets {
7095
7029
 
7096
7030
  export type Video = widgets.Video;
7097
7031
  export type VideoConstructor = typeof widgets.Video;
7098
- export interface VideoFactory extends Factory<VideoConstructor>, VideoConstructor {}
7032
+ export interface VideoFactory extends Factory<VideoConstructor, widgets.Video>, VideoConstructor {}
7099
7033
  export const Video: VideoFactory;
7100
7034
 
7101
7035
  // WebView
@@ -7248,7 +7182,7 @@ export namespace widgets {
7248
7182
 
7249
7183
  export type WebView = widgets.WebView;
7250
7184
  export type WebViewConstructor = typeof widgets.WebView;
7251
- export interface WebViewFactory extends Factory<WebViewConstructor>, WebViewConstructor {}
7185
+ export interface WebViewFactory extends Factory<WebViewConstructor, widgets.WebView>, WebViewConstructor {}
7252
7186
  export const WebView: WebViewFactory;
7253
7187
 
7254
7188
  // Widget
@@ -7385,7 +7319,7 @@ export class Widget<TData extends object = any> extends NativeObject {
7385
7319
  * parent matches.
7386
7320
  * @param selector A selector expression or a predicate function to filter the results.
7387
7321
  */
7388
- parent<Result extends Composite = Composite>(selector: Selector<Composite, Result>): Result;
7322
+ parent<Result extends Composite = Composite>(selector: ParentSelector<Composite, Result>): Result;
7389
7323
 
7390
7324
  /**
7391
7325
  * Returns a (possibly empty) collection of all siblings of this widget that match the given selector.
@@ -7800,7 +7734,7 @@ export class Widget<TData extends object = any> extends NativeObject {
7800
7734
  * parent. To shorten this common use case the `WidgetCollection` is also available as the alias
7801
7735
  * ["$"](./$.md). This alias still needs to be imported from the tabris module though.
7802
7736
  */
7803
- export class WidgetCollection<WidgetType extends Widget = Widget> {
7737
+ export class WidgetCollection<WidgetType extends AnyWidget = Widget> {
7804
7738
 
7805
7739
  /**
7806
7740
  * A `WidgetCollection` is an array-like object representing a set of widgets, as returned by the widget
package/tabris.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Tabris.js 3.9.0-dev.20221108+0310
2
+ * Tabris.js 3.9.0-dev.20221109+0310
3
3
  *
4
4
  * Copyright (c) 2014, 2020 EclipseSource Inc.
5
5
  * All rights reserved.
@@ -2221,7 +2221,7 @@ class Observable {
2221
2221
  Observable.deferred.shift()();
2222
2222
  }
2223
2223
  catch (ex) {
2224
- console.error(ex.message);
2224
+ console.error(ex === null || ex === void 0 ? void 0 : ex.message);
2225
2225
  }
2226
2226
  }
2227
2227
  }
@@ -2399,9 +2399,9 @@ var internal;
2399
2399
  var _a;
2400
2400
  const target = change.target;
2401
2401
  const value = change.target[change.property];
2402
- const subscriptionKey = `$${change.property}Subscription`;
2402
+ const subscriptionKey = `$${String(change.property)}Subscription`;
2403
2403
  const subscriptions = change.subscriptions || target;
2404
- const eventName = change.property + 'Changed';
2404
+ const eventName = String(change.property) + 'Changed';
2405
2405
  let subscription = null;
2406
2406
  (_a = subscriptions[subscriptionKey]) === null || _a === void 0 ? void 0 : _a.unsubscribe();
2407
2407
  if (!change.init) {
@@ -2457,7 +2457,7 @@ const ObservableData = new Proxy(internal.ObservableData, {
2457
2457
  ObservableData.prototype.constructor = ObservableData;
2458
2458
  function hasSetter(target, property) {
2459
2459
  var _a;
2460
- return property in Reflect.getPrototypeOf(target)
2460
+ return property in (Reflect.getPrototypeOf(target) || {})
2461
2461
  || !!((_a = Reflect.getOwnPropertyDescriptor(target, property)) === null || _a === void 0 ? void 0 : _a.set);
2462
2462
  }
2463
2463
  function isPublicProperty(property, value) {
@@ -2929,7 +2929,7 @@ class JsxProcessor {
2929
2929
  return result;
2930
2930
  }
2931
2931
  catch (ex) {
2932
- throw new Error(`JSX: "${ex.message}" ${getCurrentLine(ex)}`);
2932
+ throw new Error(`JSX: "${ex === null || ex === void 0 ? void 0 : ex.message}" ${getCurrentLine(ex)}`);
2933
2933
  }
2934
2934
  }
2935
2935
  createIntrinsicElement(el, attributes) {
@@ -2949,7 +2949,7 @@ class JsxProcessor {
2949
2949
  encoded[attribute] = encoder(attributes[attribute]);
2950
2950
  }
2951
2951
  catch (ex) {
2952
- throw new Error(`Element "${el}" attribute "${attribute}" can not bet set: ${ex.message}`);
2952
+ throw new Error(`Element "${el}" attribute "${attribute}" can not bet set: ${ex === null || ex === void 0 ? void 0 : ex.message}`);
2953
2953
  }
2954
2954
  });
2955
2955
  const text = joinTextContent(encoded.children, true);
@@ -4398,7 +4398,7 @@ class NativeObject extends EventsClass {
4398
4398
  return convertedValue;
4399
4399
  }
4400
4400
  _printPropertyWarning(name, ex) {
4401
- hint(this, 'Ignored unsupported value for property "' + name + '": ' + ex.message);
4401
+ hint(this, 'Ignored unsupported value for property "' + name + '": ' + (ex === null || ex === void 0 ? void 0 : ex.message));
4402
4402
  }
4403
4403
  _storeProperty(name, newValue, noChangeEvent = false) {
4404
4404
  if (newValue === this._getStoredProperty(name) && this._wasSet(name)) {
@@ -4459,7 +4459,7 @@ class NativeObject extends EventsClass {
4459
4459
  _release() { }
4460
4460
  /**
4461
4461
  * Called when a property is about to be changed, past conversion and all
4462
- * other pre-checks. May have side-effects. Exceptions will not be catched.
4462
+ * other pre-checks. May have side-effects. Exceptions will not be caught.
4463
4463
  */
4464
4464
  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
4465
4465
  _beforePropertyChange(name, value) { }
@@ -4479,9 +4479,8 @@ class NativeObject extends EventsClass {
4479
4479
  return this.$trigger(name, eventData);
4480
4480
  }
4481
4481
  $trigger(name, eventData = {}) {
4482
- var _a;
4483
4482
  const dispatchObject = this[notify](name, eventData, false);
4484
- return !!((_a = dispatchObject) === null || _a === void 0 ? void 0 : _a.defaultPrevented);
4483
+ return !!(dispatchObject === null || dispatchObject === void 0 ? void 0 : dispatchObject.defaultPrevented);
4485
4484
  }
4486
4485
  _onoff(name, listening, listener) {
4487
4486
  if (listening) {
@@ -5035,7 +5034,7 @@ class Tabris extends NativeObject {
5035
5034
  this.$publishProxies();
5036
5035
  }
5037
5036
  get version() {
5038
- return '3.9.0-dev.20221108+0310';
5037
+ return '3.9.0-dev.20221109+0310';
5039
5038
  }
5040
5039
  get started() {
5041
5040
  return !!this._started;