From 1f681c170c950960ea38859b96eba80022c89636 Mon Sep 17 00:00:00 2001 From: Kirill Kirichenko Date: Thu, 26 Dec 2024 18:37:18 +0300 Subject: [PATCH 1/2] Page transition router with animation Signed-off-by: Kirill Kirichenko --- arkoala-arkts/arkui/src/Application.ts | 35 ++- arkoala-arkts/arkui/src/ArkComponentRoot.ts | 66 +++-- arkoala-arkts/arkui/src/ArkStructBase.ts | 27 +- arkoala-arkts/arkui/src/UserView.ts | 2 +- .../src/handwritten/ArkPageTransitionData.ts | 16 +- arkoala-arkts/arkui/src/handwritten/Router.ts | 198 +++++++------ arkoala-arkts/arkui/src/handwritten/index.ts | 3 - arkoala-arkts/cats/.gitignore | 2 + .../cats/application/AppScope/app.json5 | 10 + .../resources/base/element/string.json | 8 + .../resources/base/media/app_icon.png | Bin 0 -> 2777 bytes .../cats/application/build-profile.json5 | 34 +++ .../cats/application/code-linter.json5 | 20 ++ .../cats/application/entry/.gitignore | 6 + .../application/entry/build-profile.json5 | 28 ++ .../cats/application/entry/hvigorfile.ts | 6 + .../application/entry/obfuscation-rules.txt | 23 ++ .../cats/application/entry/oh-package.json5 | 10 + .../main/ets/entryability/EntryAbility.ets | 42 +++ .../entrybackupability/EntryBackupAbility.ets | 12 + .../entry/src/main/ets/pages/Index.ets | 20 ++ .../entry/src/main/ets/resources/koala.png | Bin 0 -> 139657 bytes .../application/entry/src/main/module.json5 | 58 ++++ .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/string.json | 16 ++ .../main/resources/base/media/background.png | Bin 0 -> 57364 bytes .../main/resources/base/media/foreground.png | Bin 0 -> 12430 bytes .../resources/base/media/layered_image.json | 7 + .../main/resources/base/media/startIcon.png | Bin 0 -> 20093 bytes .../resources/base/profile/backup_config.json | 3 + .../resources/base/profile/main_pages.json | 5 + .../main/resources/en_US/element/string.json | 16 ++ .../main/resources/zh_CN/element/string.json | 16 ++ .../entry/src/mock/mock-config.json5 | 2 + .../src/ohosTest/ets/test/Ability.test.ets | 35 +++ .../entry/src/ohosTest/ets/test/List.test.ets | 5 + .../entry/src/ohosTest/module.json5 | 13 + .../application/entry/src/test/List.test.ets | 5 + .../entry/src/test/LocalUnit.test.ets | 33 +++ .../application/hvigor/hvigor-config.json5 | 22 ++ arkoala-arkts/cats/application/hvigorfile.ts | 6 + .../cats/application/local.properties | 9 + .../cats/application/oh-package-lock.json5 | 25 ++ .../cats/application/oh-package.json5 | 10 + arkoala-arkts/cats/package.json | 29 ++ .../cats/user/app/AppScope/app.json5 | 10 + .../cats/user/app/build-profile.json5 | 28 ++ .../cats/user/app/hvigor/hvigor-config.json5 | 22 ++ arkoala-arkts/cats/user/app/hvigorfile.ts | 6 + arkoala-arkts/cats/user/app/oh-package.json5 | 13 + .../cats/user/app/user/BuildProfile.ets | 17 ++ .../cats/user/app/user/build-profile.json5 | 33 +++ .../cats/user/app/user/hvigorfile.ts | 6 + .../cats/user/app/user/obfuscation-rules.txt | 18 ++ .../cats/user/app/user/oh-package.json5 | 9 + .../cats/user/app/user/src/main/module.json5 | 11 + .../cats/user/arktsconfig-run-unmemoized.json | 46 +++ arkoala-arkts/cats/user/package.json | 29 ++ arkoala-arkts/cats/user/scripts/build-har.mjs | 49 ++++ arkoala-arkts/cats/user/src/Page.ts | 17 ++ arkoala-arkts/cats/user/src/ets/Index.ets | 107 +++++++ arkoala-arkts/cats/user/src/ets/SomeCat.ets | 88 ++++++ .../cats/user/src/ets/etsconfig.json | 29 ++ .../cats/user/tsconfig-unmemoize.json | 55 ++++ .../resources/base/element/string.json | 2 +- .../application/oh-package-lock.json5 | 8 +- arkoala-arkts/navigation/package.json | 2 +- .../src/typescript/ArkPageTransition.ts | 73 ----- .../src/typescript/ArkRouteType.ts | 8 - arkoala/arkui-common/src/typescript/Router.ts | 128 ++++++--- arkoala/arkui-common/src/typescript/index.ts | 2 - arkoala/arkui/src/ArkStructCommon.ts | 6 +- .../src/handwritten/ArkPageTransition.ts | 272 +++++++++++++++--- arkoala/arkui/src/index.ts | 10 +- arkoala/ohos-sdk/scripts/ohos-app/build.mjs | 2 - 75 files changed, 1663 insertions(+), 334 deletions(-) create mode 100644 arkoala-arkts/cats/.gitignore create mode 100644 arkoala-arkts/cats/application/AppScope/app.json5 create mode 100644 arkoala-arkts/cats/application/AppScope/resources/base/element/string.json create mode 100644 arkoala-arkts/cats/application/AppScope/resources/base/media/app_icon.png create mode 100644 arkoala-arkts/cats/application/build-profile.json5 create mode 100644 arkoala-arkts/cats/application/code-linter.json5 create mode 100644 arkoala-arkts/cats/application/entry/.gitignore create mode 100644 arkoala-arkts/cats/application/entry/build-profile.json5 create mode 100644 arkoala-arkts/cats/application/entry/hvigorfile.ts create mode 100644 arkoala-arkts/cats/application/entry/obfuscation-rules.txt create mode 100644 arkoala-arkts/cats/application/entry/oh-package.json5 create mode 100644 arkoala-arkts/cats/application/entry/src/main/ets/entryability/EntryAbility.ets create mode 100644 arkoala-arkts/cats/application/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets create mode 100644 arkoala-arkts/cats/application/entry/src/main/ets/pages/Index.ets create mode 100644 arkoala-arkts/cats/application/entry/src/main/ets/resources/koala.png create mode 100644 arkoala-arkts/cats/application/entry/src/main/module.json5 create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/element/color.json create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/element/string.json create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/media/background.png create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/media/foreground.png create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/media/layered_image.json create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/media/startIcon.png create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/profile/backup_config.json create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/base/profile/main_pages.json create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/en_US/element/string.json create mode 100644 arkoala-arkts/cats/application/entry/src/main/resources/zh_CN/element/string.json create mode 100644 arkoala-arkts/cats/application/entry/src/mock/mock-config.json5 create mode 100644 arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/Ability.test.ets create mode 100644 arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 arkoala-arkts/cats/application/entry/src/ohosTest/module.json5 create mode 100644 arkoala-arkts/cats/application/entry/src/test/List.test.ets create mode 100644 arkoala-arkts/cats/application/entry/src/test/LocalUnit.test.ets create mode 100644 arkoala-arkts/cats/application/hvigor/hvigor-config.json5 create mode 100644 arkoala-arkts/cats/application/hvigorfile.ts create mode 100644 arkoala-arkts/cats/application/local.properties create mode 100644 arkoala-arkts/cats/application/oh-package-lock.json5 create mode 100644 arkoala-arkts/cats/application/oh-package.json5 create mode 100644 arkoala-arkts/cats/package.json create mode 100644 arkoala-arkts/cats/user/app/AppScope/app.json5 create mode 100644 arkoala-arkts/cats/user/app/build-profile.json5 create mode 100644 arkoala-arkts/cats/user/app/hvigor/hvigor-config.json5 create mode 100644 arkoala-arkts/cats/user/app/hvigorfile.ts create mode 100644 arkoala-arkts/cats/user/app/oh-package.json5 create mode 100644 arkoala-arkts/cats/user/app/user/BuildProfile.ets create mode 100644 arkoala-arkts/cats/user/app/user/build-profile.json5 create mode 100644 arkoala-arkts/cats/user/app/user/hvigorfile.ts create mode 100644 arkoala-arkts/cats/user/app/user/obfuscation-rules.txt create mode 100644 arkoala-arkts/cats/user/app/user/oh-package.json5 create mode 100644 arkoala-arkts/cats/user/app/user/src/main/module.json5 create mode 100644 arkoala-arkts/cats/user/arktsconfig-run-unmemoized.json create mode 100644 arkoala-arkts/cats/user/package.json create mode 100644 arkoala-arkts/cats/user/scripts/build-har.mjs create mode 100644 arkoala-arkts/cats/user/src/Page.ts create mode 100644 arkoala-arkts/cats/user/src/ets/Index.ets create mode 100644 arkoala-arkts/cats/user/src/ets/SomeCat.ets create mode 100644 arkoala-arkts/cats/user/src/ets/etsconfig.json create mode 100644 arkoala-arkts/cats/user/tsconfig-unmemoize.json delete mode 100644 arkoala/arkui-common/src/typescript/ArkPageTransition.ts delete mode 100644 arkoala/arkui-common/src/typescript/ArkRouteType.ts diff --git a/arkoala-arkts/arkui/src/Application.ts b/arkoala-arkts/arkui/src/Application.ts index e3fee2aa0d..4c611d4956 100644 --- a/arkoala-arkts/arkui/src/Application.ts +++ b/arkoala-arkts/arkui/src/Application.ts @@ -25,6 +25,7 @@ import { checkEvents, setCustomEventsChecker } from "./generated/Events" import { checkArkoalaCallbacks } from "./generated/peers/CallbacksChecker" import { setUIDetachedRootCreator } from "./generated/peers/CallbackTransformer" import { enterForeignContext, leaveForeignContext } from "./handwritten" +import { Routed } from "./handwritten" setCustomEventsChecker(checkArkoalaCallbacks) @@ -80,7 +81,10 @@ export function createUiDetachedRoot( const node = manager.updatableNode(peerFactory(), (context: StateContext) => { const frozen = manager.frozen manager.frozen = true - memoEntry(context, 0, builder) + memoEntry(context, 0, + /** @memo */ + () => WithAppRouter(builder) + ) manager.frozen = frozen }) detachedRoots.set(node.value.peer.ptr, node) @@ -96,6 +100,20 @@ export function destroyUiDetachedRoot(node: PeerNode): void { root.dispose() } +/** @memo */ +function WithAppRouter( + /** @memo */ + content?: () => void, + url?: string, +) : void { + Routed( + () => { + content?.() + }, + url + ) +} + function dumpTree(node: IncrementalNode, indent: int32 = 0) { const indentToString = (indent: number) => { let str = "" @@ -155,7 +173,9 @@ export class Application { return manager.updatableNode(peer, (context: StateContext) => { const frozen = manager.frozen manager.frozen = true - memoEntry(context, 0, builder) + memoEntry(context, 0, /** @memo */ + () => { WithAppRouter(builder) } + ) manager.frozen = frozen }) } @@ -228,8 +248,9 @@ export class Application { manager.syncChanges() manager.updateSnapshot() this.computeRoot() - for (const detachedRoot of detachedRoots.values()) + for (const detachedRoot of detachedRoots.values()) { detachedRoot.value + } if (partialUpdates.length > 0) { // If there are pending partial updates - we apply them one by one and provide update context. for (let update of partialUpdates) { @@ -245,8 +266,9 @@ export class Application { // Compute new tree state try { root.value - for (const detachedRoot of detachedRoots.values()) + for (const detachedRoot of detachedRoots.values()) { detachedRoot.value + } } catch (error) { InteropNativeModule._NativeLog('has error in partialUpdates') } @@ -279,9 +301,10 @@ export class Application { } catch (error) { InteropNativeModule._NativeLog(`Application.enter() error: ${error}`) if (error instanceof Error) { - if (error.stack) { + const stack = error.stack + if (stack) { leaveForeignContext() - InteropNativeModule._NativeLog(error.stack!.toString()) + InteropNativeModule._NativeLog("Application.enter: " + stack) return true } } diff --git a/arkoala-arkts/arkui/src/ArkComponentRoot.ts b/arkoala-arkts/arkui/src/ArkComponentRoot.ts index 3472d5f1fe..f87858db48 100644 --- a/arkoala-arkts/arkui/src/ArkComponentRoot.ts +++ b/arkoala-arkts/arkui/src/ArkComponentRoot.ts @@ -18,7 +18,7 @@ import { PeerNode } from "./PeerNode"; import { ArkComponentRootPeer } from "./generated/peers/ArkStaticComponentsPeer"; import { ArkCustomComponent } from "./ArkCustomComponent" import { int32 } from "@koalaui/common" -import { CurrentRouterTransitionState } from "./handwritten"; +import { CurrentRouterTransitionState, VisibilityHiding, VisibilityShowing, WithRouterTransitionState } from "./handwritten/Router"; /** @memo */ export function ArkComponentRoot( @@ -30,32 +30,42 @@ export function ArkComponentRoot( () => ArkComponentRootPeer.create(), (node: PeerNode) => { let state = CurrentRouterTransitionState() - RunEffect(state != undefined ? (state!.visibility as int32) : -1, (visibility: int32) => { - //console.log(`Router transition changed: ${visibility}`) - // Write properly when enum import will be fixed. - if (visibility == 2 /* RouterTransitionVisibility.Showing */) { - component.onPageShow() - } - if (visibility == 3 /* RouterTransitionVisibility.Hiding */) { - component.onPageHide() - } - }) - let shown = rememberDisposable(() => { - let state = mutableState(false) - scheduleCallback(() => { - component.aboutToAppear() - // TODO: page visibility doesn't belong here, remove when router transition state propely maintained. - component.onPageShow() - state.value = true + if (state) { + let shown = rememberDisposable(() => { + let state = mutableState(false) + scheduleCallback(() => { + component.aboutToAppear() + // TODO: page visibility doesn't belong here, remove when router transition state properly maintained. + component.onPageShow() + state.value = true + }) + return state + }, (_: MutableState | undefined) => + scheduleCallback(() => { + component.aboutToDisappear() + // TODO: page visibility doesn't belong here, remove when router transition state properly maintained. + component.onPageHide() + }) + ) + + RunEffect(state.visibility, (visibility:int32) => { + switch (visibility) { + case VisibilityShowing: + component.onPageShow() + break + + case VisibilityHiding: + component.onPageHide() + break + + default: break + } }) - return state - }, (inited: MutableState | undefined) => - scheduleCallback(() => { - component.aboutToDisappear() - // TODO: page visibility doesn't belong here, remove when router transition state propely maintained. - component.onPageHide() - })) - if (!shown.value) return - content() - }) + + component.pageTransition() + + if (shown.value) WithRouterTransitionState(undefined, content) // skip first frame and hide router state + } + } + ) } \ No newline at end of file diff --git a/arkoala-arkts/arkui/src/ArkStructBase.ts b/arkoala-arkts/arkui/src/ArkStructBase.ts index 16365245a2..fc2ea77e98 100644 --- a/arkoala-arkts/arkui/src/ArkStructBase.ts +++ b/arkoala-arkts/arkui/src/ArkStructBase.ts @@ -1,8 +1,23 @@ -import { MutableState, mutableState, remember, rememberDisposable, rememberMutableState, RunEffect, scheduleCallback } from "@koalaui/runtime" +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { remember } from "@koalaui/runtime" import { ArkCustomComponentImpl } from "./ArkCustomComponent" import { ArkCommonMethodComponent } from "./generated" -import { CurrentRouterTransitionState, RouterTransitionState, RouterTransitionVisibility, WithRouterTransitionState } from "./handwritten" -import { int32 } from "@koalaui/common" +import { ArkPageTransitionEnter, ArkPageTransitionExit } from "./handwritten/ArkPageTransition"; +import { PageTransitionOptions } from "./generated/ArkPageTransitionInterfaces"; import { ArkComponentRoot } from "./ArkComponentRoot" /** base class for user's structs */ @@ -58,4 +73,10 @@ export abstract class ArkStructBase extends ArkCustomComponentImpl content?: () => void, initializers?: T_Options ): void + + /** @memo */ + pageTransition(): void { + ArkPageTransitionEnter(undefined, undefined, { duration: 100 } as PageTransitionOptions ) + ArkPageTransitionExit(undefined, undefined, { duration: 100 } as PageTransitionOptions ) + } } diff --git a/arkoala-arkts/arkui/src/UserView.ts b/arkoala-arkts/arkui/src/UserView.ts index 90c686df61..0806d9c134 100644 --- a/arkoala-arkts/arkui/src/UserView.ts +++ b/arkoala-arkts/arkui/src/UserView.ts @@ -17,7 +17,7 @@ import { int32, int8Array } from "@koalaui/common" export type UserViewBuilder = /** @memo */ -(/*root: PeerNode*/) => void +() => void export class UserView { constructor() {} diff --git a/arkoala-arkts/arkui/src/handwritten/ArkPageTransitionData.ts b/arkoala-arkts/arkui/src/handwritten/ArkPageTransitionData.ts index 0a5c9a88d9..0c3c89acca 100644 --- a/arkoala-arkts/arkui/src/handwritten/ArkPageTransitionData.ts +++ b/arkoala-arkts/arkui/src/handwritten/ArkPageTransitionData.ts @@ -13,21 +13,7 @@ * limitations under the License. */ -import { RouteType, SlideEffect, PageTransitionOptions } from "../generated" - -interface TranslateOptions { - x?: string | number | undefined; - y?: string | number | undefined; - z?: string | number | undefined; -} - -interface ScaleOptions { - x?: number | undefined; - y?: number | undefined; - z?: number | undefined; - centerX?: string | number | undefined; - centerY?: string | number | undefined; -} +import { RouteType, SlideEffect, PageTransitionOptions, TranslateOptions, ScaleOptions } from "../generated" export class ArkPageTransitionData { params: PageTransitionOptions diff --git a/arkoala-arkts/arkui/src/handwritten/Router.ts b/arkoala-arkts/arkui/src/handwritten/Router.ts index 52642a7b70..1e42f9ab01 100644 --- a/arkoala-arkts/arkui/src/handwritten/Router.ts +++ b/arkoala-arkts/arkui/src/handwritten/Router.ts @@ -14,20 +14,39 @@ */ -import { int32, observableProxyArray } from "@koalaui/common" +import { int32 } from "@koalaui/common" import { MutableState, contextLocal, contextLocalScope, - mutableState + mutableState, + remember, + RepeatByArray, + arrayState, + RunEffect, } from "@koalaui/runtime" -import { RouteType} from "../generated" +//import { RouteType} from "../generated/ArkPageTransitionInterfaces" + +// ---------------------------------------------------------- +// TODO: Remove these constants when enums are fixed in Panda +export const VisibilityHidden = 0 +export const VisibilityVisible = 1 +export const VisibilityShowing = 2 +export const VisibilityHiding = 3 + +const RouteType_NONE = 0 +const RouteType_None = 0 +const RouteType_PUSH = 1 +const RouteType_Push = 1 +const RouteType_POP = 2 +const RouteType_Pop = 2 +// ---------------------------------------------------------- export enum RouterTransitionVisibility { - Hidden, - Visible, - Showing, - Hiding, + Hidden = VisibilityHidden, + Visible = VisibilityVisible, + Showing = VisibilityShowing, + Hiding = VisibilityHiding } export type MemoFunction = @@ -36,8 +55,8 @@ export type MemoFunction = export interface RouterTransitionState { pageId: int32 - visibility: RouterTransitionVisibility - route?: RouteType + visibility: int32 // TODO: Use RouterTransitionVisibility enum when enums are fixed in Panda + route?: int32 // TODO: Use RouteType enum when enums are fixed in Panda } class VisiblePage { @@ -49,16 +68,16 @@ class VisiblePage { constructor( page: MemoFunction, version: int32, - visibility: RouterTransitionVisibility, - route?: RouteType + visibility: int32, // TODO: Use RouterTransitionVisibility enum when enums are fixed in Panda + route?: int32 // TODO: Use RouteType enum when enums are fixed in Panda ) { this.page = page this.version = version this.transitionState = mutableState({ pageId: version, visibility, route } as RouterTransitionState) } - setTransitionState(visibility: RouterTransitionVisibility, route?: RouteType) { - this.transitionState.value = { pageId: this.version, visibility, route } + setTransitionState(visibility: int32, route?: int32) { + this.transitionState.value = { pageId: this.version, visibility, route } as RouterTransitionState } get transition(): RouterTransitionState { @@ -67,7 +86,7 @@ class VisiblePage { } class RouterState { - readonly visiblePages = observableProxyArray() + readonly visiblePages = arrayState() currentActivePage = mutableState(0) constructor( page: MemoFunction, @@ -79,7 +98,7 @@ class RouterState { this.url = url this.params = params this.resolve = resolve - this.visiblePages.push(new VisiblePage(page, this.version.value, RouterTransitionVisibility.Visible)) + this.visiblePages.push(new VisiblePage(page, this.version.value, VisibilityVisible)) } /** @memo */ page: MemoFunction @@ -205,7 +224,8 @@ class RouterImpl implements Router { if (push) { this.stack.push(new RouterStackEntry(this.state.url, this.state.page, this.state.params)) } - this.activate(entry, push ? RouteType.Push : RouteType.None, params, resolve) + // TODO: Use RouteType enum values when enums are fixed in Panda + this.activate(entry, push ? RouteType_Push : RouteType_None, params, resolve) } else { const resolver = this.resolver if (resolver !== undefined) { @@ -214,7 +234,7 @@ class RouterImpl implements Router { if (push) { this.stack.push(new RouterStackEntry(this.state.url, this.state.page, this.state.params)) } - this.activate(new RouterRegistryEntry(url, page), push ? RouteType.Push : RouteType.None, params, resolve) + this.activate(new RouterRegistryEntry(url, page), push ? RouteType_Push : RouteType_None, params, resolve) }) .catch((error: string | undefined): void => reject(error)) } @@ -228,58 +248,56 @@ class RouterImpl implements Router { showingPage: number = -1 hidingPage: number = -1 - private activate(entry: RouterRegistryEntry, route: RouteType, params: Map | undefined, resolve: () => void) { + // TODO: Use RouteType enum as route parameter when enums are fixed in Panda + private activate(entry: RouterRegistryEntry, route: int32, params: Map | undefined, resolve: () => void) { const state = this.state state.version.value++ // console.log("activating", RouteType[route], entry.url, "version", state.version.value) let previousVisiblePageIndex = this.findIndexByVersion(state.currentActivePage.value) - let previousVisiblePage = state.visiblePages[previousVisiblePageIndex] - if (previousVisiblePage) previousVisiblePage.setTransitionState(RouterTransitionVisibility.Hiding, route) + let previousVisiblePage = state.visiblePages.value[previousVisiblePageIndex] + if (previousVisiblePage) previousVisiblePage.setTransitionState(VisibilityHiding, route) state.page = entry.page state.url = entry.url state.params = params state.resolve = resolve let newVisiblePage: VisiblePage - /* - TODO SHOPPING: transform switch to ifs - */ - console.log(`TODO SHOPPING: activate`) - // switch (route) { - // case RouteType.Push: { - // newVisiblePage = new VisiblePage(entry.page, state.version.value, RouterTransitionVisibility.Showing, route) - // state.visiblePages.splice(previousVisiblePageIndex + 1, 0, newVisiblePage) - // break - // } - // case RouteType.Pop: { - // const index = this.stack.length // TODO: store uid in registry to find a page - // newVisiblePage = state.visiblePages[index] - // newVisiblePage.setTransitionState(RouterTransitionVisibility.Showing, route) - // // remove all hidden pages removed from the stack - // for (let i = state.visiblePages.length - 1; i > index; i--) { - // const visibility = state.visiblePages[i].transition.visibility - // if (visibility == RouterTransitionVisibility.Hidden) state.visiblePages.splice(i) - // } - // break - // } - // case RouteType.None: { - // // TODO: can/shall we animate replace? - // newVisiblePage = new VisiblePage(entry.page, state.version.value, RouterTransitionVisibility.Showing, route) - // state.visiblePages[previousVisiblePageIndex] = newVisiblePage - // break - // } - // default: - // throw new Error("Illegal RouteType: " + route) - // } - // this.hidingPage = previousVisiblePage?.version ?? -1 - // this.showingPage = newVisiblePage.version - // state.currentActivePage.value = newVisiblePage.version + + switch (route) { + case RouteType_Push: { + newVisiblePage = new VisiblePage(entry.page, state.version.value, VisibilityShowing, route) + state.visiblePages.splice(previousVisiblePageIndex + 1, 0, newVisiblePage) + break + } + case RouteType_Pop: { + const index = this.stack.length // TODO: store uid in registry to find a page + newVisiblePage = state.visiblePages.value[index] + newVisiblePage.setTransitionState(VisibilityShowing, route) + // remove all hidden pages removed from the stack + for (let i = state.visiblePages.length - 1; i > index; i--) { + const visibility = state.visiblePages.value[i].transition.visibility + if (visibility == VisibilityHidden) state.visiblePages.splice(i, undefined) + } + break + } + case RouteType_None: { + // TODO: can/shall we animate replace? + newVisiblePage = new VisiblePage(entry.page, state.version.value, VisibilityShowing, route) + state.visiblePages.set(previousVisiblePageIndex, newVisiblePage) + break + } + default: + throw new Error("Illegal RouteType: " + route) + } + this.hidingPage = previousVisiblePage?.version ?? -1 + this.showingPage = newVisiblePage.version + state.currentActivePage.value = newVisiblePage.version } findIndexByVersion(version: int32): int32 { const array = this.state.visiblePages const length = array.length for (let i = 0; i < length; i++) { - if (array[i].version == version) return i + if (array.value[i].version == version) return i } return -1 } @@ -287,26 +305,26 @@ class RouterImpl implements Router { onPageTransitionEnd(pageId: int32): void { const index = this.findIndexByVersion(pageId) if (index < 0) return - const page = this.state.visiblePages[index] - if (page.transition.visibility == RouterTransitionVisibility.Showing) { + const page = this.state.visiblePages.value[index] + if (page.transition.visibility == VisibilityShowing) { if (pageId == this.state.currentActivePage.value) { console.log("PAGE VISIBLE:", page.transition.pageId) - page.setTransitionState(RouterTransitionVisibility.Visible) + page.setTransitionState(VisibilityVisible) } else { - // console.log("ERROR: showing page cannot be shown:", page.transition.route ? RouteType[page.transition.route] : "unknown") - page.setTransitionState(RouterTransitionVisibility.Hidden) + page.setTransitionState(VisibilityHidden) } - } else if (page.transition.visibility == RouterTransitionVisibility.Hiding) { + } else if (page.transition.visibility == VisibilityHiding) { if (index < this.stack.length) { console.log("PAGE HIDDEN:", page.transition.pageId) - page.setTransitionState(RouterTransitionVisibility.Hidden) + page.setTransitionState(VisibilityHidden) } else { console.log("PAGE REMOVED:", page.transition.pageId) this.state.visiblePages.splice(index, 1) } - } else { - // console.log("ERROR: no page transition:", RouterTransitionVisibility[page.transition.visibility], page.transition.route ? RouteType[page.transition.route] : "unknown") } + // else { + // // console.log("ERROR: no page transition:", RouterTransitionVisibility[page.transition.visibility], page.transition.route ? RouteType[page.transition.route] : "unknown") + // } } push(url: string, params?: Map): Promise { @@ -338,7 +356,7 @@ class RouterImpl implements Router { if (entry) { this.activate( new RouterRegistryEntry(entry.url, entry.page), - RouteType.Pop, + RouteType_Pop, params ?? entry.params, resolve ) @@ -358,36 +376,26 @@ class RouterImpl implements Router { } /** @memo */ -// export function Routed( -// /** @memo */ -// initial: () => void, -// /** @memo */ -// contentOwner: ( -// /** @memo */ -// content: () => void -// ) => void, -// initialUrl?: string, -// ) { -// const routerState = remember(() => new RouterState(initial, initialUrl ?? "_initial_")) -// const router = remember(() => new RouterImpl(routerState)) -// RunEffect<() => void>(routerState.resolve!, (resolve?: () => void): void => { resolve?.() }) -// contextLocalScope(CURRENT_ROUTER, router, (): void => { -// contentOwner( -// /** @memo */ -// (): void => { -// RepeatByArray( -// routerState.visiblePages, -// (page: VisiblePage): int32 => { return page.version }, -// (page: VisiblePage): void => { -// WithRouterTransitionState(page.transition, () => { -// page.page() -// }) -// } -// ) -// } -// ) -// }) -// } +export function Routed( + /** @memo */ + initial: () => void, + initialUrl?: string, +) { + const routerState = remember(() => new RouterState(initial, initialUrl ?? "_initial_")) + const router = remember(() => new RouterImpl(routerState)) + RunEffect<(() => void) | undefined>(routerState.resolve, (resolve?: () => void): void => { resolve?.() }) + contextLocalScope(CURRENT_ROUTER, router, () => { + RepeatByArray( + routerState.visiblePages.value, + (page: VisiblePage, index: int32): int32 => { return page.version }, + (page: VisiblePage, index: int32): void => { + WithRouterTransitionState(page.transition, () => { + page.page() + }) + } + ) + }) +} /** @memo */ export function CurrentRouter(): Router | undefined { @@ -396,7 +404,7 @@ export function CurrentRouter(): Router | undefined { /** @memo */ export function CurrentRouterTransitionState(): RouterTransitionState | undefined { - return contextLocal(CURRENT_ROUTER_TRANSITION)?.value + return contextLocal(CURRENT_ROUTER_TRANSITION)?.value } /** @memo */ diff --git a/arkoala-arkts/arkui/src/handwritten/index.ts b/arkoala-arkts/arkui/src/handwritten/index.ts index eeb6fe2981..d2bde379dd 100644 --- a/arkoala-arkts/arkui/src/handwritten/index.ts +++ b/arkoala-arkts/arkui/src/handwritten/index.ts @@ -18,6 +18,3 @@ export interface ISinglePropertyChangeSubscriber {} export interface NavigationAttribute {} export interface PageTransitionEnterInterface {} export interface PageTransitionExitInterface {} - -export { ArkPageTransitionEnter as PageTransitionEnter } from "./ArkPageTransition" -export { ArkPageTransitionExit as PageTransitionExit } from "./ArkPageTransition" diff --git a/arkoala-arkts/cats/.gitignore b/arkoala-arkts/cats/.gitignore new file mode 100644 index 0000000000..9085d4a755 --- /dev/null +++ b/arkoala-arkts/cats/.gitignore @@ -0,0 +1,2 @@ +oh_modules +generated \ No newline at end of file diff --git a/arkoala-arkts/cats/application/AppScope/app.json5 b/arkoala-arkts/cats/application/AppScope/app.json5 new file mode 100644 index 0000000000..2b158f05af --- /dev/null +++ b/arkoala-arkts/cats/application/AppScope/app.json5 @@ -0,0 +1,10 @@ +{ + "app": { + "bundleName": "com.example.cats", + "vendor": "cats", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/arkoala-arkts/cats/application/AppScope/resources/base/element/string.json b/arkoala-arkts/cats/application/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000..5b9c990b7b --- /dev/null +++ b/arkoala-arkts/cats/application/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "Cats" + } + ] +} diff --git a/arkoala-arkts/cats/application/AppScope/resources/base/media/app_icon.png b/arkoala-arkts/cats/application/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a39445dc87828b76fed6d2ec470dd455c45319e3 GIT binary patch literal 2777 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 literal 0 HcmV?d00001 diff --git a/arkoala-arkts/cats/application/build-profile.json5 b/arkoala-arkts/cats/application/build-profile.json5 new file mode 100644 index 0000000000..3ead1e058d --- /dev/null +++ b/arkoala-arkts/cats/application/build-profile.json5 @@ -0,0 +1,34 @@ +{ + "app": { + "products": [ + { + "name": "default", + "signingConfig": "default", + "compatibleSdkVersion": "5.0.0(12)", + "runtimeOS": "HarmonyOS" + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/code-linter.json5 b/arkoala-arkts/cats/application/code-linter.json5 new file mode 100644 index 0000000000..77b31b517a --- /dev/null +++ b/arkoala-arkts/cats/application/code-linter.json5 @@ -0,0 +1,20 @@ +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + } +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/.gitignore b/arkoala-arkts/cats/application/entry/.gitignore new file mode 100644 index 0000000000..e2713a2779 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/build-profile.json5 b/arkoala-arkts/cats/application/entry/build-profile.json5 new file mode 100644 index 0000000000..4d611879c7 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/build-profile.json5 @@ -0,0 +1,28 @@ +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/hvigorfile.ts b/arkoala-arkts/cats/application/entry/hvigorfile.ts new file mode 100644 index 0000000000..c6edcd9048 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/arkoala-arkts/cats/application/entry/obfuscation-rules.txt b/arkoala-arkts/cats/application/entry/obfuscation-rules.txt new file mode 100644 index 0000000000..272efb6ca3 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/oh-package.json5 b/arkoala-arkts/cats/application/entry/oh-package.json5 new file mode 100644 index 0000000000..248c3b7541 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/oh-package.json5 @@ -0,0 +1,10 @@ +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": {} +} + diff --git a/arkoala-arkts/cats/application/entry/src/main/ets/entryability/EntryAbility.ets b/arkoala-arkts/cats/application/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000..47e7c29daa --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,42 @@ +import { AbilityConstant, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; +import UIAbility from '@ohos.app.ability.UIAbility'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/arkoala-arkts/cats/application/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/arkoala-arkts/cats/application/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 0000000000..dc55c03d3e --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,12 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(0x0000, 'testTag', 'onBackup ok'); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(0x0000, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + } +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/main/ets/pages/Index.ets b/arkoala-arkts/cats/application/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000..9393e00f39 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,20 @@ +@Entry +@Component +struct Index { + @State message: string = 'Hello World'; + + build() { + RelativeContainer() { + Text(this.message) + .id('HelloWorld') + .fontSize(50) + .fontWeight(FontWeight.Bold) + .alignRules({ + center: { anchor: '__container__', align: VerticalAlign.Center }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + } + .height('100%') + .width('100%') + } +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/main/ets/resources/koala.png b/arkoala-arkts/cats/application/entry/src/main/ets/resources/koala.png new file mode 100644 index 0000000000000000000000000000000000000000..c2053602ac7ec945e4099ceee995831e0a3a08b9 GIT binary patch literal 139657 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

-tTao|OO!av0Je6o$-nvcHzvRN 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 A4*&oF literal 0 HcmV?d00001 diff --git a/arkoala-arkts/cats/application/entry/src/main/resources/base/media/foreground.png b/arkoala-arkts/cats/application/entry/src/main/resources/base/media/foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4483ddad1f079e1089d685bd204ee1cfe1d01902 GIT binary patch literal 12430 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 cSLciz6AsI{U0tD9;7S&f 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

c)ijgxDm}8EsRXFt3h@+Ufr7@DN z^55r2UpdZvo*$)c`MJ_3zXBARbH%T}ifygzYy6g*WBtspGU<*Ccb`wpyW!Ui$gZ}y zo>MwK`K>f-62KfvO2{S zXF|ni6T=gB=C>=mF~5ojWS?I%DBt!ouB^&}v*S8G>5&(6>bM<0W9)PIeSXbv;v2lq zgZx&0)nJZqzUPEz=3RZouldy~VSciFe9|fxrs_KoD#u$hYz3BTu8Twxs@yt>*lp{< zm_XbpVEfL5#v}%x;+@AY<0*cV$ZF-248A&7CXCUG-9e@z7Va=V8J*&{q4I$n{~M-~K{qUmg-Y{N~tC__Y!6wZ`uS zAN=8SKnb`wARia}P{>}4q*mFJ2rt$xz9z}40>2@prKgMpJ4y?1MK zsu;8LLY(s8tNKp-L`??i35r}^567PuI=u8S&*EdFoy9Nf;48%{S#m8d=h|q*N!*Hw zE&QzCc2jn4u4(uar*pTPKCQ7DC)&Cs49?>3$7+X~)XJA`!=HT>p7`~r%@S~FvIWT% zL)t28t$h|BY!xpHnSQNXihG*>p${(0U;hi2mrwZcOUrZh0ee^UiT1oYO{3$5Hop*u zLXEN0l1qM=vD`rN)XOLJdon_5oHz3`AzpsrE1f=|*Mk1={U^)6{EcJ3kodUYZmX=p z&l4~2a)h&L*mG4|<3d+3_?Prr)`vgu$Y1U7EWIl2?@iUEd5K>;n9zxxlFNU^0vTLl zH@o9AcfQkuuVr{d?>6N1tv`70$?|*eKGqA1!uC8^rS(s+P1LOQ9lYFac+7nk_^^=}_9|LQHrRm;gm z#jgtmwd-2xd;fSm;rGSZd-@wbDeXS|)%sP&lv@b1qs`Sf43!0V?3qvsHeeF4^Q(*h z^}o7zxuRcU@`@_U0N4FIMxo}rPTLvJc{K#}XhYWmowJJ2$Yjbl`u)zkPnNIv?#GvR zeQ>x@oZ)FOm|m&l>_ivC(ek;URCk@4f5BINBIPcJedSknv#$7sL09O4r%@qb_M zz2et2d?)PSD|vhJv?jf^coe^7;*5D_(i{GoNjc@GFgNZjMJ5=HK91L-#6s_k5ZsDS zGS%RQ&sF+5eNE*3{W~3);ByDsjH9O)4$S@$?yR>?gy?){V`EPI$n>{$7kZJt&E|jq z@9tl&>KhB0wjiX?fvux_ph<@^P`xU#l~@YcVmvoP|52 zFCDST=db-|m-UT`(xE24+%n&4gZ%FnLi&Yo)!)!<`8*?XqEn@~PlG4oI{hPQc|SBA-3UqQo@Ok7n} zIAZ21l@78Rn`X^sw|ukiJP&AnypS?sjm)BYgRrvd_2vm*-zj>cKd@`Ab&91Yp=>6{)F%4)7auKu@lUJhnvWozKNZb^uG+`E@Y3=U zeK~|@uUf1nf;jWRpXQgYuqA_|MTZQJmcB;TNR^GlS{T8}iC6rO{IH|tWqO{uY5h}C zK^05FmfvX7IMk$1hE*ehH{+tKyHIa1DdB;;rJvHi z@XysN8q8vy7k-&z&tLr~zqICPT-#vO+|kk)bI{UP%}!$rHS^6TDD1uXt~a|@W*~+c z8vo^wJW;Rw34f4ZJkG`2_D~Yj%WRNd2O^Mwn=s<$0*s{9@EYCPT5v)bA~e(n|~6M0EUxGtnrcN&$s(s zzN8S(XWAcol9+ za@NCPqQw`HsBTqo#8>DWj&U^~+CTP~&69^IHqX$ty#E|%_>m7|XO7~asM|V+|Xy_l(fh&fm#RNST>VcoN?=6S_DPi%0~BG=sQt4-78)-@|b)lahBHa~PL<9jHj zNE~dl9PG02qUPM@QPu+cEDu-Af8%z}zB%Ihfge*{9Wd$&G+)E(=&9+o!^CjO`cwNdjVRH+WU`h_MXAOitJp5x3ifW{$igPf9iBj$(b=HI#x==`-hy-E&gI#->XR(BW&pMdcoR19-nNcPkY4s2bR7uK27u z;T-wi{Jv$d3tg^Khr|3zu!D-f$3GV1rd-BjB{h8+psmB&uHFO}3e<>-KnIym}P_oSC zslstp61Dm&1NiV|^pEbaNt}ZX!rh1GA<@OoA~K`yhAgd{@foOROsg!`F}gM(u1!jB zP-&PeM7Vk8W1#d^)-p1e`o(13g|c~w?dj`;4_bZu^_E|g3d=E{cLES;rdxmDH283uG=7WUKG<2~ea{IxU4q0( zBCeM((XD0e;O571>R|^u&Ev*jpsQGwzvm-2(K$^ICifY)?_e`E(umG-isbY(H;sFS z_TV{-u;uIR9OWMt?$V=eCxZbQ9k$3lC>2^A@xz~@XvD&(_uWN31AO=Zpf(=jB!lHh zOT3|j8)NsuFr00(J`~5*Aa@-yCcZDeY#2MK^7+byjE?yuYo4B|14zoWZPTeh8BIOF zi#LZ9-0pPpQq1&2arSg`YF@vQoGhb26RLwnlb*1L_^M-Vlx>giHItHpV-y+pt6ZEK z556G7lZ4?GS?qbNp_S;OAM&IlDs9+mIL@;^vinA)D6z3H9OHAVWxzHP_n^luSJ#<< zbsIty2lS^g(Tp%sL>_Jx%DMrbLPR&IRuN*2au@Mv3b3wQaDyVnmOp4Ma3Q*l1@}l- z7!@6xqcC>X;&3#^WC@2>d~Pt-WCFI;DSS*he8-yHfN>hl!&k7gZRoJWX*}IU_<3Dv zFh%O=_d;$wPTu#$88_QzeaYlJH`gOD^~u}%0AtVi0{v!P<5awgzdH2uJ`V|wUL*2lawezA2~fq&{P;mfB?8T6HUC*4h6A&Uoa8O-j$RT~z$aZBVg6 zzF?cyl6N zdHw?sJ7Tp$XXHMr#>SS7hWS(q4Vv|F6FxR`qoAKa__u1W&%AQI4T^VKan^IyU>zfs zE|$R$NQPNwnbWKcmi{dLjG5%b9r@2i8f!K??SvY4H+*lPY@EblJRiC1P#E;CqroIW z@amJ2xy(A56v{9|GuaTpMMj+DK>H#%Xah4-!k=}#^ zneQH-ALI49-brtya+(0Rs?MoH;W4xa=7q~HKFb7Z1nBuy5&@vrkTKXDY=saRII;oP z3R%&P2^nF-NYearIVR*J3O2Ys934KH3%!qF8Ezacu`vg0S*Oab^yt!p+xLq-xy5gM z#Kw5jI=`XA!CkZ&zAqE&VEj1=NFmPhl*4MSO=PEas`~e2-T71-1sApc|fu*Q}= zsYFnC_DZcy+zSDb@&j)&>t^-n;oK7;%>Y=GI zf;q6^#lf=W>#ky4S#ll)lVVQT_DO*_|C(c%5cIB9nT$1w zdZdwu#x~{=-+@S!Al?*`YqRX_$W)w|mL<42l`iKk-%cwYqIN?eH8`i)kL=}d1?JZx ztLCs2KGwvGug#(X==ud4yo;s5T!B+uNNV9YMyc!;d~C+efEeaJa{IVw7aDzJFOkR6 zSlJt<<>?A3vyx@)YW!;#RD~3cJ<+yt$FWi*K*_8K6|i@y5t3Ja zJ+H|ads>I+vjj95MRGK=^x>=qv2joEMXBp_IFN4`AdHaye#ZCSN+T3ki zEEWhGJ-%>&Q^eAnKgqhuJba{|Jl+AxddOr{Cxi+(@50!IbHi4?hjyY5LQ=XVPTEpb zyqVjwx1@vOf~d3GC@cCi=V6PSGqd|Ua>`SZ|JP5mkUUL?=|EPi{@-nlH?JLkAw z*sMbLgtgvL+o_1?*wJfZjcXpC5>GR~M4yu?y`l7N54Pg1hB01ME2+8Z!14qfU-Yz@ zpP&@C_lf&Q^@(4j;1EbkPV$`KhCay2t@XoalE&DO(HG;)bGsV$(1$|8a365@r{WKw zNW$FkEp^Sm<|7b9uV3Ad{N#D~L@0goVuYqx6L^T_<{Zg#=0otZT7J0Sg93< zJ_mX2IquB#Bm6s#^rsweb>du#$y5q2icb}=oNpi;{UA7T{^iK)*yGw5d6=pq_?*D>mRC&iQRDaItw;A9 zUwyN}YMcO55)^&3H9%p>YklyFuHBgRqrZ5o{^}Fg-RyE2Q&BkPr4P7!;2dsBBY5kZ z6MOo=-HSke#!JD&S`O^!e_!8v^T8YV)+p1?{L!gB{K1puy1vT%sWe=-JBLXqC(&~o zh8QdS8g_rYT88wPo<6+$(H>5CKO8#&q^#c>*j4hprAvR9e{%Kyt8YGf`?u>?8Tz14 zS1k!Et{sV(!ehcu#U^0M9yMmukRS`=W<1D5*Xuj%0?f#3B#i1AuV%Dk0a#p(np`Z z@Ny<>{{ZDV5+@v)mOs>&&;9Vv>-)pHaOkS3YygE%;ePHnZ!h`bKx(H9HZuLnZ`piM z2ii=ClLN3rsu>=c{+jNjKd(=0rLpid^!u4*y(mWJPG6kjm0Yv8i=0jt@0q$c?3SO6 zo`T_+i0(Myt98b;JQvD(PJ8@c_^spR4R6xbATVp;gA^fWJoolt6Viy=aHkR(bL6>a z0*u#QIOR-CHs#1eI_@gp{LgMJH~1i?ZcMM{ufkCb2He+@V%l*Br$@ccN`(OGk)9u)8Cl^IS$70>cnNtJOD;^adIv1mfzOH@{j*A zpUGT+)Iu&-&YD8$81J|E-`Afpo?Sod(=~-f1KG?W4N<>A4H|trX(W)6k{Oa&+m(#9NV~FpO<-jgq5FpLo=R80h%`t-tc094&kfl2?<-(g>J|r?=r^r}OA> zmp&f(`pX~wSI3@L@|*kMoPV!t)up3lQ3afNHGkNJ?ukAA%&S+P!*d|=aQo0Nz5YfK zKR4s_UId|>uzYyqbjJt5=GTt(Ez-yS$U9G{Cqm(9+ajN> zgT~ide(a0*RMefm>R_qQXttNTKUJiWa#G(o>gibbxL(-&eO>l^>-4Yw{;}#f=Ndog zTpjgwLr5GKkp=Bm^VjU9%39U~*@|iCk3RCfSN<|`f4G7d?}tSDTy`AIwQL?;#$97+ ztSvnwvYK=4p}Io0?fv>@g@5oyeJpBc$rtZF^xS26hCWZ4#Yok->p2VeHu^YSPUGG2k^A|XtmgmW>+a9E=9)4OCk5TSW^(Rd;pI_JfySLre zQLOv*sbCN46V?6wuS}=FN|eBT_p(bFq*`MXpIA`Vg(EMp(umI{;a4t?=!xmyYV?&H2P7PMKv=d+vjRBWh(As6Lj0Qcn$#3?!%y6`&&<3aj!!;n$@xk0 z*`QFf2~yb7*ZgYBR84)J;s=KZ&x_vE!tWtII60`G5(@|IFyHPr=5zVG<@(X_<1hTc z_kGCwAo)o&!Uw+XL*A!{f;S*LxN;y5=0e-ZrK)pdNED2liw(!iVbw-%n7!XMpG8kA zGUJMmr0RBj5-MyJddQOpL{O*s7%s{`6u+WXrgQwlI?smCIg$&Q{AYgqCt0wKb7$_% zm%{TugWsEv_{Fa|uJO;}cZ_9uLpG0)>jq*Vhu`WPlbLjiH(IU~Fm-o{X+n|rIebs+ zBK*FBMohVN%r4@=_@qH>4)KXqe5CL#cK)Tu;+Dei@z-rsKEYOe;uO{W-~*^lGv{e} zg4af91r84J?WZul<4pXy&Q9bMAD7uEiayKu@j6WtFdw~+#;%<5b$dDfR;X#?4us;} z-~EhV6zs>~=Rof`?o~=VM~9%M_?8J+n!&AcCV)?AP=;fE71{~UeEA>#S{QucDki=r zzHybu$j{hvT>Nr&n2+r=zY;+&dlw*cHh$KbFJ$UN=-6jIG7AR2vDH_c$iN1FmhpRt z?{%2s!?BZglURd~-k|DP8~&9Flv)o?mLI$Jz3h>-Z8i{UeJRS<(K9vL#!-~$F*1Sp z9>4-|wb7EC2gB>kF9$2`EI#_O(HBeOdGZy+=Ze2BPH_+Mi?qgP47=j(>kB=mJ%oMS z9r<0iE@an9F`Z)KGra&4x%#2EIrCiSSMf=2pI?~4w>$UPbpC{gT;8zlrl=Bb2 zc!MuoiVfHWSDf^|NDlF(^ZW;&*`LSHX6X1EeyW$cIeN{P*pA<}=H;OUB#~>P2l%!Y z!u69#KlsSz*U2UJ{M*;+{q-Mwz4pdlJGFtZ-+TGiS1Ql<#B&y|xO2F8BP#-G95X!= zS3AtF&0v5*jT?Lk8~!j1%0_T}otooBko6is#Sgz&6@Aj7$ONp`$^7Ks*zOGN$=Vl+ z!3WfQyRB%BY(65Ff(S*v1=yWtyJ{I0gB$4W-~OP!g>&~BlI$ss{JeWJ0Y~lvE4La}LgwmJ{B^=-^LrxrR*K+!NY34Y z%M z<9FfUS32e(gAJbEtbl5ub8iasSIo+HYW6cI2(;PPCVrX9hj6>)HIID%gYPzH@6^%v zv^{*@-@5)2n!;y#NN$bBu|)+fn^0}89(_q=8AGE|lG!A3qm}-*G$sPd@g2 zSN`*ry_F8$fdaX8yu3>5_^=Mm3a>SxDq|(W496V3gthog+!l-+gI^0x3>K~U0B9_I z@g1v9#%%cbQY(J<)|7{e%NhR$c6@0R)3;{wt|Y5hT-qAn?23((Ie*Is_;P_4Gx3j1 z3^!RMCcZ=O#~*wM_}}BBm6H6+W|(D1K9`SA_)O&v{7zZehxLm7tBQH}eC`H%|3AL+ zwv$WC=ZSiwBbOHn*aasRMW->jDp-wcQfvqt$sDPv&GGOq`KuGkd^o;c>O`@?JJE_` zdU788%6;TNa;;()znFK!uf=i(n|UXb!}$}T5F5S&N6!Fu`(`Au^2Zij=Z|V?HNBZ# z{Jg_J&>P3Qlh3>HhAVHIXs5)?*?J{TB9TPPY-Gp32p`^F3!lv=`TY2MT!#Dn_EX5YDwXjm4@%zo zyA%j0dpPZ8aUi>rp!dHqyG~d+l6Q>+x9T-*oC&4dQmFv;TYcH~Spj>DJ0esIt zzWNO+#A`{>E5i(Xk;Z0`sjgNLsQM^ePYfMu`tZTDpWqGSgiZetwnduxeT7P8ynTsi zel~9SC}kpn5&t6m<~Z?*-@e9Xw_7%@1cxGiwOUv!*ZAgV{^YpI;WyoHSsAi`#H6j9 zt$aSe;%xY&tQ7Q@%CCLw|GfH*c7B0V=63;TLHuy07aBFXpK@e@kz6>#YSGcv3{ghz zzVXF3=^Q@()T&z5KP7&Q>i!XZTNu&$kfkNQnO!8-_aDL+?R~C8sjF4t! z6x@c9tB)3F@nK85F<=By?G&Gi4}X@LiXJ2XmM&tvDMDVeZJcH{s6W+y1bgFn`9~ZXTFjEjziZ(}(o3vn z`%X>ZGshK%2W48h%Jnqix>9=bSGbGC-{Va~Hp{r_k-l2)R5e=9GXJFTue#GuTPtHLO_kpoE;{;<|N8ou=yCIP zN<{A~WY5T@7mLhsKlK)EER*b9LF?v{dT-&+=Hpvd_~PVB{13->Hs|DD_AU++MKR^? zVbs#s_)ceV^X6!`7vaB08NBAP@4xarcZzYI{jMLv_MN@||G4r!x9+?3(b^}k&qm0m zIJo%3!Mf<)XVROminu6NX7e>E)#+h2O$}L)eu$)~=3}XaGUgyZ_V8KMnK#)7zjPHp z_Ts=j%wK(OAJ%4maf|Pa51wLAKZDR6(r+-k<@J}An;-pDHxE9y+0Rj)g#6$aUwirP zX!kYxQ0mVy-QN2yL-92;)+QS*i|kvrv|fAPK+-?Jmin%y1ZS6N0LGw(w2!|y(vgZ*y#F}>^b>-1db)Nj=f;xC|Ft8@YI zMIq1nn~#0+?)d1{!hey9e+8a5izk@{Oplez2GHqrSUlSN&@^wrvVyP!giSlmuO%9r zW`jOGD83?gYTjdlCEZT%G_f_YKb`yp!)N?Qcc8y6-5c~LFW-9YpKRX@b^v?Vs?#fW z*DlT`JnOH$|Jl3C_q|fP=kqnu&(d`7^YSrkS5(VraZMu&zIv_2t3qXyto_-1d=_pk z^vbJk!~$p|XLVszAW2V_Pv+Y=r{jaEb~--#@C&o@YkYyT{(x!uak=@SdyXFer}KN5 zFTlMk$hvZOMZ0@2f4q3@#*LTjFKs?eK|fUioJEMtmjUO-<02&yOE|p|V-%X=6Xv@X(oCxjr1jf2;npdQ$tQM<2QW z=azp~pZ|S`@O0`r&8O4l#eLPLy7n@?{`u15<>(>(HP?sj)ax^gp0C0^Q@=iWK*f2c zD)fL#sXs~F-K&MVM;neWi6M8@tERwteOT%%cv{JMqtu2a&-F?ld~arKwAH@y=LKKw z#h-2EA?L&VSjQ(K-_mq$Dl8u&b4}hKRXUGo8jtD{dqj15STlZy(C<7sI)2CQ_~fnE k9@EG3{4s5ok?kb>|H;3ubeVRY^#A|>07*qoM6N<$f~C=$asU7T literal 0 HcmV?d00001 diff --git a/arkoala-arkts/cats/application/entry/src/main/resources/base/profile/backup_config.json b/arkoala-arkts/cats/application/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 0000000000..78f40ae7c4 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/main/resources/base/profile/main_pages.json b/arkoala-arkts/cats/application/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000..1898d94f58 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/arkoala-arkts/cats/application/entry/src/main/resources/en_US/element/string.json b/arkoala-arkts/cats/application/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000..f94595515a --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/main/resources/zh_CN/element/string.json b/arkoala-arkts/cats/application/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000..597ecf95e6 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/mock/mock-config.json5 b/arkoala-arkts/cats/application/entry/src/mock/mock-config.json5 new file mode 100644 index 0000000000..7a73a41bfd --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/mock/mock-config.json5 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/Ability.test.ets b/arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000..85c78f6757 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,35 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/List.test.ets b/arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000..794c7dc4ed --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,5 @@ +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/ohosTest/module.json5 b/arkoala-arkts/cats/application/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000..55725a9299 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/ohosTest/module.json5 @@ -0,0 +1,13 @@ +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/arkoala-arkts/cats/application/entry/src/test/List.test.ets b/arkoala-arkts/cats/application/entry/src/test/List.test.ets new file mode 100644 index 0000000000..bb5b5c3731 --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/test/List.test.ets @@ -0,0 +1,5 @@ +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/entry/src/test/LocalUnit.test.ets b/arkoala-arkts/cats/application/entry/src/test/LocalUnit.test.ets new file mode 100644 index 0000000000..165fc1615e --- /dev/null +++ b/arkoala-arkts/cats/application/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,33 @@ +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/hvigor/hvigor-config.json5 b/arkoala-arkts/cats/application/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000..06b2783670 --- /dev/null +++ b/arkoala-arkts/cats/application/hvigor/hvigor-config.json5 @@ -0,0 +1,22 @@ +{ + "modelVersion": "5.0.0", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/arkoala-arkts/cats/application/hvigorfile.ts b/arkoala-arkts/cats/application/hvigorfile.ts new file mode 100644 index 0000000000..f3cb9f1a87 --- /dev/null +++ b/arkoala-arkts/cats/application/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/arkoala-arkts/cats/application/local.properties b/arkoala-arkts/cats/application/local.properties new file mode 100644 index 0000000000..20f6086995 --- /dev/null +++ b/arkoala-arkts/cats/application/local.properties @@ -0,0 +1,9 @@ +# This file is automatically generated by DevEco Studio. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file should *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# For customization when using a Version Control System, please read the header note. + + diff --git a/arkoala-arkts/cats/application/oh-package-lock.json5 b/arkoala-arkts/cats/application/oh-package-lock.json5 new file mode 100644 index 0000000000..c515a170a7 --- /dev/null +++ b/arkoala-arkts/cats/application/oh-package-lock.json5 @@ -0,0 +1,25 @@ +{ + "meta": { + "stableOrder": true + }, + "lockfileVersion": 3, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "@koalaui/arkoala-arkui@../../har/app/arkoala/build/default/outputs/default/arkoala.har": "@koalaui/arkoala-arkui@../../har/app/arkoala/build/default/outputs/default/arkoala.har", + "@koalaui/user@../user/app/user/build/default/outputs/default/user.har": "@koalaui/user@../user/app/user/build/default/outputs/default/user.har" + }, + "packages": { + "@koalaui/arkoala-arkui@../../har/app/arkoala/build/default/outputs/default/arkoala.har": { + "name": "@koalaui/arkoala-arkui", + "version": "1.0.0", + "resolved": "../../har/app/arkoala/build/default/outputs/default/arkoala.har", + "registryType": "local" + }, + "@koalaui/user@../user/app/user/build/default/outputs/default/user.har": { + "name": "@koalaui/user", + "version": "1.0.0", + "resolved": "../user/app/user/build/default/outputs/default/user.har", + "registryType": "local" + } + } +} \ No newline at end of file diff --git a/arkoala-arkts/cats/application/oh-package.json5 b/arkoala-arkts/cats/application/oh-package.json5 new file mode 100644 index 0000000000..3eb509e8fb --- /dev/null +++ b/arkoala-arkts/cats/application/oh-package.json5 @@ -0,0 +1,10 @@ +{ + "modelVersion": "5.0.0", + "description": "Please describe the basic information.", + "dependencies": { + "@koalaui/arkoala-arkui": "file:../../har/app/arkoala/build/default/outputs/default/arkoala.har", + "@koalaui/user": "file:../user/app/user/build/default/outputs/default/user.har" + }, + "devDependencies": { + } +} diff --git a/arkoala-arkts/cats/package.json b/arkoala-arkts/cats/package.json new file mode 100644 index 0000000000..4d1f23bf0c --- /dev/null +++ b/arkoala-arkts/cats/package.json @@ -0,0 +1,29 @@ +{ + "name": "@koalaui/application", + "version": "1.4.1", + "description": "", + "scripts": { + "clean": "rimraf application/entry/build application/generated application/oh_modules application/.hvigor && npm run clean --prefix user", + + "ets-plugin": "npm run arkoala:plugin --prefix ../..", + + "arkoala:har:arm32": "npm run arkoala:har-arm32 --prefix ../../arkoala-arkts", + "arkoala:har:arm64": "npm run arkoala:har-arm64 --prefix ../../arkoala-arkts", + "arkoala:har:universal": "npm run arkoala:har-universal --prefix ../../arkoala-arkts", + + "user:har:arm32": "npm run har-arm32 --prefix ./user", + "user:har:arm64": "npm run har-arm64 --prefix ./user", + "user:har:universal": "npm run har-universal --prefix ./user", + + "install": "cd application && DEVECO_TOOLS_HOME=../../har/command-line-tools node ../../../arkoala/ohos-sdk/scripts/cli.mjs oh-build --install-ohpm-deps-only", + "build": "cd application && DEVECO_TOOLS_HOME=../../har/command-line-tools node ../../../arkoala/ohos-sdk/scripts/cli.mjs oh-build", + "rebuild": "npm run clean && npm run build", + "sign": "cd application && DEVECO_TOOLS_HOME=../../har/command-line-tools node ../../../arkoala/ohos-sdk/scripts/cli.mjs oh-sign", + "exec": "cd application && DEVECO_TOOLS_HOME=../../har/command-line-tools node ../../../arkoala/ohos-sdk/scripts/cli.mjs oh-exec -i -r", + "launch": "npm run install && npm run build && npm run sign && npm run exec", + "relaunch": "npm run clean && npm run launch", + + "all:arm32": "npm run clean && npm run ets-plugin && npm run arkoala:har:arm32 && npm run user:har:arm32 && npm run launch", + "all:arm64": "npm run clean && npm run ets-plugin && npm run arkoala:har:arm64 && npm run user:har:arm64 && npm run launch" + } +} diff --git a/arkoala-arkts/cats/user/app/AppScope/app.json5 b/arkoala-arkts/cats/user/app/AppScope/app.json5 new file mode 100644 index 0000000000..2b158f05af --- /dev/null +++ b/arkoala-arkts/cats/user/app/AppScope/app.json5 @@ -0,0 +1,10 @@ +{ + "app": { + "bundleName": "com.example.cats", + "vendor": "cats", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/arkoala-arkts/cats/user/app/build-profile.json5 b/arkoala-arkts/cats/user/app/build-profile.json5 new file mode 100644 index 0000000000..2ee625f46f --- /dev/null +++ b/arkoala-arkts/cats/user/app/build-profile.json5 @@ -0,0 +1,28 @@ +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "5.0.0(12)", + "compatibleSdkVersion": "5.0.0(12)", + "runtimeOS": "HarmonyOS", + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "user", + "srcPath": "./user" + } + ] +} \ No newline at end of file diff --git a/arkoala-arkts/cats/user/app/hvigor/hvigor-config.json5 b/arkoala-arkts/cats/user/app/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000..792dd23744 --- /dev/null +++ b/arkoala-arkts/cats/user/app/hvigor/hvigor-config.json5 @@ -0,0 +1,22 @@ +{ + "modelVersion": "5.0.0", + "dependencies": { + }, + "execution": { + // "analyze": "default", /* Define the build analyze mode. Value: [ "default" | "verbose" | false ]. Default: "default" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 4096 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process */ + } +} + diff --git a/arkoala-arkts/cats/user/app/hvigorfile.ts b/arkoala-arkts/cats/user/app/hvigorfile.ts new file mode 100644 index 0000000000..f3cb9f1a87 --- /dev/null +++ b/arkoala-arkts/cats/user/app/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/arkoala-arkts/cats/user/app/oh-package.json5 b/arkoala-arkts/cats/user/app/oh-package.json5 new file mode 100644 index 0000000000..332c838bbb --- /dev/null +++ b/arkoala-arkts/cats/user/app/oh-package.json5 @@ -0,0 +1,13 @@ +{ + "modelVersion": "5.0.0", + "name": "@koalaui/user", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + }, + "devDependencies": { + } +} diff --git a/arkoala-arkts/cats/user/app/user/BuildProfile.ets b/arkoala-arkts/cats/user/app/user/BuildProfile.ets new file mode 100644 index 0000000000..3a501e5dde --- /dev/null +++ b/arkoala-arkts/cats/user/app/user/BuildProfile.ets @@ -0,0 +1,17 @@ +/** + * Use these variables when you tailor your ArkTS code. They must be of the const type. + */ +export const HAR_VERSION = '1.0.0'; +export const BUILD_MODE_NAME = 'debug'; +export const DEBUG = true; +export const TARGET_NAME = 'default'; + +/** + * BuildProfile Class is used only for compatibility purposes. + */ +export default class BuildProfile { + static readonly HAR_VERSION = HAR_VERSION; + static readonly BUILD_MODE_NAME = BUILD_MODE_NAME; + static readonly DEBUG = DEBUG; + static readonly TARGET_NAME = TARGET_NAME; +} \ No newline at end of file diff --git a/arkoala-arkts/cats/user/app/user/build-profile.json5 b/arkoala-arkts/cats/user/app/user/build-profile.json5 new file mode 100644 index 0000000000..d1f2f2cedd --- /dev/null +++ b/arkoala-arkts/cats/user/app/user/build-profile.json5 @@ -0,0 +1,33 @@ +{ + "apiType": "stageMode", + "buildOption": { + "nativeLib": { + "debugSymbol": { + "strip": false + } + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": true, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + } + ] +} diff --git a/arkoala-arkts/cats/user/app/user/hvigorfile.ts b/arkoala-arkts/cats/user/app/user/hvigorfile.ts new file mode 100644 index 0000000000..4218707148 --- /dev/null +++ b/arkoala-arkts/cats/user/app/user/hvigorfile.ts @@ -0,0 +1,6 @@ +import { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/arkoala-arkts/cats/user/app/user/obfuscation-rules.txt b/arkoala-arkts/cats/user/app/user/obfuscation-rules.txt new file mode 100644 index 0000000000..985b2aeb76 --- /dev/null +++ b/arkoala-arkts/cats/user/app/user/obfuscation-rules.txt @@ -0,0 +1,18 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://gitee.com/openharmony/arkcompiler_ets_frontend/blob/master/arkguard/README.md + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope \ No newline at end of file diff --git a/arkoala-arkts/cats/user/app/user/oh-package.json5 b/arkoala-arkts/cats/user/app/user/oh-package.json5 new file mode 100644 index 0000000000..cda726c0e2 --- /dev/null +++ b/arkoala-arkts/cats/user/app/user/oh-package.json5 @@ -0,0 +1,9 @@ +{ + "name": "@koalaui/user", + "version": "1.0.0", + "description": "Please describe the basic information.", + "types": "", + "author": "", + "license": "Apache-2.0", + "dependencies": {} +} diff --git a/arkoala-arkts/cats/user/app/user/src/main/module.json5 b/arkoala-arkts/cats/user/app/user/src/main/module.json5 new file mode 100644 index 0000000000..6b0ad6685a --- /dev/null +++ b/arkoala-arkts/cats/user/app/user/src/main/module.json5 @@ -0,0 +1,11 @@ +{ + "module": { + "name": "user", + "type": "har", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ] + } +} diff --git a/arkoala-arkts/cats/user/arktsconfig-run-unmemoized.json b/arkoala-arkts/cats/user/arktsconfig-run-unmemoized.json new file mode 100644 index 0000000000..9d80f9bd0d --- /dev/null +++ b/arkoala-arkts/cats/user/arktsconfig-run-unmemoized.json @@ -0,0 +1,46 @@ +{ + "compilerOptions": { + "package": "@koalaui/user", + "outDir": "build/abc", + "baseUrl": ".", + "paths": { + "app": [ + "./build/unmemoized/build/generated" + ], + "@koalaui/compat": [ + "../../../incremental/compat/src/arkts" + ], + "@koalaui/common": [ + "../../../incremental/common/src" + ], + "@koalaui/runtime": [ + "../../../incremental/runtime/build/unmemoized/src" + ], + "@koalaui/arkts-arkui": [ + "../../arkui/build/unmemoized/src" + ], + "@koalaui/interop": [ + "../../../interop/src/arkts" + ], + "#components": [ + "../../arkui/build/unmemoized/src/generated/arkts" + ], + "@koalaui/arkui-common": [ + "../../../arkoala/arkui-common/build/unmemoized/src", + "../../../arkoala/arkui-common/build/unmemoized/src/arkts" + ], + "#arkcompat": [ + "../../../arkoala/arkui-common/build/unmemoized/src/arkts" + ], + "#arkstate": [ + "../../../arkoala/arkui-common/build/unmemoized/src" + ], + "@koalaui/arkts-arkui/ohos.router": [ + "../../arkui/build/unmemoized/src/ohos.router.ts" + ] + } + }, + "include": [ + "./build/unmemoized/**/*.ts" + ] +} diff --git a/arkoala-arkts/cats/user/package.json b/arkoala-arkts/cats/user/package.json new file mode 100644 index 0000000000..c861714d60 --- /dev/null +++ b/arkoala-arkts/cats/user/package.json @@ -0,0 +1,29 @@ +{ + "name": "@koalaui/arkts-framework", + "version": "1.4.1", + "description": "", + "scripts": { + "clean": "rimraf build generated unmemoized js_output abc lib app/user/build app/user/libs app/.hvigor .ninja_log", + "distclean": "rimraf command-line-tools", + "compile:plugin": "cd ../../../arkoala/ets-plugin && npm run compile", + "compile:ets": "npm run compile:plugin && cd src/ets && ets-tsc -p ./etsconfig.json", + "unmemoize": "npm run compile:ets && ets-tsc -p tsconfig-unmemoize.json", + "unmemoize:runtime": "npm run unmemoize --prefix ../../../incremental/runtime", + "unmemoize:arkui-no-common": "npm run unmemoize --prefix ../../arkui", + "unmemoize:arkui-common": "npm run unmemoize --prefix ../../../arkoala/arkui-common", + "unmemoize:all": "npm run unmemoize:runtime && npm run unmemoize:arkui-no-common && npm run unmemoize:arkui-common && npm run unmemoize", + "build:user": "npm run unmemoize:all && npm run build:user:inc", + "build:user:inc": "fast-arktsc --input-files ./arktsconfig-run-unmemoized.json --output-dir ./build --compiler ../../../incremental/tools/panda/arkts/arktsc --link-name user && ninja -f build/build.ninja", + + "pack": "npm run cli-tools:check && cd app && DEVECO_SDK_HOME=../../../../arkoala/ohos-sdk/ohos-sdk ../../../command-line-tools/hvigor/bin/hvigorw --no-daemon --mode module -p product=default -p module=user@default assembleHar", + "har-arm32": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm32 && npm run pack", + "har-arm64": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm64 && npm run pack", + + "cli-tools:chmod:bz": "node ../../../arkoala/ohos-sdk/scripts/openlab-cli.mjs chmod -p ../../command-line-tools/ohpm/bin -b 755 && node ../../../arkoala/ohos-sdk/scripts/openlab-cli.mjs chmod -p ../../command-line-tools/hvigor/bin -b 755", + "cli-tools:chmod:yz": "node ../../../arkoala/ohos-sdk/scripts/gitlab-cli.mjs chmod -p ../../command-line-tools/ohpm/bin -b 755 && node ../../../arkoala/ohos-sdk/scripts/gitlab-cli.mjs chmod -p ../../command-line-tools/hvigor/bin -b 755", + "cli-tools:download:bz": "node ../../../arkoala/ohos-sdk/scripts/openlab-cli.mjs download -p command-line-tools -v 5.0.3502 -f command-line-tools.5.0.3502.zip -d ../../command-line-tools && npm run cli-tools:chmod:bz", + "cli-tools:download:yz": "node ../../../arkoala/ohos-sdk/scripts/gitlab-cli.mjs download -p deveco-tools -v 5.0.1300 -f deveco-tools.5.0.1300.zip -d ../../command-line-tools && npm run cli-tools:chmod:yz", + "cli-tools:download": "test \"$KOALA_BZ\" = \"0\" && npm run cli-tools:download:yz || npm run cli-tools:download:bz", + "cli-tools:check": "test -d ../../command-line-tools || npm run cli-tools:download" + } +} diff --git a/arkoala-arkts/cats/user/scripts/build-har.mjs b/arkoala-arkts/cats/user/scripts/build-har.mjs new file mode 100644 index 0000000000..4849561417 --- /dev/null +++ b/arkoala-arkts/cats/user/scripts/build-har.mjs @@ -0,0 +1,49 @@ +import { execSync } from "child_process" +import { dirname } from "path" +import { fileURLToPath } from "url" + +import fs from "fs" +import path from "path" +import process from "process" +import minimist from "minimist" + +var args = minimist(process.argv.slice(2)) +const arch = args["arch"] +const name = args["name"] + +const _dirname = dirname(fileURLToPath(import.meta.url)) + +const CWD = process.cwd() +const HAR_PATH = path.join(CWD, `app/${name}`) + +function execCmdSync(cmd, options) { + return execSync(cmd, options).toString().trim().replace("\n", " ") +} + +function rollupLaunch() { + console.log(`> Run rollup`) + execCmdSync("npx rollup -c") +} + +function copyFilesToHar(from, to) { + if (!fs.existsSync(from)) { + throw new Error(`file ${from} does not exist`) + } + + console.log(`> Copy from: ${from} to ${to}`) + fs.cpSync(from, to, { recursive: true, force: true }) +} + + +function main(targetLibDir, name) { + copyFilesToHar(path.join(_dirname, `../build/${name}.abc`), path.join(HAR_PATH, `libs/${targetLibDir}/${name}.abc.so`)) +} + +if (arch == "arm32") { + main("armeabi-v7a", name) +} else if (arch == "arm64") { + main("arm64-v8a", name) +} else { + console.log("Unsupported architecture: ", arch) + exit(1) +} diff --git a/arkoala-arkts/cats/user/src/Page.ts b/arkoala-arkts/cats/user/src/Page.ts new file mode 100644 index 0000000000..b3cc192790 --- /dev/null +++ b/arkoala-arkts/cats/user/src/Page.ts @@ -0,0 +1,17 @@ +import { Index } from "app/Index" +import { UserView, UserViewBuilder } from "@koalaui/arkts-arkui" + +export class ComExampleCats extends UserView { + private params: String + constructor(params: String) { + super() + this.params = params + } + getBuilder(): UserViewBuilder { + /** @memo */ + let wrapper = () => { + Index() + } + return wrapper + } +} diff --git a/arkoala-arkts/cats/user/src/ets/Index.ets b/arkoala-arkts/cats/user/src/ets/Index.ets new file mode 100644 index 0000000000..8001ddb38b --- /dev/null +++ b/arkoala-arkts/cats/user/src/ets/Index.ets @@ -0,0 +1,107 @@ +import router from '@ohos.router' + +type T = [ ResourceColor, number ] + +@Entry +@Component +struct Index { + build() { + Column() { + Question({ + question: "Help!", + answer: "Don't panic!", + color: 0xf13428 + }) + Question({ + question: "I'm tired...", + answer: "Have some rest!", + color: 0x7bf128 + }) + Question({ + question: "Support me!", + answer: "We are proud of you!", + color: 0x28a6f1 + }) + // Button("Click me") + // .onClick(() => { + // console.log("On click") + // }) + // // .onHover((isHover) => this.isActive = isHover ?? false) + // // .radialGradient({ center: ["50%", "50%"], radius: "20%", colors: [[this.color, 0.0], ['#909090', 0.25], [this.color, 0.5]], repeating: true }) + // .fontColor(Color.Black) + // .fontWeight(FontWeight.Bold) + // .fontSize(30) + // .width(250) + // .height(250) + } + .width('100%') + .height('100%') + .backgroundColor(0xcedada) + .justifyContent(FlexAlign.SpaceEvenly) + } + + pageTransition() { + PageTransitionEnter({ duration: 1000, curve : Curve.EaseIn }) + .opacity(1) + .slide(SlideEffect.Left) + PageTransitionExit({ duration: 1000, curve : Curve.EaseOut }) + .slide(SlideEffect.Left) + // .scale({x: 0.5, y: 0.5} as ScaleOptions) + .opacity(0) + // .onEnter((type: RouteType, progress: number) => { + // console.log("Progress", progress) + // }) + } +} + +@Component +struct Question { + @Prop question: string + @Prop color: number + @Prop answer: string + @State isActive: boolean = false + + build() { + let radial:T[] = [[this.color, 0.0], ['#909090', 0.25], [this.color, 0.5]] + + Button(this.question) + .onClick((event: ClickEvent) => { + router.pushUrl({ + url: "SomeCat", + params: new RouterParams(this.answer) + }) + }) + .onHover((isHover:boolean, event: HoverEvent) => { + this.isActive = isHover + }) + .radialGradient({ center: ["50%", "50%"], + radius: "25%", + colors: Array.from(radial), + repeating: true + } as Type_CommonMethod_radialGradient_value) + .fontColor(Color.Black) + .fontWeight(this.isActive ? FontWeight.Bold : FontWeight.Normal) + .fontSize(this.isActive ? 30 : 24) + .width(this.isActive ? 250 : 210) + .height(this.isActive ? 250 : 210) + // .animation({ + // duration: 2000, + // curve: Curve.EaseOut, + // playMode: PlayMode.Normal + // }) + } +} + +export class RouterParams { + readonly message: string + + constructor(message: string) { + this.message = message + } +} + +export function getRouterParams(defaultMessage: string): RouterParams { + const params = router.getParams() + return params ? params as RouterParams : new RouterParams(defaultMessage) +} + diff --git a/arkoala-arkts/cats/user/src/ets/SomeCat.ets b/arkoala-arkts/cats/user/src/ets/SomeCat.ets new file mode 100644 index 0000000000..daeb3878fe --- /dev/null +++ b/arkoala-arkts/cats/user/src/ets/SomeCat.ets @@ -0,0 +1,88 @@ +import router from '@ohos.router' +import { getRouterParams } from './Index' + +// function catUrl(counter: number): string { +// return `https://cataas.com/cat?counter=${counter}` +// // return `http://localhost:8080/cats?counter=${counter}` +// } + +@Entry +@Component +struct SomeCat { + @State message: string = getRouterParams("Meow").message + // @State loading: boolean = false + @State error: string = "" + + counter:number = 0 + + aboutToAppear() { + this.counter = Math.random() + // this.loading = true + this.error = "" + } + + build() { + Stack() { + // if (this.loading) { + // LoadingProgress() + // .color(Color.Blue) + // .width('20%') + // .height('20%') + // .align(Alignment.Center) + // } + if (this.error. length > 0) { + Text("Error: " + this.error) + .fontColor('#ff0000') + .fontSize(30) + } + // Image(catUrl(this.counter)) + Image("/resources/koala.png") + // .onFinish(() => { + // this.loading = false + // }) + .objectFit(ImageFit.Cover) + .onError((e: ImageError) => { + // this.loading = false + this.error = this.error.length > 0 ? this.error : (e?.message ?? "Unknown") + console.log("Image onError", e?.message) + }) + .onClick((event: ClickEvent) => { + console.log("%%%%%%% Cat click back %%%%%%%%") + router.back() + }) + .height('100%') + .width('100%') + Text(this.message) + .fontColor(Color.White) + .fontSize(30) + .fontWeight(FontWeight.Bold) + .offset({y: 300} as Position) + .borderWidth(3) + .borderColor('#404040') + .backgroundColor('#202020') + .padding(7) + .borderRadius(5) + } + .width('100%') + .height('100%') + .backgroundColor(0xcedada) + .alignContent(Alignment.Center) + } + + pageTransition() { + PageTransitionEnter({ duration: 1000, curve : Curve.EaseIn }) + .opacity(1) + .slide(SlideEffect.Right) + .onEnter((type: RouteType, progress: number) => { + console.log("Cat on enter: ", progress) + }) + + PageTransitionExit({ duration: 1000, curve : Curve.EaseOut }) + .slide(SlideEffect.Right) + // .scale({x: 0.5, y: 0.5} as ScaleOptions) + .opacity(0) + .onExit((type: RouteType, progress: number) => { + console.log("Cat on exit: ", progress) + }) + } +} \ No newline at end of file diff --git a/arkoala-arkts/cats/user/src/ets/etsconfig.json b/arkoala-arkts/cats/user/src/ets/etsconfig.json new file mode 100644 index 0000000000..1c10b08df0 --- /dev/null +++ b/arkoala-arkts/cats/user/src/ets/etsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "../../../../arkui/config/etsconfig-base.json", + "include": [ + "./**/*.ets" + ], + "compilerOptions": { + "types": [], + "baseUrl": ".", + "rootDirs": [ + "." + ], + "outDir": "../../build/ets-junk", + "plugins": [ + { + "transform": "@koalaui/ets-plugin/build/lib/src/ArkExpander.js", + "destination": "../../build/generated", + "arkui": "@koalaui/arkts-arkui" + } + ], + "paths": { + "@ohos.*": [ + "../../../../../arkoala/arkui-common/interface_sdk-js/api/@ohos.*" + ], + "@system.*": [ + "../../../../../arkoala/arkui-common/interface_sdk-js/api/@system.*" + ] + } + } +} diff --git a/arkoala-arkts/cats/user/tsconfig-unmemoize.json b/arkoala-arkts/cats/user/tsconfig-unmemoize.json new file mode 100644 index 0000000000..e214e4c24d --- /dev/null +++ b/arkoala-arkts/cats/user/tsconfig-unmemoize.json @@ -0,0 +1,55 @@ +{ + "extends": "@koalaui/build-common/tsconfig.json", + "compilerOptions": { + "types": [], + "plugins": [ + { + "transform": "@koalaui/compiler-plugin/build/lib/src/koala-transformer.js", + "trace": false, + "only_unmemoize": true, + "unmemoizeDir": "./build/unmemoized" + } + ], + "outDir": "./build/junk", + "baseUrl": ".", + "paths": { + "@koalaui/arkui-common": [ + "../../../arkoala/arkui-common/src/arkts" + ], + "@koalaui/runtime": [ + "../../../incremental/runtime" + ], + "#arkcompat": [ + "../../../arkoala/arkui-common/src/arkts" + ], + "@koalaui/arkts-arkui": [ + "../../arkui/src" + ], + "@koalaui/arkts-arkui/ohos.router": [ + "../../arkui/src/ohos.router.ts" + ], + "app/*": [ + "./build/generated/*" + ] + } + }, + "files": [ + "../../../incremental/tools/panda/arkts/std-lib/global.d.ts" + ], + "include": [ + "./build/generated", + "./src/**/*.ts" + ], + "exclude": [ + "../../arkui/src/generated/arkts", + "../../arkui/src/generated/common.ts", + "../../arkui/src/generated/test_utils.ts", + "../../arkui/src/generated/main.ts" + ], + "references": [ + { "path": "../../../arkoala/arkui-common" }, + { "path": "../../../arkoala/arkui-common/tsconfig-unmemoize.json" }, + { "path": "../../../incremental/runtime" }, + { "path": "../../arkui/tsconfig-unmemoize.json" } + ] +} diff --git a/arkoala-arkts/navigation/application/AppScope/resources/base/element/string.json b/arkoala-arkts/navigation/application/AppScope/resources/base/element/string.json index ea81d75010..a21f8ded81 100644 --- a/arkoala-arkts/navigation/application/AppScope/resources/base/element/string.json +++ b/arkoala-arkts/navigation/application/AppScope/resources/base/element/string.json @@ -2,7 +2,7 @@ "string": [ { "name": "app_name", - "value": "ShoppingApplication" + "value": "NavigationApplication" } ] } diff --git a/arkoala-arkts/navigation/application/oh-package-lock.json5 b/arkoala-arkts/navigation/application/oh-package-lock.json5 index 28784df1cd..c515a170a7 100644 --- a/arkoala-arkts/navigation/application/oh-package-lock.json5 +++ b/arkoala-arkts/navigation/application/oh-package-lock.json5 @@ -6,7 +6,7 @@ "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", "specifiers": { "@koalaui/arkoala-arkui@../../har/app/arkoala/build/default/outputs/default/arkoala.har": "@koalaui/arkoala-arkui@../../har/app/arkoala/build/default/outputs/default/arkoala.har", - "@koalaui/shopping@../../shopping/app/shopping/build/default/outputs/default/shopping.har": "@koalaui/shopping@../../shopping/app/shopping/build/default/outputs/default/shopping.har" + "@koalaui/user@../user/app/user/build/default/outputs/default/user.har": "@koalaui/user@../user/app/user/build/default/outputs/default/user.har" }, "packages": { "@koalaui/arkoala-arkui@../../har/app/arkoala/build/default/outputs/default/arkoala.har": { @@ -15,10 +15,10 @@ "resolved": "../../har/app/arkoala/build/default/outputs/default/arkoala.har", "registryType": "local" }, - "@koalaui/shopping@../../shopping/app/shopping/build/default/outputs/default/shopping.har": { - "name": "@koalaui/shopping", + "@koalaui/user@../user/app/user/build/default/outputs/default/user.har": { + "name": "@koalaui/user", "version": "1.0.0", - "resolved": "../../shopping/app/shopping/build/default/outputs/default/shopping.har", + "resolved": "../user/app/user/build/default/outputs/default/user.har", "registryType": "local" } } diff --git a/arkoala-arkts/navigation/package.json b/arkoala-arkts/navigation/package.json index 2f79c0ee44..fbdb019987 100644 --- a/arkoala-arkts/navigation/package.json +++ b/arkoala-arkts/navigation/package.json @@ -7,7 +7,7 @@ "clean:user": "npm run clean --prefix ./user", "clean:all": "npm run clean && npm run clean:user", - "ets-plugin": "npm run arkoala:plugin --prefix ../../..", + "ets-plugin": "npm run arkoala:plugin --prefix ../..", "arkoala:har:arm32": "npm run arkoala:har-arm32 --prefix ../../arkoala-arkts", "arkoala:har:arm64": "npm run arkoala:har-arm64 --prefix ../../arkoala-arkts", diff --git a/arkoala/arkui-common/src/typescript/ArkPageTransition.ts b/arkoala/arkui-common/src/typescript/ArkPageTransition.ts deleted file mode 100644 index 785a42b153..0000000000 --- a/arkoala/arkui-common/src/typescript/ArkPageTransition.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2022-2023 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ArkRouteType } from "./ArkRouteType" - -export interface ArkPageTransitionParams { - kind: ArkRouteType - duration: number - curve: Curve | string - delay: number -} - -export class ArkPageTransitionData { - params: Partial - _onEnter?: (type: ArkRouteType, progress: number) => void - _onExit?: (type: ArkRouteType, progress: number) => void - _slide?: SlideEffect - _translate?: { x?: string | number | undefined; y?: string | number | undefined; z?: string | number | undefined; } - _scale?: { x?: number | undefined; y?: number | undefined; z?: number | undefined; centerX?: string | number | undefined; centerY?: string | number | undefined; } - _opacity?: number - - constructor(params: Partial) { - this.params = params - } - onEnter(event: (type: ArkRouteType, progress: number) => void): this { - this._onEnter = event - return this - } - onExit(event: (type: ArkRouteType, progress: number) => void): this { - this._onExit = event - return this - } - slide(value: SlideEffect): this { - this._slide = value - return this - } - translate(value: { x?: string | number | undefined; y?: string | number | undefined; z?: string | number | undefined; }): this { - this._translate = value - return this - } - scale(value: { x?: number | undefined; y?: number | undefined; z?: number | undefined; centerX?: string | number | undefined; centerY?: string | number | undefined; }): this { - this._scale = value - return this - } - opacity(value: number): this { - this._opacity = value - return this - } -} - -export class ArkPageTransitionEnterComponent extends ArkPageTransitionData /* implements PageTransitionEnterInterface */ { - constructor(params: Partial) { - super(params) - } -} - -export class ArkPageTransitionExitComponent extends ArkPageTransitionData /* implements PageTransitionExitInterface */ { - constructor(params: Partial) { - super(params) - } -} diff --git a/arkoala/arkui-common/src/typescript/ArkRouteType.ts b/arkoala/arkui-common/src/typescript/ArkRouteType.ts deleted file mode 100644 index cfe20ce7b1..0000000000 --- a/arkoala/arkui-common/src/typescript/ArkRouteType.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum ArkRouteType { - NONE = 0, - None = 0, - PUSH = 1, - Push = 1, - POP = 2, - Pop = 2, -} diff --git a/arkoala/arkui-common/src/typescript/Router.ts b/arkoala/arkui-common/src/typescript/Router.ts index 40089158a9..1a5dfca77c 100644 --- a/arkoala/arkui-common/src/typescript/Router.ts +++ b/arkoala/arkui-common/src/typescript/Router.ts @@ -14,7 +14,7 @@ */ -import { int32, observableProxyArray } from "@koalaui/common" +import { int32 } from "@koalaui/common" import { MutableState, RunEffect, @@ -23,8 +23,9 @@ import { mutableState, remember, RepeatByArray, + arrayState, + scheduleCallback, } from "@koalaui/runtime" -import { ArkRouteType } from "./ArkRouteType" export enum RouterTransitionVisibility { Hidden, @@ -33,14 +34,23 @@ export enum RouterTransitionVisibility { Hiding, } +enum RouteType { + NONE, + None = NONE, + PUSH = 1, + Push = PUSH, + POP = 2, + Pop = POP, +} + export type MemoFunction = /** @memo */ () => void export interface RouterTransitionState { - readonly pageId: int32 readonly visibility: RouterTransitionVisibility - readonly route?: ArkRouteType + readonly pageId: int32 + readonly route?: RouteType } class VisiblePage { @@ -53,14 +63,14 @@ class VisiblePage { page: MemoFunction, version: number, visibility: RouterTransitionVisibility, - route?: ArkRouteType + route?: RouteType ) { this.page = page this.version = version this.transitionState = mutableState({ pageId: version, visibility, route }) } - setTransitionState(visibility: RouterTransitionVisibility, route?: ArkRouteType) { + setTransitionState(visibility: RouterTransitionVisibility, route?: RouteType) { this.transitionState.value = { pageId: this.version, visibility, route } } @@ -70,7 +80,7 @@ class VisiblePage { } class RouterState { - readonly visiblePages = observableProxyArray() + readonly visiblePages = arrayState() currentActivePage = mutableState(0) constructor( page: MemoFunction, @@ -120,6 +130,8 @@ export class PageInfo { constructor(public depth: number, public page: string) { } } +export type PageTransition = () => void + /** * Interface providing page routing functionality. */ @@ -196,7 +208,8 @@ export interface Router { */ pageInfo: PageInfo - onPageTransitionEnd(pageId: int32): void + onPageTransitionEnd(pageId: int32, targetVisibility: RouterTransitionVisibility): void + schedulePageTransition(pageId: int32, transition: PageTransition): void } const CURRENT_ROUTER = "ohos.arkoala.router" @@ -235,7 +248,7 @@ class RouterImpl implements Router { if (push) { this.stack.push(new RouterStackEntry(this.state.url, this.state.page, this.state.params)) } - this.activate(entry, push ? ArkRouteType.PUSH : ArkRouteType.NONE, params, resolve) + this.activate(entry, push ? RouteType.Push : RouteType.None, params, resolve) } else { if (this.resolver) { return this @@ -244,7 +257,7 @@ class RouterImpl implements Router { if (push) { this.stack.push(new RouterStackEntry(this.state.url, this.state.page, this.state.params)) } - this.activate(new RouterRegistryEntry(url, page), push ? ArkRouteType.PUSH : ArkRouteType.NONE, params, resolve) + this.activate(new RouterRegistryEntry(url, page), push ? RouteType.Push : RouteType.None, params, resolve) }) .catch(error => reject(error)) } @@ -257,12 +270,12 @@ class RouterImpl implements Router { showingPage: number = -1 hidingPage: number = -1 - private activate(entry: RouterRegistryEntry, route: ArkRouteType, params: Map | undefined, resolve: () => void) { + private activate(entry: RouterRegistryEntry, route: RouteType, params: Map | undefined, resolve: () => void) { const state = this.state state.version.value++ - console.log("activating", ArkRouteType[route], entry.url, "version", state.version.value) + console.log("activating", RouteType[route], entry.url, "version", state.version.value) let previousVisiblePageIndex = this.findIndexByVersion(state.currentActivePage.value) - let previousVisiblePage = state.visiblePages[previousVisiblePageIndex] + let previousVisiblePage = state.visiblePages.value[previousVisiblePageIndex] if (previousVisiblePage) previousVisiblePage.setTransitionState(RouterTransitionVisibility.Hiding, route) state.page = entry.page state.url = entry.url @@ -270,26 +283,26 @@ class RouterImpl implements Router { state.resolve = resolve let newVisiblePage: VisiblePage switch (route) { - case ArkRouteType.PUSH: { + case RouteType.Push: { newVisiblePage = new VisiblePage(entry.page, state.version.value, RouterTransitionVisibility.Showing, route) state.visiblePages.splice(previousVisiblePageIndex + 1, 0, newVisiblePage) break } - case ArkRouteType.POP: { + case RouteType.Pop: { const index = this.stack.length // TODO: store uid in registry to find a page - newVisiblePage = state.visiblePages[index] + newVisiblePage = state.visiblePages.value[index] newVisiblePage.setTransitionState(RouterTransitionVisibility.Showing, route) // remove all hidden pages removed from the stack for (let i = state.visiblePages.length - 1; i > index; i--) { - const visibility = state.visiblePages[i].transition.visibility - if (visibility == RouterTransitionVisibility.Hidden) state.visiblePages.splice(i) + const visibility = state.visiblePages.value[i].transition.visibility + if (visibility == RouterTransitionVisibility.Hidden) state.visiblePages.splice(i, undefined) } break } - case ArkRouteType.NONE: { + case RouteType.None: { // TODO: can/shall we animate replace? newVisiblePage = new VisiblePage(entry.page, state.version.value, RouterTransitionVisibility.Showing, route) - state.visiblePages[previousVisiblePageIndex] = newVisiblePage + state.visiblePages.set(previousVisiblePageIndex, newVisiblePage) break } default: @@ -304,33 +317,64 @@ class RouterImpl implements Router { const array = this.state.visiblePages const length = array.length for (let i = 0; i < length; i++) { - if (array[i].version == version) return i + if (array.value[i].version == version) return i } return -1 } - onPageTransitionEnd(pageId: int32): void { + private pageTransitionMap = new Map>() + + schedulePageTransition(pageId: int32, transition: PageTransition): void { + let queuedTransitions = this.pageTransitionMap.get(pageId) + if (queuedTransitions === undefined) { + queuedTransitions = [] + this.pageTransitionMap.set(pageId, queuedTransitions) + } + + const length = queuedTransitions.length + queuedTransitions.splice(length, 0, transition) + + if (length == 0) { + scheduleCallback(transition) + } + } + + onPageTransitionEnd(pageId: int32, targetVisibility: RouterTransitionVisibility): void { const index = this.findIndexByVersion(pageId) - if (index < 0) return - const page = this.state.visiblePages[index] - if (page.transition.visibility == RouterTransitionVisibility.Showing) { - if (pageId == this.state.currentActivePage.value) { - console.log("PAGE VISIBLE:", page.transition.pageId) - page.setTransitionState(RouterTransitionVisibility.Visible) - } else { - console.log("ERROR: showing page cannot be shown:", page.transition.route ? ArkRouteType[page.transition.route] : "unknown") - page.setTransitionState(RouterTransitionVisibility.Hidden) + if (index >= 0) { + const page = this.state.visiblePages.value[index] + if (page.transition.visibility == targetVisibility) { + if (page.transition.visibility == RouterTransitionVisibility.Showing) { + if (pageId == this.state.currentActivePage.value) { + page.setTransitionState(RouterTransitionVisibility.Visible) + } else { + console.log("ERROR: showing page cannot be shown:", page.transition.route ? RouteType[page.transition.route] : "unknown") + page.setTransitionState(RouterTransitionVisibility.Hidden) + } + } else if (page.transition.visibility == RouterTransitionVisibility.Hiding) { + if (index < this.stack.length) { + console.log("PAGE HIDDEN:", page.transition.pageId) + page.setTransitionState(RouterTransitionVisibility.Hidden) + } else { + this.state.visiblePages.splice(index, 1) + console.log("PAGE REMOVED:", page.transition.pageId) + } + } else { + console.log("ERROR: no page transition:", pageId, RouterTransitionVisibility[page.transition.visibility], page.transition.route ? RouteType[page.transition.route] : "unknown") + } + } // Otherwise ignore transition because it has been updated during this animation period + } + + let queuedTransitions = this.pageTransitionMap.get(pageId) + if (queuedTransitions && queuedTransitions.length > 0) { + queuedTransitions.splice(0, 1) // Remove current transition + if (queuedTransitions.length == 0) { + this.pageTransitionMap.delete(pageId) } - } else if (page.transition.visibility == RouterTransitionVisibility.Hiding) { - if (index < this.stack.length) { - console.log("PAGE HIDDEN:", page.transition.pageId) - page.setTransitionState(RouterTransitionVisibility.Hidden) - } else { - console.log("PAGE REMOVED:", page.transition.pageId) - this.state.visiblePages.splice(index, 1) + + if (queuedTransitions.length > 0) { + scheduleCallback(queuedTransitions[0]) } - } else { - console.log("ERROR: no page transition:", RouterTransitionVisibility[page.transition.visibility], page.transition.route ? ArkRouteType[page.transition.route] : "unknown") } } @@ -358,7 +402,7 @@ class RouterImpl implements Router { entry = this.stack.length > 0 ? this.stack.pop() : undefined } if (entry) { - this.activate(entry, ArkRouteType.POP, params ?? entry.params, resolve) + this.activate(entry, RouteType.Pop, params ?? entry.params, resolve) } else { reject(`history is empty`) } @@ -393,7 +437,7 @@ export function Routed( /** @memo */ () => { RepeatByArray( - routerState.visiblePages, + routerState.visiblePages.value, (page) => page.version, (page: VisiblePage) => { WithRouterTransitionState(page.transition, () => { diff --git a/arkoala/arkui-common/src/typescript/index.ts b/arkoala/arkui-common/src/typescript/index.ts index b448e82e19..16aa01b6c3 100644 --- a/arkoala/arkui-common/src/typescript/index.ts +++ b/arkoala/arkui-common/src/typescript/index.ts @@ -13,8 +13,6 @@ * limitations under the License. */ -export * from "./ArkPageTransition" -export * from "./ArkRouteType" export * from "./Storage" export * from "./Router" diff --git a/arkoala/arkui/src/ArkStructCommon.ts b/arkoala/arkui/src/ArkStructCommon.ts index 022ca9a66d..b4d55c37ef 100644 --- a/arkoala/arkui/src/ArkStructCommon.ts +++ b/arkoala/arkui/src/ArkStructCommon.ts @@ -17,6 +17,7 @@ import { remember } from "@koalaui/runtime" import { CustomComponentImpl } from "./CustomComponent"; import { ArkComponentRoot } from "./ArkComponentRoot"; import { ArkCommonMethodComponent } from "./generated/ArkCommon"; +import { ArkPageTransitionEnter, ArkPageTransitionExit } from "./handwritten/ArkPageTransition"; /** base class for user's structs */ export abstract class ArkStructBase extends CustomComponentImpl { @@ -73,7 +74,8 @@ export abstract class ArkStructBase extends CustomComponentImpl { ): void /** @memo */ - pageTransition?(): void { - + pageTransition(): void { + ArkPageTransitionEnter(undefined, undefined, { duration: 100 }) + ArkPageTransitionExit(undefined, undefined, { duration: 100 }) } } diff --git a/arkoala/arkui/src/handwritten/ArkPageTransition.ts b/arkoala/arkui/src/handwritten/ArkPageTransition.ts index 7b3adec0c3..94822dd5c2 100644 --- a/arkoala/arkui/src/handwritten/ArkPageTransition.ts +++ b/arkoala/arkui/src/handwritten/ArkPageTransition.ts @@ -13,58 +13,250 @@ * limitations under the License. */ +import { ArkUINativeModule, PeerNode, PeerNodeType } from "@koalaui/arkoala" +import { CurrentRouter, CurrentRouterTransitionState, RouterTransitionVisibility } from "@koalaui/arkui-common" +import { int32 } from "@koalaui/common" +import { remember, contextNode } from "@koalaui/runtime" +import { ArkCommonMethodPeer } from "../generated/peers/ArkCommonPeer" +import { ArkComponentRootPeer } from "../generated/peers/ArkStaticComponentsPeer" +import { TranslateOptions, ScaleOptions } from "../generated/ArkCommonInterfaces" +import { PageTransitionOptions, SlideEffect, RouteType } from "../generated/ArkPageTransitionInterfaces" +import { AnimationExtender } from "../generated/ArkAnimationExtenderMaterialized" -// WARNING! THIS FILE IS AUTO-GENERATED, DO NOT MAKE CHANGES, THEY WILL BE LOST ON NEXT GENERATION! +const NO_SCALE:ScaleOptions = { x: 1.0, y: 1.0, z: 1.0, centerX: "50%", centerY: "50%" } +const ZERO_TRANSLATE:TranslateOptions = { x: 0.0, y: 0.0, z:0.0 } +const KEY_PAGE_TRANSITION_PROPERTY = "pageTransitionProperty" // See frameworks/core/components_ng/pattern/stage/page_pattern.cpp -import { ComponentBase } from "../ComponentBase" +// see rosen_render_context.cpp:SlideTransitionEffect in ace_engine +function slideTransition(ptr: PeerNode, value: SlideEffect) : TranslateOptions { + const width = ArkUINativeModule._GetMeasureWidth(ptr.getPeerPtr()) + const height = ArkUINativeModule._GetMeasureHeight(ptr.getPeerPtr()) + let xOffset = 0 + let yOffset = 0 + switch (value) { + case SlideEffect.Left: + xOffset = -width + break + case SlideEffect.Right: + xOffset = width + break + case SlideEffect.Top: + yOffset = -height + break + case SlideEffect.Bottom: + yOffset = height + break + case SlideEffect.START: + xOffset = -width // TODO: support RTL applications with x = width + break + case SlideEffect.END: + xOffset = width // TODO: support RTL applications with x = -width + break + } -/** @memo:stable */ -export class ArkCommonTransitionComponent extends ComponentBase { - // getPeer(): ArkCommonTransitionPeer { - // return (this.peer as ArkCommonTransitionPeer) - // } - /** @memo */ + return { x: xOffset, y: yOffset, z: 0 } +} + +function progressAnimation(state: RouterTransitionVisibility, style: ArkPageTransitionData): DoubleAnimationParam | undefined { + if (state == RouterTransitionVisibility.Hiding && style._onExit != undefined || + state == RouterTransitionVisibility.Showing && style._onEnter != undefined) + { + return { + propertyName: KEY_PAGE_TRANSITION_PROPERTY, + startValue: 0, + endValue: 1.0, + duration: style.params.duration ?? 0, + delay: style.params.delay ?? 0, + curve: style.params.curve as Curve, + onProgress: (state == RouterTransitionVisibility.Hiding && style._onExit != undefined) ? + progress => style._onExit?.(RouteType.Pop, progress) : + progress => style._onEnter?.(RouteType.Push, progress), + + onFinish: () => {} + } + } else { + return undefined + } +} + +function findContainerNode(node: PeerNode): ArkCommonMethodPeer | undefined { + for (let child = node.firstChild; child; child = child.nextSibling) { + if (child.isKind(PeerNodeType)) return child as ArkCommonMethodPeer + } + return undefined +} + +/** + * @memo + */ +function NotifyPageTransition(pageId: int32, style: ArkPageTransitionData, state: RouterTransitionVisibility) { + const node = findContainerNode(contextNode(PeerNodeType)) + if (node) { + const router = CurrentRouter() + router?.schedulePageTransition(pageId, () => { + // console.log("#### Page transition animation: pageID =", pageId, " duration =", style.params.duration, + // " curve = ", style.params.curve === undefined || (typeof style.params.curve === "string") ? style.params.curve : Curve[style.params.curve], + // " delay = ", style.params.delay, + // " state = ", RouterTransitionVisibility[state], + // " opacity = ", style._opacity, + // " slide = ", style._slide !== undefined ? SlideEffect[style._slide] : "undefined", + // " scale = ", style._scale, + // " translate = ", style._translate) + + if (style._opacity !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + node.opacityAttribute(1.0) + } else if (state == RouterTransitionVisibility.Showing) { + node.opacityAttribute(style._opacity) + } + } + + if (style._slide !== undefined || style._translate !== undefined || style._scale !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + node.scaleAttribute(NO_SCALE) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), ZERO_TRANSLATE) + } else if (state == RouterTransitionVisibility.Showing) { + if (style._scale !== undefined) { + node.scaleAttribute(style._scale) + } + + if (style._slide !== undefined) { + const translate = slideTransition(node, style._slide) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), translate) + } else if (style._translate !== undefined) { + AnimationExtender.AnimationTranslate(node.getPeerPtr(), style._translate) + } + } + } + + AnimationExtender.SetClipRect(node.getPeerPtr(), 0, 0, 10000, 10000) + + AnimationExtender.OpenImplicitAnimation({ + duration: style.params.duration, + curve:style.params.curve, + delay: style.params.delay, + onFinish: () => router?.onPageTransitionEnd(pageId, state) + }) + + if (style._opacity !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + node.opacityAttribute(style._opacity) + } else if (state == RouterTransitionVisibility.Showing) { + node.opacityAttribute(1.0) + } + } + + if (style._slide !== undefined || style._translate !== undefined || style._scale !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + if (style._scale !== undefined) { + node.scaleAttribute(style._scale) + } + + if (style._slide !== undefined) { + const translate = slideTransition(node, style._slide) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), translate) + } else if (style._translate !== undefined) { + AnimationExtender.AnimationTranslate(node.getPeerPtr(), style._translate) + } + } else if (state == RouterTransitionVisibility.Showing) { + node.scaleAttribute(NO_SCALE) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), ZERO_TRANSLATE) + } + } + + AnimationExtender.SetClipRect(node.getPeerPtr(), 0, 0, 10000, 10000) + AnimationExtender.CloseImplicitAnimation() + + const doubleParams = progressAnimation(state, style) + if (doubleParams) { + AnimationExtender.StartDoubleAnimation(node.getPeerPtr(), doubleParams) + } + }) + } +} + +export type ProgressCallback = (type: RouteType, progress: number) => void + +export class ArkPageTransitionData { + params: PageTransitionOptions + _onEnter?: ProgressCallback + _onExit?: ProgressCallback + _slide?: SlideEffect + _translate?: TranslateOptions + _scale?: ScaleOptions + _opacity?: number + + constructor(params: PageTransitionOptions) { + this.params = params + } + onEnter(event: ProgressCallback): this { + this._onEnter = event + return this + } + onExit(event: ProgressCallback): this { + this._onExit = event + return this + } slide(value: SlideEffect): this { - console.log("CommonTransition.slide") - // if (this.checkPriority("slide")) { - // const value_casted = value as (SlideEffect) - // this.getPeer()?.slideAttribute(value_casted) - // return this - // } + this._slide = value return this } - /** @memo */ translate(value: TranslateOptions): this { - // if (this.checkPriority("translate")) { - // const value_casted = value as (TranslateOptions) - // this.getPeer()?.translateAttribute(value_casted) - // return this - // } - console.log("CommonTransition.translate") + this._translate = value return this } - /** @memo */ - scale(value: ScaleOptions): this { - // if (this.checkPriority("scale")) { - // const value_casted = value as (ScaleOptions) - // this.getPeer()?.scaleAttribute(value_casted) - // return this - // } - console.log("CommonTransition.scale") + opacity(value: number): this { + this._opacity = value return this } - /** @memo */ - opacity(value: number): this { - // if (this.checkPriority("opacity")) { - // const value_casted = value as (number) - // this.getPeer()?.opacityAttribute(value_casted) - // return this - // } - console.log("CommonTransition.number") + scale(value: ScaleOptions): this { + this._scale = value return this } - public applyAttributesFinish(): void { - // we calls this function outside of class, so need to make it public - super.applyAttributesFinish() +} + +export class ArkPageTransitionEnterComponent extends ArkPageTransitionData { + constructor(params: PageTransitionOptions) { + super(params) + } +} + +export class ArkPageTransitionExitComponent extends ArkPageTransitionData { + constructor(params: PageTransitionOptions) { + super(params) } } + +/** + * @memo + */ +export function ArkPageTransitionEnter( + /** @memo */ + style: ((attributes: ArkPageTransitionEnterComponent) => void) | undefined, + contentUnused: (() => void) | undefined, + params: PageTransitionOptions +) { + const receiver = remember(() => new ArkPageTransitionEnterComponent(params)) + style?.(receiver) + const state = CurrentRouterTransitionState() + if (state !== undefined && state.visibility == RouterTransitionVisibility.Showing) { + NotifyPageTransition(state.pageId, receiver, RouterTransitionVisibility.Showing) + } +} + +/** + * @memo + */ +export function ArkPageTransitionExit( + /** @memo */ + style: ((attributes: ArkPageTransitionExitComponent) => void) | undefined, + contentUnused: (() => void) | undefined, + params: PageTransitionOptions +) { + const receiver = remember(() => new ArkPageTransitionExitComponent(params)) + style?.(receiver) + const state = CurrentRouterTransitionState() + if (state !== undefined && state.visibility == RouterTransitionVisibility.Hiding) { + NotifyPageTransition(state.pageId, receiver, RouterTransitionVisibility.Hiding) + } +} \ No newline at end of file diff --git a/arkoala/arkui/src/index.ts b/arkoala/arkui/src/index.ts index cf654d2592..7d1a2f060c 100644 --- a/arkoala/arkui/src/index.ts +++ b/arkoala/arkui/src/index.ts @@ -123,15 +123,8 @@ export { _r, _rawfile, __registerResources } from "./resources" export * from "./ArkTransition" export * from "./generated/ArkDataPanel" export * from "./generated/ArkPanel" -export { - ArkPageTransitionEnterComponent, - ArkPageTransitionEnterComponent as PageTransitionEnterAttribute, - ArkPageTransitionExitComponent, - ArkPageTransitionExitComponent as PageTransitionExitAttribute, - // todo: why we need explicit export here? - LocalStorage -} from "@koalaui/arkui-common" export { Observed, observableProxy } from "@koalaui/common" +export { LocalStorage } from "@koalaui/arkui-common" export * from "@koalaui/arkui-common" export * from "./shared/ArkUtils" export * from "./generated/peers/ArkButtonPeer" @@ -154,6 +147,7 @@ export { Attach } from "./ComponentBase" export * from "./generated/ArkNavPathStackMaterialized" export * from "./generated/ArkTabsControllerMaterialized" export * from "./generated/ArkRenderingContextSettingsMaterialized" +export * from "./generated/ArkAnimationExtenderMaterialized" export * from "./generated/ArkAlertDialogInterfaces" export * from "./generated/ArkAlphabetIndexerInterfaces" diff --git a/arkoala/ohos-sdk/scripts/ohos-app/build.mjs b/arkoala/ohos-sdk/scripts/ohos-app/build.mjs index 40e6dac4bc..36cf9c48fa 100644 --- a/arkoala/ohos-sdk/scripts/ohos-app/build.mjs +++ b/arkoala/ohos-sdk/scripts/ohos-app/build.mjs @@ -42,8 +42,6 @@ export async function build(options) { [`"${path.join(LZ_TOOLS(), "ohpm/bin/ohpm")}"`, "install", "--all", - "--registry", - "https://cmc.centralrepo.rnd.huawei.com/artifactory/api/npm/product_npm", "--strict_ssl", "false", ...extraOptions], -- Gitee From b7f795d82a2bebf4f5e43cddc308fbbc1971089d Mon Sep 17 00:00:00 2001 From: Kirill Kirichenko Date: Mon, 3 Mar 2025 12:48:22 +0300 Subject: [PATCH 2/2] Follow node size Signed-off-by: Kirill Kirichenko --- .../src/handwritten/ArkPageTransition.ts | 221 ++++++++++-------- 1 file changed, 124 insertions(+), 97 deletions(-) diff --git a/arkoala/arkui/src/handwritten/ArkPageTransition.ts b/arkoala/arkui/src/handwritten/ArkPageTransition.ts index 94822dd5c2..cc045abac8 100644 --- a/arkoala/arkui/src/handwritten/ArkPageTransition.ts +++ b/arkoala/arkui/src/handwritten/ArkPageTransition.ts @@ -14,7 +14,7 @@ */ import { ArkUINativeModule, PeerNode, PeerNodeType } from "@koalaui/arkoala" -import { CurrentRouter, CurrentRouterTransitionState, RouterTransitionVisibility } from "@koalaui/arkui-common" +import { CurrentRouter, CurrentRouterTransitionState, Router, RouterTransitionVisibility } from "@koalaui/arkui-common" import { int32 } from "@koalaui/common" import { remember, contextNode } from "@koalaui/runtime" import { ArkCommonMethodPeer } from "../generated/peers/ArkCommonPeer" @@ -27,34 +27,47 @@ const NO_SCALE:ScaleOptions = { x: 1.0, y: 1.0, z: 1.0, centerX: "50%", centerY: const ZERO_TRANSLATE:TranslateOptions = { x: 0.0, y: 0.0, z:0.0 } const KEY_PAGE_TRANSITION_PROPERTY = "pageTransitionProperty" // See frameworks/core/components_ng/pattern/stage/page_pattern.cpp +function sizeNotEmpty(size: SizeOptions): boolean { + const w = (size?.width as number) ?? 0 + const h = (size?.height as number) ?? 0 + return w > 0 && h > 0 +} + +function getNodeSize(ptr: PeerNode): SizeOptions { + return { width: ArkUINativeModule._GetMeasureWidth(ptr.getPeerPtr()), + height: ArkUINativeModule._GetMeasureHeight(ptr.getPeerPtr())} +} + // see rosen_render_context.cpp:SlideTransitionEffect in ace_engine -function slideTransition(ptr: PeerNode, value: SlideEffect) : TranslateOptions { - const width = ArkUINativeModule._GetMeasureWidth(ptr.getPeerPtr()) - const height = ArkUINativeModule._GetMeasureHeight(ptr.getPeerPtr()) - let xOffset = 0 - let yOffset = 0 - switch (value) { - case SlideEffect.Left: - xOffset = -width - break - case SlideEffect.Right: - xOffset = width - break - case SlideEffect.Top: - yOffset = -height - break - case SlideEffect.Bottom: - yOffset = height - break - case SlideEffect.START: - xOffset = -width // TODO: support RTL applications with x = width - break - case SlideEffect.END: - xOffset = width // TODO: support RTL applications with x = -width - break - } +function slideTransition(size: SizeOptions, value: SlideEffect) : TranslateOptions { + if (sizeNotEmpty(size)) { + let xOffset = 0 + let yOffset = 0 + switch (value) { + case SlideEffect.Left: + xOffset = -(size.width as number) + break + case SlideEffect.Right: + xOffset = size.width as number + break + case SlideEffect.Top: + yOffset = -(size.height as number) + break + case SlideEffect.Bottom: + yOffset = size.height as number + break + case SlideEffect.START: + xOffset = -(size.width as number) // TODO: support RTL applications with x = width + break + case SlideEffect.END: + xOffset = size.width as number // TODO: support RTL applications with x = -width + break + } - return { x: xOffset, y: yOffset, z: 0 } + return { x: xOffset, y: yOffset, z: 0 } + } else { + throw Error("Size is empty of has undefined components") + } } function progressAnimation(state: RouterTransitionVisibility, style: ArkPageTransitionData): DoubleAnimationParam | undefined { @@ -86,92 +99,106 @@ function findContainerNode(node: PeerNode): ArkCommonMethodPeer | undefined { return undefined } -/** - * @memo - */ -function NotifyPageTransition(pageId: int32, style: ArkPageTransitionData, state: RouterTransitionVisibility) { - const node = findContainerNode(contextNode(PeerNodeType)) - if (node) { - const router = CurrentRouter() - router?.schedulePageTransition(pageId, () => { - // console.log("#### Page transition animation: pageID =", pageId, " duration =", style.params.duration, - // " curve = ", style.params.curve === undefined || (typeof style.params.curve === "string") ? style.params.curve : Curve[style.params.curve], - // " delay = ", style.params.delay, - // " state = ", RouterTransitionVisibility[state], - // " opacity = ", style._opacity, - // " slide = ", style._slide !== undefined ? SlideEffect[style._slide] : "undefined", - // " scale = ", style._scale, - // " translate = ", style._translate) +function launchTransitionForSize(node: ArkCommonMethodPeer, router: Router | undefined, size: SizeOptions, + pageId: int32, style: ArkPageTransitionData, state: RouterTransitionVisibility) { + router?.schedulePageTransition(pageId, () => { + // console.log("#### Page transition animation: pageID =", pageId, " duration =", style.params.duration, + // " curve = ", style.params.curve === undefined || (typeof style.params.curve === "string") ? style.params.curve : Curve[style.params.curve], + // " delay = ", style.params.delay, + // " state = ", RouterTransitionVisibility[state], + // " opacity = ", style._opacity, + // " slide = ", style._slide !== undefined ? SlideEffect[style._slide] : "undefined", + // " scale = ", style._scale, + // " translate = ", style._translate) - if (style._opacity !== undefined) { - if (state == RouterTransitionVisibility.Hiding) { - node.opacityAttribute(1.0) - } else if (state == RouterTransitionVisibility.Showing) { - node.opacityAttribute(style._opacity) - } + if (style._opacity !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + node.opacityAttribute(1.0) + } else if (state == RouterTransitionVisibility.Showing) { + node.opacityAttribute(style._opacity) } + } - if (style._slide !== undefined || style._translate !== undefined || style._scale !== undefined) { - if (state == RouterTransitionVisibility.Hiding) { - node.scaleAttribute(NO_SCALE) - AnimationExtender.AnimationTranslate(node.getPeerPtr(), ZERO_TRANSLATE) - } else if (state == RouterTransitionVisibility.Showing) { - if (style._scale !== undefined) { - node.scaleAttribute(style._scale) - } + if (style._slide !== undefined || style._translate !== undefined || style._scale !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + node.scaleAttribute(NO_SCALE) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), ZERO_TRANSLATE) + } else if (state == RouterTransitionVisibility.Showing) { + if (style._scale !== undefined) { + node.scaleAttribute(style._scale) + } - if (style._slide !== undefined) { - const translate = slideTransition(node, style._slide) - AnimationExtender.AnimationTranslate(node.getPeerPtr(), translate) - } else if (style._translate !== undefined) { - AnimationExtender.AnimationTranslate(node.getPeerPtr(), style._translate) - } + if (style._slide !== undefined) { + const translate = slideTransition(size, style._slide) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), translate) + } else if (style._translate !== undefined) { + AnimationExtender.AnimationTranslate(node.getPeerPtr(), style._translate) } } + } - AnimationExtender.SetClipRect(node.getPeerPtr(), 0, 0, 10000, 10000) + AnimationExtender.SetClipRect(node.getPeerPtr(), 0, 0, 10000, 10000) - AnimationExtender.OpenImplicitAnimation({ - duration: style.params.duration, - curve:style.params.curve, - delay: style.params.delay, - onFinish: () => router?.onPageTransitionEnd(pageId, state) - }) + AnimationExtender.OpenImplicitAnimation({ + duration: style.params.duration, + curve:style.params.curve, + delay: style.params.delay, + onFinish: () => router?.onPageTransitionEnd(pageId, state) + }) - if (style._opacity !== undefined) { - if (state == RouterTransitionVisibility.Hiding) { - node.opacityAttribute(style._opacity) - } else if (state == RouterTransitionVisibility.Showing) { - node.opacityAttribute(1.0) - } + if (style._opacity !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + node.opacityAttribute(style._opacity) + } else if (state == RouterTransitionVisibility.Showing) { + node.opacityAttribute(1.0) } + } - if (style._slide !== undefined || style._translate !== undefined || style._scale !== undefined) { - if (state == RouterTransitionVisibility.Hiding) { - if (style._scale !== undefined) { - node.scaleAttribute(style._scale) - } + if (style._slide !== undefined || style._translate !== undefined || style._scale !== undefined) { + if (state == RouterTransitionVisibility.Hiding) { + if (style._scale !== undefined) { + node.scaleAttribute(style._scale) + } - if (style._slide !== undefined) { - const translate = slideTransition(node, style._slide) - AnimationExtender.AnimationTranslate(node.getPeerPtr(), translate) - } else if (style._translate !== undefined) { - AnimationExtender.AnimationTranslate(node.getPeerPtr(), style._translate) - } - } else if (state == RouterTransitionVisibility.Showing) { - node.scaleAttribute(NO_SCALE) - AnimationExtender.AnimationTranslate(node.getPeerPtr(), ZERO_TRANSLATE) + if (style._slide !== undefined) { + const translate = slideTransition(size, style._slide) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), translate) + } else if (style._translate !== undefined) { + AnimationExtender.AnimationTranslate(node.getPeerPtr(), style._translate) } + } else if (state == RouterTransitionVisibility.Showing) { + node.scaleAttribute(NO_SCALE) + AnimationExtender.AnimationTranslate(node.getPeerPtr(), ZERO_TRANSLATE) } + } - AnimationExtender.SetClipRect(node.getPeerPtr(), 0, 0, 10000, 10000) - AnimationExtender.CloseImplicitAnimation() + AnimationExtender.SetClipRect(node.getPeerPtr(), 0, 0, 10000, 10000) + AnimationExtender.CloseImplicitAnimation() - const doubleParams = progressAnimation(state, style) - if (doubleParams) { - AnimationExtender.StartDoubleAnimation(node.getPeerPtr(), doubleParams) - } - }) + const doubleParams = progressAnimation(state, style) + if (doubleParams) { + AnimationExtender.StartDoubleAnimation(node.getPeerPtr(), doubleParams) + } + }) +} + +/** + * @memo + */ +function NotifyPageTransition(pageId: int32, style: ArkPageTransitionData, state: RouterTransitionVisibility) { + const node = findContainerNode(contextNode(PeerNodeType)) + if (node) { + const size = getNodeSize(node) + const router = CurrentRouter() + if (sizeNotEmpty(size)) { + launchTransitionForSize(node, router, size, pageId, style, state) + } else { + node.onSizeChangeAttribute((oldSize, newSize) => { + if (sizeNotEmpty(newSize) && oldSize.width != newSize.width && oldSize.height != newSize.height) { + launchTransitionForSize(node, router, newSize, pageId, style, state) + } + }) + } } } -- Gitee