@nativescript-community/ui-pager 13.0.28
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/CHANGELOG.md +224 -0
- package/LICENSE +201 -0
- package/angular/bundles/nativescript-community-ui-pager-angular.umd.js +753 -0
- package/angular/bundles/nativescript-community-ui-pager-angular.umd.js.map +1 -0
- package/angular/esm2015/index.js +55 -0
- package/angular/esm2015/nativescript-community-ui-pager-angular.js +2 -0
- package/angular/esm2015/pager-items-comp.js +312 -0
- package/angular/fesm2015/nativescript-community-ui-pager-angular.js +366 -0
- package/angular/fesm2015/nativescript-community-ui-pager-angular.js.map +1 -0
- package/angular/index.d.ts +18 -0
- package/angular/nativescript-community-ui-pager-angular.d.ts +2 -0
- package/angular/package.json +16 -0
- package/angular/pager-items-comp.d.ts +85 -0
- package/package.json +55 -0
- package/pager.android.d.ts +79 -0
- package/pager.android.js +954 -0
- package/pager.android.js.map +1 -0
- package/pager.common.d.ts +128 -0
- package/pager.common.js +393 -0
- package/pager.common.js.map +1 -0
- package/pager.d.ts +35 -0
- package/pager.ios.d.ts +115 -0
- package/pager.ios.js +1175 -0
- package/pager.ios.js.map +1 -0
- package/platforms/android/include.gradle +20 -0
- package/platforms/android/native-api-usage.json +10 -0
- package/platforms/ios/Podfile +1 -0
- package/platforms/ios/native-api-usage.json +7 -0
- package/react/index.d.ts +301 -0
- package/react/index.js +151 -0
- package/react/index.js.map +1 -0
- package/references.d.ts +1 -0
- package/svelte/index.d.ts +19 -0
- package/svelte/index.js +117 -0
- package/svelte/index.js.map +1 -0
- package/typings/viewpager2.d.ts +470 -0
- package/vue/index.d.ts +4 -0
- package/vue/index.js +9 -0
- package/vue/index.js.map +1 -0
- package/vue/pager.d.ts +47 -0
- package/vue/pager.js +104 -0
- package/vue/pager.js.map +1 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nativescript-community-ui-pager-angular.js","sources":["../../../src/angular/pager-items-comp.ts","../../../src/angular/index.ts"],"sourcesContent":["import {\n AfterContentInit,\n Component,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Host,\n Inject,\n InjectionToken,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ɵisListLikeIterable as isListLikeIterable\n} from '@angular/core';\nimport {\n Pager,\n PagerError,\n PagerItem,\n PagerLog\n} from '@nativescript-community/ui-pager';\nimport {\n getSingleViewRecursive,\n isInvisibleNode,\n registerElement\n} from '@nativescript/angular';\nimport { EventData, isIOS, KeyedTemplate, LayoutBase, Template, Trace, View } from '@nativescript/core';\nimport { ObservableArray } from '@nativescript/core/data/observable-array';\nimport { profile } from '@nativescript/core/profiling';\nimport { ItemEventData, ItemsSource } from '@nativescript/core/ui/list-view';\n\n\nregisterElement('Pager', () => Pager);\nregisterElement('PagerItem', () => PagerItem);\n\nconst NG_VIEW = '_ngViewRef';\n\nexport interface PagerTemplatedItemsView {\n items: any[] | ItemsSource;\n itemTemplate: string | Template;\n itemTemplates?: string | KeyedTemplate[];\n\n refresh(): void;\n\n on(\n event: 'itemDisposing' | 'itemLoading',\n callback: (args: ItemEventData) => void,\n thisArg?: any\n );\n\n off(\n event: 'itemLoading' | 'itemDisposing',\n callback: (args: EventData) => void,\n thisArg?: any\n );\n\n}\n\nexport class ItemContext {\n constructor(\n public $implicit?: any,\n public item?: any,\n public index?: number,\n public even?: boolean,\n public odd?: boolean\n ) {}\n}\n\nexport interface SetupItemViewArgs {\n view: EmbeddedViewRef<any>;\n data: any;\n index: number;\n context: ItemContext;\n}\n@Component({\n template: '',\n})\nexport abstract class TemplatedItemsComponent\nimplements DoCheck, OnDestroy, AfterContentInit {\n public abstract get nativeElement(): Pager;\n\n protected templatedItemsView: Pager;\n protected _items: any;\n protected _differ: IterableDiffer<KeyedTemplate>;\n protected _templateMap: Map<string, KeyedTemplate>;\n private _selectedIndex: number;\n @ViewChild('loader', { read: ViewContainerRef, static: false })\n loader: ViewContainerRef;\n\n @Output()\n public setupItemView = new EventEmitter<SetupItemViewArgs>();\n\n @ContentChild(TemplateRef, { static: false })\n itemTemplateQuery: TemplateRef<ItemContext>;\n\n itemTemplate: TemplateRef<ItemContext>;\n\n @Input()\n get items() {\n return this._items;\n }\n\n set items(value: any) {\n this._items = value;\n let needDiffer = true;\n if (value instanceof ObservableArray) {\n needDiffer = false;\n }\n if (needDiffer && !this._differ && isListLikeIterable(value)) {\n this._differ = this._iterableDiffers\n .find(this._items)\n .create((_index, item) => item);\n }\n\n this.templatedItemsView.items = this._items;\n }\n\n @Input()\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n set selectedIndex(value) {\n this._selectedIndex = value;\n this.templatedItemsView.selectedIndex = this._selectedIndex;\n }\n\n ngAfterViewInit() {\n if (!!(this._selectedIndex)) {\n setTimeout(() => {\n if (isIOS) {\n this.templatedItemsView.scrollToIndexAnimated(\n this._selectedIndex,\n false\n );\n }\n this.templatedItemsView.selectedIndex = this._selectedIndex;\n });\n }\n }\n\n constructor(\n _elementRef: ElementRef,\n private _iterableDiffers: IterableDiffers\n ) {\n this.templatedItemsView = _elementRef.nativeElement;\n\n this.templatedItemsView.on('itemLoading', this.onItemLoading, this);\n this.templatedItemsView.on('itemDisposing', this.onItemDisposing, this);\n }\n\n ngAfterContentInit() {\n if (Trace.isEnabled()) {\n PagerLog('TemplatedItemsView.ngAfterContentInit()');\n }\n this.setItemTemplates();\n }\n\n ngOnDestroy() {\n this.templatedItemsView.off('itemLoading', this.onItemLoading, this);\n this.templatedItemsView.off(\n 'itemDisposing',\n this.onItemDisposing,\n this\n );\n }\n\n private setItemTemplates() {\n if (!this.items) return;\n // The itemTemplateQuery may be changed after list items are added that contain <template> inside,\n // so cache and use only the original template to avoid errors.\n this.itemTemplate = this.itemTemplateQuery;\n\n if (this._templateMap) {\n if (Trace.isEnabled()) {\n PagerLog('Setting templates');\n }\n\n const templates: KeyedTemplate[] = [];\n this._templateMap.forEach((value) => {\n templates.push(value);\n });\n this.templatedItemsView.itemTemplates = templates;\n }\n }\n\n public registerTemplate(key: string, template: TemplateRef<ItemContext>) {\n if (Trace.isEnabled()) {\n PagerLog(`registerTemplate for key: ${key}`);\n }\n\n if (!this._templateMap) {\n this._templateMap = new Map<string, KeyedTemplate>();\n }\n\n const keyedTemplate = {\n key,\n createView: this.getItemTemplateViewFactory(template),\n };\n\n this._templateMap.set(key, keyedTemplate);\n }\n\n @profile\n public onItemLoading(args: ItemEventData) {\n if (!args.view && !this.itemTemplate) {\n return;\n }\n\n if (!this.items) return;\n\n const index = args.index;\n const items = (<any>args.object).items;\n const currentItem =\n typeof items.getItem === 'function'\n ? items.getItem(index)\n : items[index];\n let viewRef: EmbeddedViewRef<ItemContext>;\n\n if (args.view) {\n if (Trace.isEnabled()) {\n PagerLog(`onItemLoading: ${index} - Reusing existing view`);\n }\n\n viewRef = args.view[NG_VIEW];\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (\n !viewRef &&\n args.view instanceof LayoutBase &&\n args.view.getChildrenCount() > 0\n ) {\n viewRef = args.view.getChildAt(0)[NG_VIEW];\n }\n\n if (!viewRef && Trace.isEnabled()) {\n PagerError(\n `ViewReference not found for item ${index}. View recycling is not working`\n );\n }\n }\n\n if (!viewRef) {\n if (Trace.isEnabled()) {\n PagerLog(\n `onItemLoading: ${index} - Creating view from template`\n );\n }\n\n viewRef = this.loader.createEmbeddedView(\n this.itemTemplate,\n new ItemContext(),\n 0\n );\n args.view = getItemViewRoot(viewRef);\n args.view[NG_VIEW] = viewRef;\n }\n\n this.setupViewRef(viewRef, currentItem, index);\n\n this.detectChangesOnChild(viewRef, index);\n }\n\n @profile\n public onItemDisposing(args: ItemEventData) {\n if (!args.view) {\n return;\n }\n let viewRef: EmbeddedViewRef<ItemContext>;\n\n if (args.view) {\n if (Trace.isEnabled()) {\n PagerLog(\n `onItemDisposing: ${args.index} - Removing angular view`\n );\n }\n\n viewRef = args.view[NG_VIEW];\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (\n !viewRef &&\n args.view instanceof LayoutBase &&\n args.view.getChildrenCount() > 0\n ) {\n viewRef = args.view.getChildAt(0)[NG_VIEW];\n }\n\n if (!viewRef && Trace.isEnabled()) {\n PagerError(\n `ViewReference not found for item ${args.index}. View disposing is not working`\n );\n }\n }\n\n if (viewRef) {\n if (Trace.isEnabled()) {\n PagerLog(\n `onItemDisposing: ${args.index} - Disposing view reference`\n );\n }\n\n viewRef.destroy();\n }\n }\n\n public setupViewRef(\n viewRef: EmbeddedViewRef<ItemContext>,\n data: any,\n index: number\n ): void {\n const context = viewRef.context;\n context.$implicit = data;\n context.item = data;\n context.index = index;\n context.even = index % 2 === 0;\n context.odd = !context.even;\n\n this.setupItemView.next({\n view: viewRef,\n data,\n index,\n context,\n });\n }\n\n protected getItemTemplateViewFactory(\n template: TemplateRef<ItemContext>\n ): () => View {\n return () => {\n const viewRef = this.loader.createEmbeddedView(\n template,\n new ItemContext(),\n 0\n );\n const resultView = getItemViewRoot(viewRef);\n resultView[NG_VIEW] = viewRef;\n\n return resultView;\n };\n }\n\n @profile\n private detectChangesOnChild(\n viewRef: EmbeddedViewRef<ItemContext>,\n index: number\n ) {\n if (Trace.isEnabled()) {\n PagerLog(`Manually detect changes in child: ${index}`);\n }\n\n viewRef.markForCheck();\n viewRef.detectChanges();\n }\n\n ngDoCheck() {\n if (this._differ) {\n if (Trace.isEnabled()) {\n PagerLog('ngDoCheck() - execute differ');\n }\n\n const changes = this._differ.diff(this._items);\n if (changes) {\n if (Trace.isEnabled()) {\n PagerLog('ngDoCheck() - refresh');\n }\n\n this.templatedItemsView.refresh();\n }\n }\n }\n}\n\nexport interface ComponentView {\n rootNodes: any[];\n\n destroy(): void;\n}\n\nexport type RootLocator = (nodes: any[], nestLevel: number) => View;\n\nexport function getItemViewRoot(\n viewRef: ComponentView,\n rootLocator: RootLocator = getSingleViewRecursive as any\n): View {\n return rootLocator(viewRef.rootNodes, 0);\n}\n\nexport const TEMPLATED_ITEMS_COMPONENT = new InjectionToken<\nTemplatedItemsComponent\n>('TemplatedItemsComponent');\n\n@Directive({\n selector: '[pagerItem]',\n})\nexport class PagerItemDirective implements OnInit {\n private item: PagerItem;\n\n constructor(\n private templateRef: TemplateRef<any>,\n @Inject(TEMPLATED_ITEMS_COMPONENT)\n @Host()\n private owner: TemplatedItemsComponent,\n private viewContainer: ViewContainerRef\n ) {}\n\n private ensureItem() {\n if (!this.item) {\n this.item = new PagerItem();\n }\n }\n\n private applyConfig() {\n this.ensureItem();\n }\n\n ngOnInit() {\n this.applyConfig();\n\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n // Filter out text nodes and comments\n const realViews = viewRef.rootNodes.filter(\n (node) => !isInvisibleNode(node)\n );\n\n if (realViews.length > 0) {\n const view = realViews[0];\n this.item.addChild(view);\n this.owner.nativeElement._addChildFromBuilder(\n 'PagerItem',\n this.item\n );\n }\n }\n}\n\n@Directive({ selector: '[pagerTemplateKey]' })\nexport class TemplateKeyDirective {\n constructor(\n private templateRef: TemplateRef<any>,\n @Inject(TEMPLATED_ITEMS_COMPONENT)\n @Host()\n private comp: TemplatedItemsComponent\n ) {}\n\n @Input()\n set pagerTemplateKey(value: any) {\n if (this.comp && this.templateRef) {\n this.comp.registerTemplate(value, this.templateRef);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n IterableDiffers,\n NO_ERRORS_SCHEMA,\n NgModule,\n forwardRef\n} from '@angular/core';\n\nimport { Pager } from '@nativescript-community/ui-pager';\nimport {\n PagerItemDirective,\n TEMPLATED_ITEMS_COMPONENT,\n TemplateKeyDirective,\n TemplatedItemsComponent\n} from './pager-items-comp';\n\nexport {PagerItemDirective, TemplatedItemsComponent, TemplateKeyDirective} from './pager-items-comp';\n\n@Component({\n selector: 'Pager',\n template: `\n\t\t<DetachedContainer>\n\t\t\t<Placeholder #loader></Placeholder>\n\t\t</DetachedContainer>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TEMPLATED_ITEMS_COMPONENT,\n useExisting: forwardRef(() => PagerComponent)\n }\n ]\n})\n\nexport class PagerComponent extends TemplatedItemsComponent {\n public get nativeElement(): Pager {\n return this.templatedItemsView;\n }\n\n protected templatedItemsView: Pager;\n\n constructor(_elementRef: ElementRef, _iterableDiffers: IterableDiffers) {\n super(_elementRef, _iterableDiffers);\n }\n}\n\n@NgModule({\n declarations: [PagerComponent, TemplateKeyDirective, PagerItemDirective],\n exports: [PagerComponent, TemplateKeyDirective, PagerItemDirective],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class PagerModule {\n}\n"],"names":["isListLikeIterable"],"mappings":";;;;;;;;;AAwCA,eAAe,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC;AACtC,eAAe,CAAC,WAAW,EAAE,MAAM,SAAS,CAAC,CAAC;AAE9C,MAAM,OAAO,GAAG,YAAY,CAAC;MAuBhB,WAAW;IACpB,YACW,SAAe,EACf,IAAU,EACV,KAAc,EACd,IAAc,EACd,GAAa;QAJb,cAAS,GAAT,SAAS,CAAM;QACf,SAAI,GAAJ,IAAI,CAAM;QACV,UAAK,GAAL,KAAK,CAAS;QACd,SAAI,GAAJ,IAAI,CAAU;QACd,QAAG,GAAH,GAAG,CAAU;KACpB;CACP;MAWqB,uBAAuB;IAgEzC,YACI,WAAuB,EACf,gBAAiC;QAAjC,qBAAgB,GAAhB,gBAAgB,CAAiB;QArDtC,kBAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;QAuDzD,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,aAAa,CAAC;QAEpD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;KAC3E;IApDD,IACI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IAAI,KAAK,CAAC,KAAU;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,KAAK,YAAY,eAAe,EAAE;YAClC,UAAU,GAAG,KAAK,CAAC;SACtB;QACD,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,IAAIA,mBAAkB,CAAC,KAAK,CAAC,EAAE;YAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB;iBAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;iBACjB,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;KAC/C;IAED,IACI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,IAAI,aAAa,CAAC,KAAK;QACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;KAC/D;IAED,eAAe;QACX,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE;YACzB,UAAU,CAAC;gBACP,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CACzC,IAAI,CAAC,cAAc,EACnB,KAAK,CACR,CAAC;iBACL;gBACD,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;aAC/D,CAAC,CAAC;SACN;KACJ;IAYD,kBAAkB;QACd,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;YACnB,QAAQ,CAAC,yCAAyC,CAAC,CAAC;SACvD;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAED,WAAW;QACP,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACvB,eAAe,EACf,IAAI,CAAC,eAAe,EACpB,IAAI,CACP,CAAC;KACL;IAEO,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAGxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE3C,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBACnB,QAAQ,CAAC,mBAAmB,CAAC,CAAC;aACjC;YAED,MAAM,SAAS,GAAoB,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK;gBAC5B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,SAAS,CAAC;SACrD;KACJ;IAEM,gBAAgB,CAAC,GAAW,EAAE,QAAkC;QACnE,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;YACnB,QAAQ,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;SACxD;QAED,MAAM,aAAa,GAAG;YAClB,GAAG;YACH,UAAU,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;SACxD,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;KAC7C;IAGM,aAAa,CAAC,IAAmB;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAClC,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAS,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC;QACvC,MAAM,WAAW,GACb,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;cAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;cACpB,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,OAAqC,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBACnB,QAAQ,CAAC,kBAAkB,KAAK,0BAA0B,CAAC,CAAC;aAC/D;YAED,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAG7B,IACI,CAAC,OAAO;gBACR,IAAI,CAAC,IAAI,YAAY,UAAU;gBAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAClC;gBACE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBAC/B,UAAU,CACN,oCAAoC,KAAK,iCAAiC,CAC7E,CAAC;aACL;SACJ;QAED,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBACnB,QAAQ,CACJ,kBAAkB,KAAK,gCAAgC,CAC1D,CAAC;aACL;YAED,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CACpC,IAAI,CAAC,YAAY,EACjB,IAAI,WAAW,EAAE,EACjB,CAAC,CACJ,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;SAChC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAE/C,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAC7C;IAGM,eAAe,CAAC,IAAmB;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO;SACV;QACD,IAAI,OAAqC,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBACnB,QAAQ,CACJ,oBAAoB,IAAI,CAAC,KAAK,0BAA0B,CAC3D,CAAC;aACL;YAED,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAG7B,IACI,CAAC,OAAO;gBACR,IAAI,CAAC,IAAI,YAAY,UAAU;gBAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAClC;gBACE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBAC/B,UAAU,CACN,oCAAoC,IAAI,CAAC,KAAK,iCAAiC,CAClF,CAAC;aACL;SACJ;QAED,IAAI,OAAO,EAAE;YACT,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBACnB,QAAQ,CACJ,oBAAoB,IAAI,CAAC,KAAK,6BAA6B,CAC9D,CAAC;aACL;YAED,OAAO,CAAC,OAAO,EAAE,CAAC;SACrB;KACJ;IAEM,YAAY,CACf,OAAqC,EACrC,IAAS,EACT,KAAa;QAEb,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,OAAO;YACb,IAAI;YACJ,KAAK;YACL,OAAO;SACV,CAAC,CAAC;KACN;IAES,0BAA0B,CAChC,QAAkC;QAElC,OAAO;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC1C,QAAQ,EACR,IAAI,WAAW,EAAE,EACjB,CAAC,CACJ,CAAC;YACF,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;YAE9B,OAAO,UAAU,CAAC;SACrB,CAAC;KACL;IAGO,oBAAoB,CACxB,OAAqC,EACrC,KAAa;QAEb,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;YACnB,QAAQ,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;SAC1D;QAED,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,CAAC,aAAa,EAAE,CAAC;KAC3B;IAED,SAAS;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;gBACnB,QAAQ,CAAC,8BAA8B,CAAC,CAAC;aAC5C;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE;gBACT,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;oBACnB,QAAQ,CAAC,uBAAuB,CAAC,CAAC;iBACrC;gBAED,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;aACrC;SACJ;KACJ;;8FArSiB,uBAAuB;4DAAvB,uBAAuB;oCAe3B,WAAW;;;;;+BANI,gBAAgB;;;;;AAsH7C;IADC,OAAO;4DA0DP;AAGD;IADC,OAAO;8DAyCP;AAuCD;IADC,OAAO;mEAWP;uFApRiB,uBAAuB;cAH5C,SAAS;eAAC;gBACP,QAAQ,EAAE,EAAE;aACf;2FAWG,MAAM;kBADL,SAAS;mBAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE;YAIvD,aAAa;kBADnB,MAAM;YAIP,iBAAiB;kBADhB,YAAY;mBAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAMxC,KAAK;kBADR,KAAK;YAqBF,aAAa;kBADhB,KAAK;YAuFC,aAAa,MA4Db,eAAe,MA+Ed,oBAAoB;SAsChB,eAAe,CAC3B,OAAsB,EACtB,cAA2B,sBAA6B;IAExD,OAAO,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAEM,MAAM,yBAAyB,GAAG,IAAI,cAAc,CAEzD,yBAAyB,CAAC,CAAC;MAKhB,kBAAkB;IAG3B,YACY,WAA6B,EAG7B,KAA8B,EAC9B,aAA+B;QAJ/B,gBAAW,GAAX,WAAW,CAAkB;QAG7B,UAAK,GAAL,KAAK,CAAyB;QAC9B,kBAAa,GAAb,aAAa,CAAkB;KACvC;IAEI,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;SAC/B;KACJ;IAEO,WAAW;QACf,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,QAAQ;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAExE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CACtC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CACnC,CAAC;QAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CACzC,WAAW,EACX,IAAI,CAAC,IAAI,CACZ,CAAC;SACL;KACJ;;oFAtCQ,kBAAkB,6DAKf,yBAAyB;uDAL5B,kBAAkB;uFAAlB,kBAAkB;cAH9B,SAAS;eAAC;gBACP,QAAQ,EAAE,aAAa;aAC1B;gEAQsB,uBAAuB;sBAFrC,MAAM;uBAAC,yBAAyB;;sBAChC,IAAI;;MAoCA,oBAAoB;IAC7B,YACY,WAA6B,EAG7B,IAA6B;QAH7B,gBAAW,GAAX,WAAW,CAAkB;QAG7B,SAAI,GAAJ,IAAI,CAAyB;KACrC;IAEJ,IACI,gBAAgB,CAAC,KAAU;QAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SACvD;KACJ;;wFAbQ,oBAAoB,6DAGjB,yBAAyB;yDAH5B,oBAAoB;uFAApB,oBAAoB;cADhC,SAAS;eAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE;gEAMvB,uBAAuB;sBAFpC,MAAM;uBAAC,yBAAyB;;sBAChC,IAAI;wBAKL,gBAAgB;kBADnB,KAAK;;;MClaG,cAAe,SAAQ,uBAAuB;IAOvD,YAAY,WAAuB,EAAE,gBAAiC;QAClE,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;KACxC;IARD,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;;4EAHQ,cAAc;mDAAd,cAAc,2DARZ;YACP;gBACI,OAAO,EAAE,yBAAyB;gBAClC,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;aAChD;SACJ;QATH,yCAAmB;QAClB,uCAAmC;QACpC,iBAAoB;;uFAUT,cAAc;cAf1B,SAAS;eAAC;gBACP,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE;;;uBAGS;gBACnB,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,SAAS,EAAE;oBACP;wBACI,OAAO,EAAE,yBAAyB;wBAClC,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;qBAChD;iBACJ;aACJ;;MAmBY,WAAW;;sEAAX,WAAW;+CAAX,WAAW;;uFAAX,WAAW;cALvB,QAAQ;eAAC;gBACN,YAAY,EAAE,CAAC,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;gBACxE,OAAO,EAAE,CAAC,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;gBACnE,OAAO,EAAE,CAAC,gBAAgB,CAAC;aAC9B;;wFACY,WAAW,mBAjBX,cAAc,EAaQ,oBAAoB,EAAE,kBAAkB,aAb9D,cAAc,EAcG,oBAAoB,EAAE,kBAAkB;;;;"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { ElementRef, IterableDiffers } from '@angular/core';
|
2
|
+
import { Pager } from '@nativescript-community/ui-pager';
|
3
|
+
import { TemplatedItemsComponent } from './pager-items-comp';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "./pager-items-comp";
|
6
|
+
export { PagerItemDirective, TemplatedItemsComponent, TemplateKeyDirective } from './pager-items-comp';
|
7
|
+
export declare class PagerComponent extends TemplatedItemsComponent {
|
8
|
+
get nativeElement(): Pager;
|
9
|
+
protected templatedItemsView: Pager;
|
10
|
+
constructor(_elementRef: ElementRef, _iterableDiffers: IterableDiffers);
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PagerComponent, never>;
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PagerComponent, "Pager", never, {}, {}, never, never>;
|
13
|
+
}
|
14
|
+
export declare class PagerModule {
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PagerModule, never>;
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<PagerModule, [typeof PagerComponent, typeof i1.TemplateKeyDirective, typeof i1.PagerItemDirective], never, [typeof PagerComponent, typeof i1.TemplateKeyDirective, typeof i1.PagerItemDirective]>;
|
17
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<PagerModule>;
|
18
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"name": "@nativescript-community/ui-pager-angular",
|
3
|
+
"main": "bundles/nativescript-community-ui-pager-angular.umd.js",
|
4
|
+
"module": "fesm2015/nativescript-community-ui-pager-angular.js",
|
5
|
+
"es2015": "fesm2015/nativescript-community-ui-pager-angular.js",
|
6
|
+
"esm2015": "esm2015/nativescript-community-ui-pager-angular.js",
|
7
|
+
"fesm2015": "fesm2015/nativescript-community-ui-pager-angular.js",
|
8
|
+
"typings": "nativescript-community-ui-pager-angular.d.ts",
|
9
|
+
"sideEffects": false,
|
10
|
+
"dependencies": {
|
11
|
+
"tslib": "^2.2.0"
|
12
|
+
},
|
13
|
+
"scripts": {
|
14
|
+
"prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by Ivy in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with Ivy partial compilation mode, before attempting to publish.\\n')\" && exit 1"
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
import { AfterContentInit, DoCheck, ElementRef, EmbeddedViewRef, EventEmitter, InjectionToken, IterableDiffer, IterableDiffers, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
|
2
|
+
import { Pager } from '@nativescript-community/ui-pager';
|
3
|
+
import { EventData, KeyedTemplate, Template, View } from '@nativescript/core';
|
4
|
+
import { ItemEventData, ItemsSource } from '@nativescript/core/ui/list-view';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
export interface PagerTemplatedItemsView {
|
7
|
+
items: any[] | ItemsSource;
|
8
|
+
itemTemplate: string | Template;
|
9
|
+
itemTemplates?: string | KeyedTemplate[];
|
10
|
+
refresh(): void;
|
11
|
+
on(event: 'itemDisposing' | 'itemLoading', callback: (args: ItemEventData) => void, thisArg?: any): any;
|
12
|
+
off(event: 'itemLoading' | 'itemDisposing', callback: (args: EventData) => void, thisArg?: any): any;
|
13
|
+
}
|
14
|
+
export declare class ItemContext {
|
15
|
+
$implicit?: any;
|
16
|
+
item?: any;
|
17
|
+
index?: number;
|
18
|
+
even?: boolean;
|
19
|
+
odd?: boolean;
|
20
|
+
constructor($implicit?: any, item?: any, index?: number, even?: boolean, odd?: boolean);
|
21
|
+
}
|
22
|
+
export interface SetupItemViewArgs {
|
23
|
+
view: EmbeddedViewRef<any>;
|
24
|
+
data: any;
|
25
|
+
index: number;
|
26
|
+
context: ItemContext;
|
27
|
+
}
|
28
|
+
export declare abstract class TemplatedItemsComponent implements DoCheck, OnDestroy, AfterContentInit {
|
29
|
+
private _iterableDiffers;
|
30
|
+
abstract get nativeElement(): Pager;
|
31
|
+
protected templatedItemsView: Pager;
|
32
|
+
protected _items: any;
|
33
|
+
protected _differ: IterableDiffer<KeyedTemplate>;
|
34
|
+
protected _templateMap: Map<string, KeyedTemplate>;
|
35
|
+
private _selectedIndex;
|
36
|
+
loader: ViewContainerRef;
|
37
|
+
setupItemView: EventEmitter<SetupItemViewArgs>;
|
38
|
+
itemTemplateQuery: TemplateRef<ItemContext>;
|
39
|
+
itemTemplate: TemplateRef<ItemContext>;
|
40
|
+
get items(): any;
|
41
|
+
set items(value: any);
|
42
|
+
get selectedIndex(): number;
|
43
|
+
set selectedIndex(value: number);
|
44
|
+
ngAfterViewInit(): void;
|
45
|
+
constructor(_elementRef: ElementRef, _iterableDiffers: IterableDiffers);
|
46
|
+
ngAfterContentInit(): void;
|
47
|
+
ngOnDestroy(): void;
|
48
|
+
private setItemTemplates;
|
49
|
+
registerTemplate(key: string, template: TemplateRef<ItemContext>): void;
|
50
|
+
onItemLoading(args: ItemEventData): void;
|
51
|
+
onItemDisposing(args: ItemEventData): void;
|
52
|
+
setupViewRef(viewRef: EmbeddedViewRef<ItemContext>, data: any, index: number): void;
|
53
|
+
protected getItemTemplateViewFactory(template: TemplateRef<ItemContext>): () => View;
|
54
|
+
private detectChangesOnChild;
|
55
|
+
ngDoCheck(): void;
|
56
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TemplatedItemsComponent, never>;
|
57
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TemplatedItemsComponent, "ng-component", never, { "items": "items"; "selectedIndex": "selectedIndex"; }, { "setupItemView": "setupItemView"; }, ["itemTemplateQuery"], never>;
|
58
|
+
}
|
59
|
+
export interface ComponentView {
|
60
|
+
rootNodes: any[];
|
61
|
+
destroy(): void;
|
62
|
+
}
|
63
|
+
export declare type RootLocator = (nodes: any[], nestLevel: number) => View;
|
64
|
+
export declare function getItemViewRoot(viewRef: ComponentView, rootLocator?: RootLocator): View;
|
65
|
+
export declare const TEMPLATED_ITEMS_COMPONENT: InjectionToken<TemplatedItemsComponent>;
|
66
|
+
export declare class PagerItemDirective implements OnInit {
|
67
|
+
private templateRef;
|
68
|
+
private owner;
|
69
|
+
private viewContainer;
|
70
|
+
private item;
|
71
|
+
constructor(templateRef: TemplateRef<any>, owner: TemplatedItemsComponent, viewContainer: ViewContainerRef);
|
72
|
+
private ensureItem;
|
73
|
+
private applyConfig;
|
74
|
+
ngOnInit(): void;
|
75
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PagerItemDirective, [null, { host: true; }, null]>;
|
76
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<PagerItemDirective, "[pagerItem]", never, {}, {}, never>;
|
77
|
+
}
|
78
|
+
export declare class TemplateKeyDirective {
|
79
|
+
private templateRef;
|
80
|
+
private comp;
|
81
|
+
constructor(templateRef: TemplateRef<any>, comp: TemplatedItemsComponent);
|
82
|
+
set pagerTemplateKey(value: any);
|
83
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TemplateKeyDirective, [null, { host: true; }]>;
|
84
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TemplateKeyDirective, "[pagerTemplateKey]", never, { "pagerTemplateKey": "pagerTemplateKey"; }, {}, never>;
|
85
|
+
}
|
package/package.json
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
{
|
2
|
+
"name": "@nativescript-community/ui-pager",
|
3
|
+
"version": "13.0.28",
|
4
|
+
"description": "A NativeScript Pager / Carousel component that allows the user to swipe left and right through pages of data. ",
|
5
|
+
"main": "pager",
|
6
|
+
"typings": "pager.d.ts",
|
7
|
+
"sideEffects": false,
|
8
|
+
"nativescript": {
|
9
|
+
"platforms": {
|
10
|
+
"android": "6.0.0",
|
11
|
+
"ios": "6.0.0"
|
12
|
+
}
|
13
|
+
},
|
14
|
+
"keywords": [
|
15
|
+
"NativeScript",
|
16
|
+
"JavaScript",
|
17
|
+
"Android",
|
18
|
+
"iOS",
|
19
|
+
"pager",
|
20
|
+
"viewpager",
|
21
|
+
"UIPageViewController",
|
22
|
+
"slides",
|
23
|
+
"Carousel",
|
24
|
+
"ng",
|
25
|
+
"angular",
|
26
|
+
"vue",
|
27
|
+
"vue.js",
|
28
|
+
"react",
|
29
|
+
"svelte",
|
30
|
+
"nativescript-angular",
|
31
|
+
"nativescript-vue",
|
32
|
+
"preview|https://raw.githubusercontent.com/nativescript-community/ui-pager/master/images/demo-ios.gif|iOS Demo",
|
33
|
+
"preview|https://raw.githubusercontent.com/nativescript-community/ui-pager/master/images/demo-android.gif|Android Demo"
|
34
|
+
],
|
35
|
+
"author": {
|
36
|
+
"name": "Martin Guillon",
|
37
|
+
"email": "martin@akylas.fr"
|
38
|
+
},
|
39
|
+
"contributors": [
|
40
|
+
{
|
41
|
+
"name": "Osei Fortune",
|
42
|
+
"email": "fortune.osei@yahoo.com"
|
43
|
+
}
|
44
|
+
],
|
45
|
+
"bugs": {
|
46
|
+
"url": "https://github.com/nativescript-community/ui-pager/issues"
|
47
|
+
},
|
48
|
+
"repository": {
|
49
|
+
"type": "git",
|
50
|
+
"url": "https://github.com/nativescript-community/ui-pager"
|
51
|
+
},
|
52
|
+
"license": "Apache-2.0",
|
53
|
+
"readmeFilename": "README.md",
|
54
|
+
"gitHead": "4b2920be7610afa8e14337bb26e140eb9304fa5d"
|
55
|
+
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import { Property, View } from '@nativescript/core';
|
2
|
+
import { PagerBase } from './pager.common';
|
3
|
+
export * from './pager.common';
|
4
|
+
export { ItemsSource, Transformer } from './pager.common';
|
5
|
+
export declare class Pager extends PagerBase {
|
6
|
+
nativeViewProtected: androidx.viewpager2.widget.ViewPager2;
|
7
|
+
_androidViewId: number;
|
8
|
+
private _disableAnimation;
|
9
|
+
pagesCount: number;
|
10
|
+
widthMeasureSpec: number;
|
11
|
+
heightMeasureSpec: number;
|
12
|
+
perPage: number;
|
13
|
+
private _observableArrayInstance;
|
14
|
+
itemTemplateUpdated(oldData: any, newData: any): void;
|
15
|
+
private _oldDisableAnimation;
|
16
|
+
private _pagerAdapter;
|
17
|
+
private _views;
|
18
|
+
private _pageListener;
|
19
|
+
_realizedItems: Map<globalAndroid.view.View, View>;
|
20
|
+
_childrenViewsType: Map<number, View>;
|
21
|
+
_realizedTemplates: Map<string, Map<globalAndroid.view.View, View>>;
|
22
|
+
lastEvent: number;
|
23
|
+
private _lastSpacing;
|
24
|
+
private _lastPeaking;
|
25
|
+
private compositeTransformer;
|
26
|
+
private marginTransformer;
|
27
|
+
private _transformers;
|
28
|
+
private _selectedIndexBeforeLoad;
|
29
|
+
private _pager;
|
30
|
+
private _indicatorView;
|
31
|
+
constructor();
|
32
|
+
get views(): any[];
|
33
|
+
set views(value: any[]);
|
34
|
+
get pager(): any;
|
35
|
+
get indicatorView(): any;
|
36
|
+
createNativeView(): globalAndroid.widget.RelativeLayout;
|
37
|
+
initNativeView(): void;
|
38
|
+
protected _removeChildView(index: number): void;
|
39
|
+
protected _addChildView(view: any, type: any): void;
|
40
|
+
onLayoutChange(args: any): void;
|
41
|
+
private _setSpacing;
|
42
|
+
private _setPeaking;
|
43
|
+
private _setIndicator;
|
44
|
+
private _setTransformers;
|
45
|
+
private _observableArrayHandler;
|
46
|
+
disposeNativeView(): void;
|
47
|
+
get disableAnimation(): boolean;
|
48
|
+
set disableAnimation(value: boolean);
|
49
|
+
get pagerAdapter(): PagerRecyclerAdapter;
|
50
|
+
get _childrenCount(): number;
|
51
|
+
private _updateScrollPosition;
|
52
|
+
initStaticPagerAdapter(): void;
|
53
|
+
onLoaded(): void;
|
54
|
+
scrollToIndexAnimated(index: number, animate: boolean): void;
|
55
|
+
_onItemsChanged(oldValue: any, newValue: any): void;
|
56
|
+
refresh(): void;
|
57
|
+
updatePagesCount(value: number): void;
|
58
|
+
onUnloaded(): void;
|
59
|
+
eachChildView(callback: (child: View) => boolean): void;
|
60
|
+
updateAdapter(): void;
|
61
|
+
_selectedIndexUpdatedFromNative(newIndex: number): void;
|
62
|
+
_horizontalOffset: number;
|
63
|
+
get horizontalOffset(): number;
|
64
|
+
_verticalOffset: number;
|
65
|
+
get verticalOffset(): number;
|
66
|
+
static getProgress(indicator: any, position: any, positionOffset: any, isRtl: any): any[];
|
67
|
+
private _autoPlayInterval;
|
68
|
+
_nextIndex(): number;
|
69
|
+
_initAutoPlay(value: boolean): void;
|
70
|
+
get itemCount(): number;
|
71
|
+
get lastIndex(): number;
|
72
|
+
}
|
73
|
+
export declare const pagesCountProperty: Property<Pager, number>;
|
74
|
+
interface PagerRecyclerAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<any> {
|
75
|
+
new (owner: WeakRef<Pager>): PagerRecyclerAdapter;
|
76
|
+
getPosition(index: number): number;
|
77
|
+
lastIndex(): number;
|
78
|
+
}
|
79
|
+
declare let PagerRecyclerAdapter: PagerRecyclerAdapter;
|
package/pager.android.js
ADDED
@@ -0,0 +1,954 @@
|
|
1
|
+
import { ChangeType, Color, Device, ObservableArray, Property, Screen, StackLayout, View, profile } from '@nativescript/core';
|
2
|
+
import { isString } from '@nativescript/core/utils/types';
|
3
|
+
import { layout } from '@nativescript/core/utils/utils';
|
4
|
+
import { ITEMLOADING, Indicator, LOADMOREITEMS, PagerBase, Transformer, autoPlayProperty, autoplayDelayProperty, disableSwipeProperty, indicatorColorProperty, indicatorProperty, indicatorSelectedColorProperty, itemTemplatesProperty, itemsProperty, orientationProperty, peakingProperty, selectedIndexProperty, showIndicatorProperty, spacingProperty } from './pager.common';
|
5
|
+
export * from './pager.common';
|
6
|
+
export { Transformer } from './pager.common';
|
7
|
+
function notifyForItemAtIndex(owner, nativeView, view, eventName, index) {
|
8
|
+
const args = {
|
9
|
+
eventName,
|
10
|
+
object: owner,
|
11
|
+
index,
|
12
|
+
view,
|
13
|
+
ios: undefined,
|
14
|
+
android: nativeView,
|
15
|
+
};
|
16
|
+
owner.notify(args);
|
17
|
+
return args;
|
18
|
+
}
|
19
|
+
const PLACEHOLDER = 'PLACEHOLDER';
|
20
|
+
export class Pager extends PagerBase {
|
21
|
+
constructor() {
|
22
|
+
super();
|
23
|
+
this._oldDisableAnimation = false;
|
24
|
+
this._realizedItems = new Map();
|
25
|
+
this._childrenViewsType = new Map();
|
26
|
+
this._realizedTemplates = new Map();
|
27
|
+
this.lastEvent = 0;
|
28
|
+
this._lastSpacing = 0;
|
29
|
+
this._lastPeaking = 0;
|
30
|
+
this._selectedIndexBeforeLoad = 0;
|
31
|
+
this._observableArrayHandler = (args) => {
|
32
|
+
if (this.indicatorView && this.showIndicator) {
|
33
|
+
this.indicatorView.setCount(this._childrenCount);
|
34
|
+
}
|
35
|
+
if (this.pagerAdapter) {
|
36
|
+
switch (args.action) {
|
37
|
+
case ChangeType.Add:
|
38
|
+
this.pagerAdapter.notifyItemRangeInserted(args.index, args.addedCount);
|
39
|
+
break;
|
40
|
+
case ChangeType.Delete:
|
41
|
+
this.pagerAdapter.notifyItemRangeRemoved(args.index, args.removed.length);
|
42
|
+
break;
|
43
|
+
case ChangeType.Splice:
|
44
|
+
if (args.removed.length > 0) {
|
45
|
+
this.pagerAdapter.notifyItemRangeRemoved(args.index, args.removed.length);
|
46
|
+
}
|
47
|
+
if (args.addedCount > 0) {
|
48
|
+
this.pagerAdapter.notifyItemRangeInserted(args.index, args.addedCount);
|
49
|
+
}
|
50
|
+
break;
|
51
|
+
case ChangeType.Update:
|
52
|
+
this.pagerAdapter.notifyItemChanged(args.index);
|
53
|
+
break;
|
54
|
+
default:
|
55
|
+
break;
|
56
|
+
}
|
57
|
+
this._initAutoPlay(this.autoPlay);
|
58
|
+
}
|
59
|
+
};
|
60
|
+
this._horizontalOffset = 0;
|
61
|
+
this._verticalOffset = 0;
|
62
|
+
this._transformers = [];
|
63
|
+
}
|
64
|
+
itemTemplateUpdated(oldData, newData) { }
|
65
|
+
get views() {
|
66
|
+
return this._views;
|
67
|
+
}
|
68
|
+
set views(value) {
|
69
|
+
this._views = value;
|
70
|
+
}
|
71
|
+
get pager() {
|
72
|
+
return this._pager;
|
73
|
+
}
|
74
|
+
get indicatorView() {
|
75
|
+
return this._indicatorView;
|
76
|
+
}
|
77
|
+
createNativeView() {
|
78
|
+
const nativeView = new android.widget.RelativeLayout(this._context);
|
79
|
+
this._pager = new androidx.viewpager2.widget.ViewPager2(this._context);
|
80
|
+
const sdkVersion = parseInt(Device.sdkVersion, 10);
|
81
|
+
if (sdkVersion >= 21) {
|
82
|
+
this._pager.setNestedScrollingEnabled(true);
|
83
|
+
}
|
84
|
+
if (this.orientation === 'vertical') {
|
85
|
+
this._pager.setOrientation(androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL);
|
86
|
+
}
|
87
|
+
else {
|
88
|
+
this._pager.setOrientation(androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL);
|
89
|
+
}
|
90
|
+
initPagerChangeCallback();
|
91
|
+
this._pageListener = new PageChangeCallback(new WeakRef(this));
|
92
|
+
initPagerRecyclerAdapter();
|
93
|
+
this._pagerAdapter = new PagerRecyclerAdapter(new WeakRef(this));
|
94
|
+
this.compositeTransformer = new androidx.viewpager2.widget.CompositePageTransformer();
|
95
|
+
this.pager.setUserInputEnabled(!this.disableSwipe);
|
96
|
+
this.on(View.layoutChangedEvent, this.onLayoutChange, this);
|
97
|
+
const LayoutParams = android.widget.RelativeLayout.LayoutParams;
|
98
|
+
nativeView.addView(this.pager, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
99
|
+
this._indicatorView = new (com).rd.PageIndicatorView2(this._context);
|
100
|
+
const params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
101
|
+
params.addRule(android.widget.RelativeLayout.ALIGN_PARENT_BOTTOM);
|
102
|
+
params.addRule(android.widget.RelativeLayout.CENTER_HORIZONTAL);
|
103
|
+
params.setMargins(0, 0, 0, 10 * Screen.mainScreen.scale);
|
104
|
+
this._indicatorView.setLayoutParams(params);
|
105
|
+
this._indicatorView.setDynamicCount(true);
|
106
|
+
this._indicatorView.setInteractiveAnimation(true);
|
107
|
+
nativeView.addView(this._indicatorView);
|
108
|
+
return nativeView;
|
109
|
+
}
|
110
|
+
initNativeView() {
|
111
|
+
super.initNativeView();
|
112
|
+
this._oldDisableAnimation = this.disableAnimation;
|
113
|
+
this.disableAnimation = true;
|
114
|
+
this.pager.registerOnPageChangeCallback(this._pageListener);
|
115
|
+
this.pager.setAdapter(this._pagerAdapter);
|
116
|
+
if (this._androidViewId < 0) {
|
117
|
+
this._androidViewId = android.view.View.generateViewId();
|
118
|
+
}
|
119
|
+
if (this.pagesCount > 0) {
|
120
|
+
this.pager.setOffscreenPageLimit(this.pagesCount);
|
121
|
+
}
|
122
|
+
else {
|
123
|
+
this.pager.setOffscreenPageLimit(3);
|
124
|
+
}
|
125
|
+
this._setIndicator(this.indicator);
|
126
|
+
this._setPeaking(this.peaking);
|
127
|
+
this._setSpacing(this.spacing);
|
128
|
+
this._setTransformers(this.transformers ? this.transformers : '');
|
129
|
+
if (this.showIndicator) {
|
130
|
+
this._indicatorView.setCount(this.items ? this.items.length : 0);
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
this._indicatorView.setCount(0);
|
134
|
+
}
|
135
|
+
}
|
136
|
+
_removeChildView(index) {
|
137
|
+
const type = this._childrenViews[index].type;
|
138
|
+
this._childrenViewsType.delete(type);
|
139
|
+
super._removeChildView(index);
|
140
|
+
}
|
141
|
+
_addChildView(view, type) {
|
142
|
+
super._addChildView(view, type);
|
143
|
+
this._childrenViewsType.set(type, view);
|
144
|
+
this.initStaticPagerAdapter();
|
145
|
+
}
|
146
|
+
onLayoutChange(args) {
|
147
|
+
this._setSpacing(args.object.spacing);
|
148
|
+
this._setPeaking(args.object.peaking);
|
149
|
+
this._setTransformers(this.transformers ? this.transformers : '');
|
150
|
+
this._updateScrollPosition();
|
151
|
+
this.disableAnimation = this._oldDisableAnimation;
|
152
|
+
}
|
153
|
+
_setSpacing(value) {
|
154
|
+
const size = this.convertToSize(value);
|
155
|
+
const newSpacing = size !== this._lastSpacing;
|
156
|
+
if (newSpacing) {
|
157
|
+
if (this.marginTransformer) {
|
158
|
+
this.compositeTransformer.removeTransformer(this.marginTransformer);
|
159
|
+
}
|
160
|
+
this.marginTransformer = new androidx.viewpager2.widget.MarginPageTransformer(size);
|
161
|
+
this.compositeTransformer.addTransformer(this.marginTransformer);
|
162
|
+
this._lastSpacing = size;
|
163
|
+
}
|
164
|
+
}
|
165
|
+
_setPeaking(value) {
|
166
|
+
const size = this.convertToSize(value);
|
167
|
+
const newPeaking = size !== this._lastPeaking;
|
168
|
+
if (newPeaking) {
|
169
|
+
this.pager.setClipToPadding(false);
|
170
|
+
const left = this.orientation === 'horizontal' ? size : 0;
|
171
|
+
const top = this.orientation === 'horizontal' ? 0 : size;
|
172
|
+
this.pager.setPadding(left, top, left, top);
|
173
|
+
this.pager.setClipChildren(false);
|
174
|
+
this._lastPeaking = size;
|
175
|
+
}
|
176
|
+
}
|
177
|
+
[spacingProperty.setNative](value) {
|
178
|
+
this._setSpacing(value);
|
179
|
+
}
|
180
|
+
[peakingProperty.setNative](value) {
|
181
|
+
this._setPeaking(value);
|
182
|
+
}
|
183
|
+
[indicatorProperty.setNative](value) {
|
184
|
+
this._setIndicator(value);
|
185
|
+
}
|
186
|
+
_setIndicator(value) {
|
187
|
+
const AnimationType = (com).rd.animation.type.AnimationType;
|
188
|
+
switch (value) {
|
189
|
+
case Indicator.None:
|
190
|
+
this.indicatorView.setAnimationType(AnimationType.NONE);
|
191
|
+
break;
|
192
|
+
case Indicator.Worm:
|
193
|
+
this.indicatorView.setAnimationType(AnimationType.WORM);
|
194
|
+
break;
|
195
|
+
case Indicator.Fill:
|
196
|
+
this.indicatorView.setAnimationType(AnimationType.FILL);
|
197
|
+
break;
|
198
|
+
case Indicator.Swap:
|
199
|
+
this.indicatorView.setAnimationType(AnimationType.SWAP);
|
200
|
+
break;
|
201
|
+
case Indicator.THIN_WORM:
|
202
|
+
this.indicatorView.setAnimationType(AnimationType.THIN_WORM);
|
203
|
+
break;
|
204
|
+
default:
|
205
|
+
break;
|
206
|
+
}
|
207
|
+
}
|
208
|
+
_setTransformers(transformers) {
|
209
|
+
if (!isString(transformers)) {
|
210
|
+
return;
|
211
|
+
}
|
212
|
+
const transformsArray = transformers.split(' ');
|
213
|
+
this._transformers.forEach((transformer) => {
|
214
|
+
this.compositeTransformer.removeTransformer(transformer);
|
215
|
+
});
|
216
|
+
for (const transformer of transformsArray) {
|
217
|
+
if (transformer === Transformer.SCALE) {
|
218
|
+
initZoomOutPageTransformer();
|
219
|
+
const nativeTransformer = new ZoomOutPageTransformer();
|
220
|
+
nativeTransformer.owner = new WeakRef(this);
|
221
|
+
this._transformers.push(nativeTransformer);
|
222
|
+
this.compositeTransformer.addTransformer(nativeTransformer);
|
223
|
+
}
|
224
|
+
}
|
225
|
+
if (transformsArray.length === 0) {
|
226
|
+
this._transformers.forEach((transformer) => {
|
227
|
+
this.compositeTransformer.removeTransformer(transformer);
|
228
|
+
});
|
229
|
+
}
|
230
|
+
this.pager.setPageTransformer(this.compositeTransformer);
|
231
|
+
}
|
232
|
+
disposeNativeView() {
|
233
|
+
this.off(View.layoutChangedEvent, this.onLayoutChange, this);
|
234
|
+
this._childrenViews = null;
|
235
|
+
this._realizedItems.clear();
|
236
|
+
this._realizedTemplates.clear();
|
237
|
+
this._pageListener = null;
|
238
|
+
this._pagerAdapter = null;
|
239
|
+
this._transformers = [];
|
240
|
+
if (this._observableArrayInstance) {
|
241
|
+
this._observableArrayInstance.off(ObservableArray.changeEvent, this._observableArrayHandler);
|
242
|
+
this._observableArrayInstance = null;
|
243
|
+
}
|
244
|
+
super.disposeNativeView();
|
245
|
+
}
|
246
|
+
get disableAnimation() {
|
247
|
+
return this._disableAnimation;
|
248
|
+
}
|
249
|
+
set disableAnimation(value) {
|
250
|
+
this._disableAnimation = value;
|
251
|
+
}
|
252
|
+
get pagerAdapter() {
|
253
|
+
return this._pagerAdapter;
|
254
|
+
}
|
255
|
+
get _childrenCount() {
|
256
|
+
var _a, _b;
|
257
|
+
return ((_a = this.items) === null || _a === void 0 ? void 0 : _a.length) || ((_b = this._childrenViews) === null || _b === void 0 ? void 0 : _b.length) || 0;
|
258
|
+
}
|
259
|
+
[indicatorColorProperty.setNative](value) {
|
260
|
+
if (this.indicatorView) {
|
261
|
+
const color = (!value || value instanceof Color) ? value : new Color(value);
|
262
|
+
this.indicatorView.setUnselectedColor(color ? color.android : null);
|
263
|
+
}
|
264
|
+
}
|
265
|
+
[indicatorSelectedColorProperty.setNative](value) {
|
266
|
+
if (this.indicatorView) {
|
267
|
+
const color = (!value || value instanceof Color) ? value : new Color(value);
|
268
|
+
this.indicatorView.setSelectedColor(color ? color.android : null);
|
269
|
+
}
|
270
|
+
}
|
271
|
+
[disableSwipeProperty.setNative](value) {
|
272
|
+
if (this.pager) {
|
273
|
+
this.pager.setUserInputEnabled(!value);
|
274
|
+
}
|
275
|
+
}
|
276
|
+
[itemsProperty.getDefault]() {
|
277
|
+
return null;
|
278
|
+
}
|
279
|
+
[itemsProperty.setNative](value) {
|
280
|
+
if (value && value.length && this.showIndicator) {
|
281
|
+
this.indicatorView.setCount(this._childrenCount);
|
282
|
+
}
|
283
|
+
if (this._observableArrayInstance) {
|
284
|
+
this._observableArrayInstance.off(ObservableArray.changeEvent, this._observableArrayHandler);
|
285
|
+
this._observableArrayInstance = null;
|
286
|
+
}
|
287
|
+
if (value) {
|
288
|
+
if (value instanceof ObservableArray) {
|
289
|
+
const adapter = this.pagerAdapter;
|
290
|
+
if (!adapter)
|
291
|
+
return;
|
292
|
+
selectedIndexProperty.coerce(this);
|
293
|
+
this._observableArrayInstance = value;
|
294
|
+
this._observableArrayInstance.on(ObservableArray.changeEvent, this._observableArrayHandler);
|
295
|
+
}
|
296
|
+
else {
|
297
|
+
this.refresh();
|
298
|
+
selectedIndexProperty.coerce(this);
|
299
|
+
}
|
300
|
+
}
|
301
|
+
}
|
302
|
+
_updateScrollPosition() {
|
303
|
+
const index = this.circularMode
|
304
|
+
? this.selectedIndex + 1
|
305
|
+
: this.selectedIndex;
|
306
|
+
if (this.pager.getCurrentItem() !== index) {
|
307
|
+
this.indicatorView.setInteractiveAnimation(false);
|
308
|
+
this.pager.setCurrentItem(index, false);
|
309
|
+
this._indicatorView.setSelected(this.selectedIndex);
|
310
|
+
}
|
311
|
+
setTimeout(() => {
|
312
|
+
this._initAutoPlay(this.autoPlay);
|
313
|
+
});
|
314
|
+
}
|
315
|
+
initStaticPagerAdapter() {
|
316
|
+
if (!this.items && this._childrenCount > 0) {
|
317
|
+
initStaticPagerStateAdapter();
|
318
|
+
if (this.pager && !(this._pagerAdapter instanceof StaticPagerStateAdapter)) {
|
319
|
+
this._pagerAdapter = new StaticPagerStateAdapter(new WeakRef(this));
|
320
|
+
this.pager.setAdapter(this._pagerAdapter);
|
321
|
+
selectedIndexProperty.coerce(this);
|
322
|
+
setTimeout(() => {
|
323
|
+
this.pager.setCurrentItem(this.selectedIndex, false);
|
324
|
+
if (this.indicatorView) {
|
325
|
+
this.indicatorView.setSelection(this.selectedIndex);
|
326
|
+
}
|
327
|
+
}, 0);
|
328
|
+
}
|
329
|
+
}
|
330
|
+
}
|
331
|
+
onLoaded() {
|
332
|
+
super.onLoaded();
|
333
|
+
this.initStaticPagerAdapter();
|
334
|
+
}
|
335
|
+
[selectedIndexProperty.setNative](value) {
|
336
|
+
if (this.isLoaded && this.isLayoutValid && this.pager) {
|
337
|
+
const index = this.circularMode ? value + 1 : value;
|
338
|
+
if (this.pager.getCurrentItem() !== index) {
|
339
|
+
this.pager.setCurrentItem(index, !this.disableAnimation);
|
340
|
+
if (this.indicatorView) {
|
341
|
+
}
|
342
|
+
}
|
343
|
+
}
|
344
|
+
}
|
345
|
+
scrollToIndexAnimated(index, animate) {
|
346
|
+
if (this.pager) {
|
347
|
+
this.pager.setCurrentItem(index, animate);
|
348
|
+
if (!animate) {
|
349
|
+
selectedIndexProperty.nativeValueChange(this, index);
|
350
|
+
}
|
351
|
+
}
|
352
|
+
}
|
353
|
+
_onItemsChanged(oldValue, newValue) { }
|
354
|
+
refresh() {
|
355
|
+
if (this.pager && this._pagerAdapter) {
|
356
|
+
this.pager.requestLayout();
|
357
|
+
this.pager.getAdapter().notifyDataSetChanged();
|
358
|
+
}
|
359
|
+
}
|
360
|
+
updatePagesCount(value) {
|
361
|
+
if (this.pager) {
|
362
|
+
this._pagerAdapter.notifyDataSetChanged();
|
363
|
+
this.pager.setOffscreenPageLimit(value);
|
364
|
+
}
|
365
|
+
}
|
366
|
+
onUnloaded() {
|
367
|
+
super.onUnloaded();
|
368
|
+
}
|
369
|
+
eachChildView(callback) {
|
370
|
+
if (this._realizedItems && this._realizedItems.size > 0) {
|
371
|
+
this._realizedItems.forEach((view, key) => {
|
372
|
+
callback(view);
|
373
|
+
});
|
374
|
+
}
|
375
|
+
}
|
376
|
+
updateAdapter() {
|
377
|
+
this._pagerAdapter.notifyDataSetChanged();
|
378
|
+
}
|
379
|
+
_selectedIndexUpdatedFromNative(newIndex) { }
|
380
|
+
[itemTemplatesProperty.getDefault]() {
|
381
|
+
return null;
|
382
|
+
}
|
383
|
+
[itemTemplatesProperty.setNative](value) {
|
384
|
+
this._itemTemplatesInternal = new Array(this._defaultTemplate);
|
385
|
+
if (value) {
|
386
|
+
this._itemTemplatesInternal = this._itemTemplatesInternal.concat(value);
|
387
|
+
}
|
388
|
+
this._pagerAdapter = new PagerRecyclerAdapter(new WeakRef(this));
|
389
|
+
this.pager.setAdapter(this._pagerAdapter);
|
390
|
+
this.refresh();
|
391
|
+
}
|
392
|
+
[showIndicatorProperty.setNative](value) {
|
393
|
+
if (!this.indicatorView) {
|
394
|
+
return;
|
395
|
+
}
|
396
|
+
if (value) {
|
397
|
+
this.indicatorView.setCount(this.items ? this.items.length : 0);
|
398
|
+
this.indicatorView.setSelected(this.selectedIndex);
|
399
|
+
}
|
400
|
+
else {
|
401
|
+
this.indicatorView.setCount(0);
|
402
|
+
}
|
403
|
+
}
|
404
|
+
[orientationProperty.setNative](value) {
|
405
|
+
if (value === 'vertical') {
|
406
|
+
this._pager.setOrientation(androidx.viewpager2.widget.ViewPager2.ORIENTATION_VERTICAL);
|
407
|
+
}
|
408
|
+
else {
|
409
|
+
this._pager.setOrientation(androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL);
|
410
|
+
}
|
411
|
+
}
|
412
|
+
get horizontalOffset() {
|
413
|
+
return this._horizontalOffset / layout.getDisplayDensity();
|
414
|
+
}
|
415
|
+
get verticalOffset() {
|
416
|
+
return this._verticalOffset / layout.getDisplayDensity();
|
417
|
+
}
|
418
|
+
static getProgress(indicator, position, positionOffset, isRtl) {
|
419
|
+
const count = indicator.getCount();
|
420
|
+
let selectedPosition = indicator.getSelection();
|
421
|
+
if (isRtl) {
|
422
|
+
position = count - 1 - position;
|
423
|
+
}
|
424
|
+
if (position < 0) {
|
425
|
+
position = 0;
|
426
|
+
}
|
427
|
+
else if (position > count - 1) {
|
428
|
+
position = count - 1;
|
429
|
+
}
|
430
|
+
const isRightOverScrolled = position > selectedPosition;
|
431
|
+
let isLeftOverScrolled;
|
432
|
+
if (isRtl) {
|
433
|
+
isLeftOverScrolled = position - 1 < selectedPosition;
|
434
|
+
}
|
435
|
+
else {
|
436
|
+
isLeftOverScrolled = position + 1 < selectedPosition;
|
437
|
+
}
|
438
|
+
if (isRightOverScrolled || isLeftOverScrolled) {
|
439
|
+
selectedPosition = position;
|
440
|
+
indicator.setSelection(selectedPosition);
|
441
|
+
}
|
442
|
+
const slideToRightSide = selectedPosition === position && positionOffset !== 0;
|
443
|
+
let selectingPosition;
|
444
|
+
let selectingProgress;
|
445
|
+
if (slideToRightSide) {
|
446
|
+
selectingPosition = isRtl ? position - 1 : position + 1;
|
447
|
+
selectingProgress = positionOffset;
|
448
|
+
}
|
449
|
+
else {
|
450
|
+
selectingPosition = position;
|
451
|
+
selectingProgress = 1 - positionOffset;
|
452
|
+
}
|
453
|
+
if (selectingProgress > 1) {
|
454
|
+
selectingProgress = 1;
|
455
|
+
}
|
456
|
+
else if (selectingProgress < 0) {
|
457
|
+
selectingProgress = 0;
|
458
|
+
}
|
459
|
+
return [selectingPosition, selectingProgress];
|
460
|
+
}
|
461
|
+
[autoPlayProperty.setNative](value) {
|
462
|
+
this._initAutoPlay(value);
|
463
|
+
}
|
464
|
+
[autoplayDelayProperty.setNative](value) {
|
465
|
+
if (this._autoPlayInterval) {
|
466
|
+
clearInterval(this._autoPlayInterval);
|
467
|
+
this._autoPlayInterval = undefined;
|
468
|
+
this._initAutoPlay(this.autoPlay);
|
469
|
+
}
|
470
|
+
}
|
471
|
+
_nextIndex() {
|
472
|
+
const next = this.selectedIndex + 1;
|
473
|
+
if (next > this.lastIndex) {
|
474
|
+
return 0;
|
475
|
+
}
|
476
|
+
return next;
|
477
|
+
}
|
478
|
+
_initAutoPlay(value) {
|
479
|
+
if (!this.items || this.items.length === 0) {
|
480
|
+
return;
|
481
|
+
}
|
482
|
+
if (!value) {
|
483
|
+
if (this._autoPlayInterval) {
|
484
|
+
clearInterval(this._autoPlayInterval);
|
485
|
+
this._autoPlayInterval = undefined;
|
486
|
+
}
|
487
|
+
}
|
488
|
+
else {
|
489
|
+
if (this.isLayoutValid && !this._autoPlayInterval) {
|
490
|
+
this._autoPlayInterval = setInterval(() => {
|
491
|
+
this.selectedIndex = this._nextIndex();
|
492
|
+
}, this.autoPlayDelay);
|
493
|
+
}
|
494
|
+
}
|
495
|
+
}
|
496
|
+
get itemCount() {
|
497
|
+
return this._childrenCount
|
498
|
+
? this._childrenCount + (this.circularMode ? 2 : 0)
|
499
|
+
: 0;
|
500
|
+
}
|
501
|
+
get lastIndex() {
|
502
|
+
if (this.items && this.items.length === 0) {
|
503
|
+
return 0;
|
504
|
+
}
|
505
|
+
return this.circularMode ? this.itemCount - 3 : this.itemCount - 1;
|
506
|
+
}
|
507
|
+
}
|
508
|
+
__decorate([
|
509
|
+
profile()
|
510
|
+
], Pager.prototype, "createNativeView", null);
|
511
|
+
export const pagesCountProperty = new Property({
|
512
|
+
name: 'pagesCount',
|
513
|
+
defaultValue: 0,
|
514
|
+
valueConverter: (v) => parseInt(v, 10),
|
515
|
+
valueChanged: (pager, oldValue, newValue) => {
|
516
|
+
pager.updatePagesCount(pager.pagesCount);
|
517
|
+
},
|
518
|
+
});
|
519
|
+
pagesCountProperty.register(Pager);
|
520
|
+
let PageChangeCallback;
|
521
|
+
function initPagerChangeCallback() {
|
522
|
+
if (PageChangeCallback) {
|
523
|
+
return PageChangeCallback;
|
524
|
+
}
|
525
|
+
var PageChangeCallbackImpl = /** @class */ (function (_super) {
|
526
|
+
__extends(PageChangeCallbackImpl, _super);
|
527
|
+
function PageChangeCallbackImpl(owner) {
|
528
|
+
var _this = _super.call(this) || this;
|
529
|
+
_this.owner = owner;
|
530
|
+
return global.__native(_this);
|
531
|
+
}
|
532
|
+
PageChangeCallbackImpl.prototype.onPageSelected = function (position) {
|
533
|
+
var owner = this.owner && this.owner.get();
|
534
|
+
if (owner) {
|
535
|
+
owner.notify({
|
536
|
+
eventName: Pager.swipeEvent,
|
537
|
+
object: owner,
|
538
|
+
});
|
539
|
+
}
|
540
|
+
};
|
541
|
+
PageChangeCallbackImpl.prototype.onPageScrolled = function (position, positionOffset, positionOffsetPixels) {
|
542
|
+
var owner = this.owner && this.owner.get();
|
543
|
+
if (owner && owner.isLayoutValid) {
|
544
|
+
if (owner.circularMode) {
|
545
|
+
position = owner.pagerAdapter.getPosition(position);
|
546
|
+
}
|
547
|
+
var offset = position * positionOffsetPixels;
|
548
|
+
if (owner.orientation === 'vertical') {
|
549
|
+
owner._horizontalOffset = 0;
|
550
|
+
owner._verticalOffset = offset;
|
551
|
+
}
|
552
|
+
else if (owner.orientation === 'horizontal') {
|
553
|
+
owner._horizontalOffset = offset;
|
554
|
+
owner._verticalOffset = 0;
|
555
|
+
}
|
556
|
+
owner.notify({
|
557
|
+
eventName: Pager.scrollEvent,
|
558
|
+
object: owner,
|
559
|
+
selectedIndex: position,
|
560
|
+
currentPosition: position + positionOffset,
|
561
|
+
scrollX: owner.horizontalOffset,
|
562
|
+
scrollY: owner.verticalOffset,
|
563
|
+
});
|
564
|
+
if (owner.items &&
|
565
|
+
position ===
|
566
|
+
owner.pagerAdapter.lastIndex() - owner.loadMoreCount) {
|
567
|
+
owner.notify({ eventName: LOADMOREITEMS, object: owner });
|
568
|
+
}
|
569
|
+
if (owner.showIndicator && owner.indicatorView) {
|
570
|
+
var progress = Pager.getProgress(owner.indicatorView, position, positionOffset, false);
|
571
|
+
var selectingPosition = progress[0];
|
572
|
+
var selectingProgress = progress[1];
|
573
|
+
owner.indicatorView.setInteractiveAnimation(true);
|
574
|
+
owner.indicatorView.setProgress(selectingPosition, selectingProgress);
|
575
|
+
}
|
576
|
+
}
|
577
|
+
};
|
578
|
+
PageChangeCallbackImpl.prototype.onPageScrollStateChanged = function (state) {
|
579
|
+
var owner = this.owner && this.owner.get();
|
580
|
+
if (owner) {
|
581
|
+
if (owner.lastEvent === 0 && state === 1) {
|
582
|
+
owner.notify({
|
583
|
+
eventName: Pager.swipeStartEvent,
|
584
|
+
object: owner,
|
585
|
+
});
|
586
|
+
owner.lastEvent = 1;
|
587
|
+
}
|
588
|
+
else if (owner.lastEvent === 1 && state === 1) {
|
589
|
+
owner.notify({
|
590
|
+
eventName: Pager.swipeOverEvent,
|
591
|
+
object: owner,
|
592
|
+
});
|
593
|
+
owner.lastEvent = 1;
|
594
|
+
}
|
595
|
+
else if (owner.lastEvent === 1 && state === 2) {
|
596
|
+
owner.notify({
|
597
|
+
eventName: Pager.swipeEndEvent,
|
598
|
+
object: owner,
|
599
|
+
});
|
600
|
+
owner.lastEvent = 2;
|
601
|
+
}
|
602
|
+
else {
|
603
|
+
owner.lastEvent = 0;
|
604
|
+
}
|
605
|
+
if (owner.isLayoutValid &&
|
606
|
+
state ===
|
607
|
+
androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_IDLE) {
|
608
|
+
// ts-ignore
|
609
|
+
var count = owner.pagerAdapter.getItemCount();
|
610
|
+
var index = owner.pager.getCurrentItem();
|
611
|
+
if (owner.circularMode) {
|
612
|
+
if (index === 0) {
|
613
|
+
// last item
|
614
|
+
owner.indicatorView.setInteractiveAnimation(false);
|
615
|
+
owner.pager.setCurrentItem(count - 2, false);
|
616
|
+
selectedIndexProperty.nativeValueChange(owner, count - 3);
|
617
|
+
owner.indicatorView.setSelected(count - 3);
|
618
|
+
owner.indicatorView.setInteractiveAnimation(true);
|
619
|
+
}
|
620
|
+
else if (index === count - 1) {
|
621
|
+
// first item
|
622
|
+
owner.indicatorView.setInteractiveAnimation(false);
|
623
|
+
owner.indicatorView.setSelected(0);
|
624
|
+
owner.pager.setCurrentItem(1, false);
|
625
|
+
selectedIndexProperty.nativeValueChange(owner, 0);
|
626
|
+
owner.indicatorView.setInteractiveAnimation(true);
|
627
|
+
}
|
628
|
+
else {
|
629
|
+
selectedIndexProperty.nativeValueChange(owner, index - 1);
|
630
|
+
}
|
631
|
+
}
|
632
|
+
else {
|
633
|
+
selectedIndexProperty.nativeValueChange(owner, index);
|
634
|
+
owner.indicatorView.setSelected(index);
|
635
|
+
}
|
636
|
+
}
|
637
|
+
}
|
638
|
+
};
|
639
|
+
return PageChangeCallbackImpl;
|
640
|
+
}(androidx.viewpager2.widget.ViewPager2
|
641
|
+
.OnPageChangeCallback));
|
642
|
+
PageChangeCallback = PageChangeCallbackImpl;
|
643
|
+
}
|
644
|
+
let PagerRecyclerAdapter;
|
645
|
+
function initPagerRecyclerAdapter() {
|
646
|
+
if (PagerRecyclerAdapter) {
|
647
|
+
return;
|
648
|
+
}
|
649
|
+
var PagerRecyclerAdapterImpl = /** @class */ (function (_super) {
|
650
|
+
__extends(PagerRecyclerAdapterImpl, _super);
|
651
|
+
function PagerRecyclerAdapterImpl(owner) {
|
652
|
+
var _this = _super.call(this) || this;
|
653
|
+
_this.owner = owner;
|
654
|
+
return global.__native(_this);
|
655
|
+
}
|
656
|
+
PagerRecyclerAdapterImpl.prototype.onCreateViewHolder = function (param0, type) {
|
657
|
+
var owner = this.owner ? this.owner.get() : null;
|
658
|
+
if (!owner) {
|
659
|
+
return null;
|
660
|
+
}
|
661
|
+
var template = owner._itemTemplatesInternal[type];
|
662
|
+
var view = template.createView();
|
663
|
+
if (!view && owner._itemViewLoader !== undefined) {
|
664
|
+
view = owner._itemViewLoader(template.key);
|
665
|
+
}
|
666
|
+
var sp = new StackLayout();
|
667
|
+
if (view) {
|
668
|
+
sp.addChild(view);
|
669
|
+
}
|
670
|
+
else {
|
671
|
+
sp[PLACEHOLDER] = true;
|
672
|
+
}
|
673
|
+
owner._addView(sp);
|
674
|
+
sp.nativeView.setLayoutParams(new android.view.ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT));
|
675
|
+
owner._realizedItems.set(sp.nativeView, sp);
|
676
|
+
initPagerViewHolder();
|
677
|
+
return new PagerViewHolder(new WeakRef(sp), new WeakRef(owner));
|
678
|
+
};
|
679
|
+
PagerRecyclerAdapterImpl.prototype.getPosition = function (index) {
|
680
|
+
var owner = this.owner && this.owner.get();
|
681
|
+
var position = index;
|
682
|
+
if (owner && owner.circularMode) {
|
683
|
+
if (position === 0) {
|
684
|
+
position = this.lastDummy();
|
685
|
+
}
|
686
|
+
else if (position === this.firstDummy()) {
|
687
|
+
position = 0;
|
688
|
+
}
|
689
|
+
else {
|
690
|
+
position = position - 1;
|
691
|
+
}
|
692
|
+
}
|
693
|
+
return position;
|
694
|
+
};
|
695
|
+
PagerRecyclerAdapterImpl.prototype.onBindViewHolder = function (holder, index) {
|
696
|
+
var owner = this.owner ? this.owner.get() : null;
|
697
|
+
if (owner) {
|
698
|
+
if (owner.circularMode) {
|
699
|
+
if (index === 0) {
|
700
|
+
index = this.lastDummy();
|
701
|
+
}
|
702
|
+
else if (index === this.firstDummy()) {
|
703
|
+
index = 0;
|
704
|
+
}
|
705
|
+
else {
|
706
|
+
index = index - 1;
|
707
|
+
}
|
708
|
+
}
|
709
|
+
var bindingContext = owner._getDataItem(index);
|
710
|
+
var args = {
|
711
|
+
eventName: ITEMLOADING,
|
712
|
+
object: owner,
|
713
|
+
android: holder,
|
714
|
+
ios: undefined,
|
715
|
+
index: index,
|
716
|
+
bindingContext: bindingContext,
|
717
|
+
view: holder.view[PLACEHOLDER] ? null : holder.view.getChildAt(0)
|
718
|
+
};
|
719
|
+
owner.notify(args);
|
720
|
+
if (holder.view[PLACEHOLDER]) {
|
721
|
+
if (args.view) {
|
722
|
+
holder.view.addChild(args.view);
|
723
|
+
}
|
724
|
+
else {
|
725
|
+
holder.view.addChild(owner._getDefaultItemContent(index));
|
726
|
+
}
|
727
|
+
holder.view[PLACEHOLDER] = false;
|
728
|
+
}
|
729
|
+
owner._prepareItem(holder.view, index);
|
730
|
+
}
|
731
|
+
};
|
732
|
+
PagerRecyclerAdapterImpl.prototype.getItemId = function (i) {
|
733
|
+
var owner = this.owner ? this.owner.get() : null;
|
734
|
+
var id = i;
|
735
|
+
if (owner && owner.items) {
|
736
|
+
var item = owner.items.getItem ? owner.items.getItem(i) : owner.items[i];
|
737
|
+
if (item) {
|
738
|
+
id = owner.itemIdGenerator(item, i, owner.items);
|
739
|
+
}
|
740
|
+
}
|
741
|
+
return long(id);
|
742
|
+
};
|
743
|
+
PagerRecyclerAdapterImpl.prototype.getItemCount = function () {
|
744
|
+
var owner = this.owner ? this.owner.get() : null;
|
745
|
+
return owner && owner.items && owner.items.length
|
746
|
+
? owner.items.length + (owner.circularMode ? 2 : 0)
|
747
|
+
: 0;
|
748
|
+
};
|
749
|
+
PagerRecyclerAdapterImpl.prototype.getItemViewType = function (index) {
|
750
|
+
var owner = this.owner ? this.owner.get() : null;
|
751
|
+
if (owner) {
|
752
|
+
var template = owner._getItemTemplate(index);
|
753
|
+
return owner._itemTemplatesInternal.indexOf(template);
|
754
|
+
}
|
755
|
+
return 0;
|
756
|
+
};
|
757
|
+
PagerRecyclerAdapterImpl.prototype.lastIndex = function () {
|
758
|
+
var owner = this.owner && this.owner.get();
|
759
|
+
if (owner) {
|
760
|
+
if (owner.items.length === 0) {
|
761
|
+
return 0;
|
762
|
+
}
|
763
|
+
return owner.circularMode ? this.getItemCount() - 3 : this.getItemCount() - 1;
|
764
|
+
}
|
765
|
+
return 0;
|
766
|
+
};
|
767
|
+
PagerRecyclerAdapterImpl.prototype.firstDummy = function () {
|
768
|
+
var count = this.getItemCount();
|
769
|
+
if (count === 0) {
|
770
|
+
return 0;
|
771
|
+
}
|
772
|
+
return this.getItemCount() - 1;
|
773
|
+
};
|
774
|
+
PagerRecyclerAdapterImpl.prototype.lastDummy = function () {
|
775
|
+
return this.lastIndex();
|
776
|
+
};
|
777
|
+
PagerRecyclerAdapterImpl.prototype.hasStableIds = function () {
|
778
|
+
return true;
|
779
|
+
};
|
780
|
+
return PagerRecyclerAdapterImpl;
|
781
|
+
}(androidx.recyclerview.widget.RecyclerView.Adapter));
|
782
|
+
PagerRecyclerAdapter = PagerRecyclerAdapterImpl;
|
783
|
+
}
|
784
|
+
let StaticPagerStateAdapter;
|
785
|
+
function initStaticPagerStateAdapter() {
|
786
|
+
if (StaticPagerStateAdapter) {
|
787
|
+
return;
|
788
|
+
}
|
789
|
+
var StaticPagerStateAdapterImpl = /** @class */ (function (_super) {
|
790
|
+
__extends(StaticPagerStateAdapterImpl, _super);
|
791
|
+
function StaticPagerStateAdapterImpl(owner) {
|
792
|
+
var _this = _super.call(this) || this;
|
793
|
+
_this.owner = owner;
|
794
|
+
return global.__native(_this);
|
795
|
+
}
|
796
|
+
StaticPagerStateAdapterImpl.prototype.onCreateViewHolder = function (param0, type) {
|
797
|
+
var owner = this.owner ? this.owner.get() : null;
|
798
|
+
if (!owner) {
|
799
|
+
return null;
|
800
|
+
}
|
801
|
+
var view = owner._childrenViewsType.get(type);
|
802
|
+
var sp = new StackLayout(); // Pager2 requires match_parent so add a parent with to fill
|
803
|
+
if (view && !view.parent) {
|
804
|
+
sp.addChild(view);
|
805
|
+
}
|
806
|
+
else {
|
807
|
+
sp[PLACEHOLDER] = true;
|
808
|
+
}
|
809
|
+
owner._addView(sp);
|
810
|
+
sp.nativeView.setLayoutParams(new android.view.ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT));
|
811
|
+
initPagerViewHolder();
|
812
|
+
return new PagerViewHolder(new WeakRef(sp), new WeakRef(owner));
|
813
|
+
};
|
814
|
+
StaticPagerStateAdapterImpl.prototype.onBindViewHolder = function (holder, index) {
|
815
|
+
var owner = this.owner ? this.owner.get() : null;
|
816
|
+
if (owner) {
|
817
|
+
var args = {
|
818
|
+
eventName: ITEMLOADING,
|
819
|
+
object: owner,
|
820
|
+
android: holder,
|
821
|
+
ios: undefined,
|
822
|
+
index: index,
|
823
|
+
view: holder.view[PLACEHOLDER] ? null : holder.view
|
824
|
+
};
|
825
|
+
owner.notify(args);
|
826
|
+
if (holder.view[PLACEHOLDER]) {
|
827
|
+
if (args.view) {
|
828
|
+
holder.view.addChild(args.view);
|
829
|
+
}
|
830
|
+
holder.view[PLACEHOLDER] = false;
|
831
|
+
}
|
832
|
+
}
|
833
|
+
};
|
834
|
+
StaticPagerStateAdapterImpl.prototype.hasStableIds = function () {
|
835
|
+
return true;
|
836
|
+
};
|
837
|
+
StaticPagerStateAdapterImpl.prototype.getItem = function (i) {
|
838
|
+
var owner = this.owner ? this.owner.get() : null;
|
839
|
+
if (owner) {
|
840
|
+
if (owner._childrenViews) {
|
841
|
+
return owner._childrenViews[i].view;
|
842
|
+
}
|
843
|
+
}
|
844
|
+
return null;
|
845
|
+
};
|
846
|
+
StaticPagerStateAdapterImpl.prototype.getItemId = function (i) {
|
847
|
+
var owner = this.owner ? this.owner.get() : null;
|
848
|
+
var id = i;
|
849
|
+
if (owner) {
|
850
|
+
var item = this.getItem(i);
|
851
|
+
if (item) {
|
852
|
+
id = owner.itemIdGenerator(item, i, Array.from(owner._childrenViews));
|
853
|
+
}
|
854
|
+
}
|
855
|
+
return long(id);
|
856
|
+
};
|
857
|
+
StaticPagerStateAdapterImpl.prototype.getItemCount = function () {
|
858
|
+
var _a;
|
859
|
+
var owner = this.owner ? this.owner.get() : null;
|
860
|
+
return owner && ((_a = owner._childrenViews) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
861
|
+
};
|
862
|
+
StaticPagerStateAdapterImpl.prototype.getItemViewType = function (index) {
|
863
|
+
var _a;
|
864
|
+
var owner = (_a = this.owner) === null || _a === void 0 ? void 0 : _a.get();
|
865
|
+
if (owner && owner._childrenViews) {
|
866
|
+
return owner._childrenViews[index].type;
|
867
|
+
}
|
868
|
+
return index;
|
869
|
+
};
|
870
|
+
return StaticPagerStateAdapterImpl;
|
871
|
+
}(androidx.recyclerview.widget.RecyclerView.Adapter));
|
872
|
+
StaticPagerStateAdapter = StaticPagerStateAdapterImpl;
|
873
|
+
}
|
874
|
+
let PagerViewHolder;
|
875
|
+
function initPagerViewHolder() {
|
876
|
+
if (PagerViewHolder) {
|
877
|
+
return;
|
878
|
+
}
|
879
|
+
var PagerViewHolderImpl = /** @class */ (function (_super) {
|
880
|
+
__extends(PagerViewHolderImpl, _super);
|
881
|
+
function PagerViewHolderImpl(owner, pager) {
|
882
|
+
var _this = _super.call(this, owner.get().nativeViewProtected) || this;
|
883
|
+
_this.owner = owner;
|
884
|
+
_this.pager = pager;
|
885
|
+
return global.__native(_this);
|
886
|
+
}
|
887
|
+
Object.defineProperty(PagerViewHolderImpl.prototype, "view", {
|
888
|
+
get: function () {
|
889
|
+
return this.owner ? this.owner.get() : null;
|
890
|
+
},
|
891
|
+
enumerable: true,
|
892
|
+
configurable: true
|
893
|
+
});
|
894
|
+
return PagerViewHolderImpl;
|
895
|
+
}(androidx.recyclerview.widget.RecyclerView.ViewHolder));
|
896
|
+
PagerViewHolder = PagerViewHolderImpl;
|
897
|
+
}
|
898
|
+
let ZoomOutPageTransformer;
|
899
|
+
function initZoomOutPageTransformer() {
|
900
|
+
if (ZoomOutPageTransformer) {
|
901
|
+
return;
|
902
|
+
}
|
903
|
+
var ZoomOutPageTransformerImpl = /** @class */ (function (_super) {
|
904
|
+
__extends(ZoomOutPageTransformerImpl, _super);
|
905
|
+
function ZoomOutPageTransformerImpl() {
|
906
|
+
var _this = _super.call(this) || this;
|
907
|
+
return global.__native(_this);
|
908
|
+
}
|
909
|
+
ZoomOutPageTransformerImpl.prototype.transformPage = function (view, position) {
|
910
|
+
var MIN_SCALE = 0.85;
|
911
|
+
if (position <= 1 || position >= -1) {
|
912
|
+
var scale = Math.max(MIN_SCALE, 1 - Math.abs(position));
|
913
|
+
view.setScaleX(scale);
|
914
|
+
view.setScaleY(scale);
|
915
|
+
}
|
916
|
+
else {
|
917
|
+
view.setScaleX(1);
|
918
|
+
view.setScaleY(1);
|
919
|
+
}
|
920
|
+
};
|
921
|
+
ZoomOutPageTransformerImpl = __decorate([
|
922
|
+
Interfaces([androidx.viewpager2.widget.ViewPager2.PageTransformer])
|
923
|
+
], ZoomOutPageTransformerImpl);
|
924
|
+
return ZoomOutPageTransformerImpl;
|
925
|
+
}(java.lang.Object));
|
926
|
+
ZoomOutPageTransformer = ZoomOutPageTransformerImpl;
|
927
|
+
}
|
928
|
+
let ZoomInPageTransformer;
|
929
|
+
function initZoomInPageTransformer() {
|
930
|
+
if (ZoomInPageTransformer) {
|
931
|
+
return;
|
932
|
+
}
|
933
|
+
var ZoomInPageTransformerImpl = /** @class */ (function (_super) {
|
934
|
+
__extends(ZoomInPageTransformerImpl, _super);
|
935
|
+
function ZoomInPageTransformerImpl() {
|
936
|
+
var _this = _super.call(this) || this;
|
937
|
+
return global.__native(_this);
|
938
|
+
}
|
939
|
+
ZoomInPageTransformerImpl.prototype.transformPage = function (view, position) {
|
940
|
+
var scale = position < 0 ? position + 1.0 : Math.abs(1.0 - position);
|
941
|
+
view.setScaleX(scale);
|
942
|
+
view.setScaleY(scale);
|
943
|
+
view.setPivotX(view.getWidth() * 0.5);
|
944
|
+
view.setPivotY(view.getHeight() * 0.5);
|
945
|
+
view.setAlpha(view < -1.0 || position > 1.0 ? 0.0 : 1.0 - (scale - 1.0));
|
946
|
+
};
|
947
|
+
ZoomInPageTransformerImpl = __decorate([
|
948
|
+
Interfaces([androidx.viewpager2.widget.ViewPager2.PageTransformer])
|
949
|
+
], ZoomInPageTransformerImpl);
|
950
|
+
return ZoomInPageTransformerImpl;
|
951
|
+
}(java.lang.Object));
|
952
|
+
ZoomInPageTransformer = ZoomInPageTransformerImpl;
|
953
|
+
}
|
954
|
+
//# sourceMappingURL=pager.android.js.map
|