Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Renamings #642

Merged
merged 26 commits into from
Jan 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
3228700
Rename android namespace com.bumble.appyx.demos.appyxnavigation.commo…
zsoltk Dec 4, 2023
34ddc5d
Update outdated naming reference
zsoltk Dec 4, 2023
ac7e3b2
Rename references of targetUiState.toMutableState to targetUiState.to…
zsoltk Dec 4, 2023
ef3c125
Update CHANGELOG.md
zsoltk Dec 4, 2023
6debad2
Swap order of TargetUiState, MutableUiState in generics
zsoltk Dec 4, 2023
e73fcbc
Update CHANGELOG.md
zsoltk Dec 4, 2023
37f4bb8
Update CHANGELOG.md
zsoltk Jan 8, 2024
d789e9f
Rename interactions/AppyxComponent -> AppyxInteractionsComponent
zsoltk Jan 8, 2024
037440f
Rename navigation/AppyxComponent -> AppyxNavigationComponent
zsoltk Jan 8, 2024
83f0b78
Update documentation
zsoltk Jan 8, 2024
dc6379c
Update CHANGELOG.md with explicit migration guide
zsoltk Jan 8, 2024
e3a4074
Rename Resolver.resolve(navTarget) to ChildNodeBuilder.buildChildNode…
zsoltk Jan 8, 2024
c287d35
Make ChildNodeBuilder a fun interface
zsoltk Jan 9, 2024
416afd0
Rename InteractionTarget to ChildReference in navigation generics
zsoltk Jan 9, 2024
8db4efe
Rename reference to navTarget
zsoltk Jan 9, 2024
b346eb5
Rename ChildReference to NavTarget
zsoltk Jan 9, 2024
bc90b31
Rename InteractionTarget to NavTarget in demo apps
zsoltk Jan 9, 2024
b45cd2c
Fix migration docs
zsoltk Jan 9, 2024
e6bad09
Rename AppyxNavigationComponent -> AppyxNavigationContainer, AppyxInt…
zsoltk Jan 9, 2024
036bd73
Merged com.bumble.appyx.navigation.integrationpoint into .integration
zsoltk Jan 9, 2024
a5d56b0
Move classes from navigation.navigation to where they fit
zsoltk Jan 9, 2024
33e80aa
Fix compilation issues
zsoltk Jan 9, 2024
a458852
Fix migration guide
zsoltk Jan 11, 2024
9db6506
Fix compilation error
zsoltk Jan 11, 2024
8dfca88
Merge branch '2.x' into renamings
zsoltk Jan 11, 2024
4d6a0c4
Update migration guide
zsoltk Jan 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 16 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,16 @@

## Pending changes

{==

Please refer to [2.0.0-alpha10 – Migration guide](2.0.0-alpha10.md)

==}

### API breaking changes

- [#630](https://github.com/bumble-tech/appyx/pull/630) – Pass initial state into Spotlights visualisations
- [#642](https://github.com/bumble-tech/appyx/pull/642) – Renamings
- [#643](https://github.com/bumble-tech/appyx/pull/643) – Unify AppyxComponent composable between appyx-navigation and appyx-interactions modules
- [#651](https://github.com/bumble-tech/appyx/pull/651) - Keep only one instance of SaveStateMap typealias and moved it to `com.bumble.appyx.utils.multiplatform` package

Expand All @@ -18,8 +25,8 @@

### API breaking changes

- [#618](https://github.com/bumble-tech/appyx/pull/618) – Do not create PermanentAppyxComponent inside ParentNode. Provide it via constructor to ParentNode
- [#612](https://github.com/bumble-tech/appyx/pull/612) – Rename MotionController to Visualisation
- [#618](https://github.com/bumble-tech/appyx/pull/618) – Do not create `PermanentAppyxComponent` inside `ParentNode`. Provide it via constructor to ParentNode
- [#612](https://github.com/bumble-tech/appyx/pull/612) – Rename `MotionController` to `Visualisation`
- [#617](https://github.com/bumble-tech/appyx/pull/617) – Unify inside & outside position alignment

### Changed
Expand All @@ -39,7 +46,7 @@

### Fixed

- [#608](https://github.com/bumble-tech/appyx/pull/608) – Setting default value to NodeCustomisationDirectory in IosNodeHost
- [#608](https://github.com/bumble-tech/appyx/pull/608) – Setting default value to `NodeCustomisationDirectory` in `IosNodeHost`

<div style="text-align: center"><small>4 Oct 2023</small></div>

Expand All @@ -50,7 +57,7 @@
### Added

- [#601](https://github.com/bumble-tech/appyx/pull/601) – iOS support and target apps
- [#599](https://github.com/bumble-tech/appyx/pull/599) Added isContinuous flag to GestureFactory
- [#599](https://github.com/bumble-tech/appyx/pull/599) Added isContinuous flag to `GestureFactory`

<div style="text-align: center"><small>4 Oct 2023</small></div>

Expand Down Expand Up @@ -80,8 +87,8 @@
- [#587](https://github.com/bumble-tech/appyx/pull/587) – Fix `DraggableChildren` and rename it to `AppyxComponent`
- [#588](https://github.com/bumble-tech/appyx/pull/588) – Set bounds on all new motion controllers
- [#589](https://github.com/bumble-tech/appyx/pull/589) – Fix visibility resolution for elements that do not match parent's size
- [#591](https://github.com/bumble-tech/appyx/pull/591) – Flush output cache when onCreate is called in NodeConnector
- [#592](https://github.com/bumble-tech/appyx/pull/592) – Fix Backstack3D Motion Controller
- [#591](https://github.com/bumble-tech/appyx/pull/591) – Flush output cache when `onCreate` is called in `NodeConnector`
- [#592](https://github.com/bumble-tech/appyx/pull/592) – Fix `Backstack3D` `MotionController`

<div style="text-align: center"><small>13 Sep 2023</small></div>

Expand All @@ -101,8 +108,8 @@

### API breaking changes

- [#562](https://github.com/bumble-tech/appyx/issues/562) – Implement custom alignment to remove screen size knowledge when offsetting element in MotionController
- [#562](https://github.com/bumble-tech/appyx/pull/565) – Remove UiContext parameter from MotionProperty and provide BoxScope via composition local
- [#562](https://github.com/bumble-tech/appyx/issues/562) – Implement custom alignment to remove screen size knowledge when offsetting element in `MotionController`
- [#562](https://github.com/bumble-tech/appyx/pull/565) – Remove `UiContext` parameter from `MotionProperty` and provide `BoxScope` via composition local

### Added

Expand All @@ -122,7 +129,7 @@
### Added

- [#539](https://github.com/bumble-tech/appyx/pull/539) – Position alignment
- [#538](https://github.com/bumble-tech/appyx/pull/538) – Availability to observe MotionProperties from children UI
- [#538](https://github.com/bumble-tech/appyx/pull/538) – Availability to observe `MotionProperties` from children UI

### Fixed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import androidx.compose.ui.unit.dp
import com.bumble.appyx.components.experimental.cards.Cards
import com.bumble.appyx.components.experimental.cards.CardsModel
import com.bumble.appyx.components.experimental.cards.ui.CardsVisualisation
import com.bumble.appyx.interactions.core.AppyxComponent
import com.bumble.appyx.interactions.core.AppyxInteractionsContainer
import com.bumble.appyx.interactions.core.gesture.GestureValidator.Companion.permissiveValidator
import com.bumble.appyx.interactions.core.ui.helper.AppyxComponentSetup
import com.bumble.appyx.interactions.theme.appyx_dark
Expand All @@ -38,7 +38,7 @@ fun DatingCards(modifier: Modifier = Modifier) {

AppyxComponentSetup(cards)

AppyxComponent(
AppyxInteractionsContainer(
modifier = modifier
.fillMaxSize()
.background(appyx_dark)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import com.bumble.appyx.utils.multiplatform.AppyxLogger
class CardsVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
defaultAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<InteractionTarget, CardsModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, CardsModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = defaultAnimationSpec,
) {
Expand Down Expand Up @@ -98,7 +98,7 @@ class CardsVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)


class Gestures<InteractionTarget>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import com.bumble.appyx.transitionmodel.BaseVisualisation
@Suppress("MagicNumber")
class ModalVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
) : BaseVisualisation<InteractionTarget, ModalModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, ModalModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext
) {

Expand Down Expand Up @@ -65,7 +65,7 @@ class ModalVisualisation<InteractionTarget : Any>(
override fun mutableUiStateFor(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState = targetUiState.toMutableState(uiContext)
): MutableUiState = targetUiState.toMutableUiState(uiContext)

class Gestures<InteractionTarget : Any>(
transitionBounds: TransitionBounds,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class TargetUiState(
val corner: RoundedCorners.Target,
) {

fun toMutableState(
fun toMutableUiState(
uiContext: UiContext
): MutableUiState =
MutableUiState(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import com.bumble.appyx.components.experimental.promoter.Promoter
import com.bumble.appyx.components.experimental.promoter.PromoterModel
import com.bumble.appyx.components.experimental.promoter.operation.addFirst
import com.bumble.appyx.components.experimental.promoter.ui.PromoterVisualisation
import com.bumble.appyx.interactions.core.AppyxComponent
import com.bumble.appyx.interactions.core.AppyxInteractionsContainer
import com.bumble.appyx.interactions.core.model.transition.Operation.Mode.IMMEDIATE
import com.bumble.appyx.interactions.core.model.transition.Operation.Mode.KEYFRAME
import com.bumble.appyx.interactions.core.ui.helper.AppyxComponentSetup
Expand Down Expand Up @@ -74,7 +74,7 @@ fun PromoterExperiment(modifier: Modifier = Modifier) {
val screenWidthPx = (LocalConfiguration.current.screenWidthDp * density.density).roundToInt()
val screenHeightPx = (LocalConfiguration.current.screenHeightDp * density.density).roundToInt()

AppyxComponent(
AppyxInteractionsContainer(
appyxComponent = promoter,
modifier = Modifier
.weight(0.9f)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import kotlin.math.min
class PromoterVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
uiAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<InteractionTarget, PromoterModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, PromoterModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = uiAnimationSpec,
) {
Expand Down Expand Up @@ -52,7 +52,7 @@ class PromoterVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)

override fun updateBounds(transitionBounds: TransitionBounds) {
super.updateBounds(transitionBounds)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import com.bumble.appyx.transitionmodel.BaseVisualisation
class Puzzle15Visualisation(
uiContext: UiContext,
defaultAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<Tile, Puzzle15Model.State, MutableUiState, TargetUiState>(
) : BaseVisualisation<Tile, Puzzle15Model.State, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = defaultAnimationSpec
) {
Expand Down Expand Up @@ -50,7 +50,7 @@ class Puzzle15Visualisation(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)

class Gestures(
bounds: TransitionBounds,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import com.bumble.appyx.components.internal.testdrive.operation.next
import com.bumble.appyx.components.internal.testdrive.ui.rotation.TestDriveRotationVisualisation
import com.bumble.appyx.components.internal.testdrive.ui.rotation.TestDriveRotationVisualisation.Companion.toTargetUiState
import com.bumble.appyx.components.internal.testdrive.ui.simple.TestDriveSimpleVisualisation
import com.bumble.appyx.interactions.core.AppyxComponent
import com.bumble.appyx.interactions.core.AppyxInteractionsContainer
import com.bumble.appyx.interactions.core.gesture.GestureValidator
import com.bumble.appyx.interactions.core.gesture.GestureValidator.Companion.defaultValidator
import com.bumble.appyx.interactions.core.model.transition.Keyframes
Expand Down Expand Up @@ -134,7 +134,7 @@ fun <InteractionTarget : Any> TestDriveUi(
vertical = 12.dp
)
) {
AppyxComponent(
AppyxInteractionsContainer(
screenWidthPx = screenWidthPx,
screenHeightPx = screenHeightPx,
appyxComponent = testDrive,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import com.bumble.appyx.utils.multiplatform.AppyxLogger
class TestDriveRotationVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
uiAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<InteractionTarget, TestDriveModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, TestDriveModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = uiAnimationSpec,
) {
Expand Down Expand Up @@ -74,6 +74,6 @@ class TestDriveRotationVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)
}

Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import com.bumble.appyx.utils.multiplatform.AppyxLogger
class TestDriveSimpleVisualisation<InteractionTarget : Any>(
uiContext: UiContext,
uiAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<InteractionTarget, TestDriveModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, TestDriveModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = uiAnimationSpec,
) {
Expand Down Expand Up @@ -81,7 +81,7 @@ class TestDriveSimpleVisualisation<InteractionTarget : Any>(
}

override fun mutableUiStateFor(uiContext: UiContext, targetUiState: TargetUiState): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)

class Gestures<InteractionTarget>(
private val transitionBounds: TransitionBounds
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import com.bumble.appyx.transitionmodel.BaseVisualisation
class BackStackFader<InteractionTarget : Any>(
uiContext: UiContext,
defaultAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<InteractionTarget, BackStackModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, BackStackModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = defaultAnimationSpec,
) {
Expand All @@ -32,5 +32,5 @@ class BackStackFader<InteractionTarget : Any>(
}

override fun mutableUiStateFor(uiContext: UiContext, targetUiState: TargetUiState): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import com.bumble.appyx.transitionmodel.BaseVisualisation
class BackStackParallax<InteractionTarget : Any>(
uiContext: UiContext,
defaultAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = defaultAnimationSpec,
) {
Expand Down Expand Up @@ -76,7 +76,7 @@ class BackStackParallax<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)

class Gestures<InteractionTarget : Any>(
private val transitionBounds: TransitionBounds,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import com.bumble.appyx.transitionmodel.BaseVisualisation

class BackStackSlider<InteractionTarget : Any>(
uiContext: UiContext,
) : BaseVisualisation<InteractionTarget, BackStackModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, BackStackModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
) {

Expand Down Expand Up @@ -47,5 +47,5 @@ class BackStackSlider<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import com.bumble.appyx.transitionmodel.BaseVisualisation
class BackStack3D<InteractionTarget : Any>(
uiContext: UiContext,
private val itemsInStack: Int = 3,
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
) {

Expand Down Expand Up @@ -80,7 +80,7 @@ class BackStack3D<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)

class Gestures<InteractionTarget : Any>(
transitionBounds: TransitionBounds,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import com.bumble.appyx.transitionmodel.BaseVisualisation
class SpotlightFader<InteractionTarget : Any>(
uiContext: UiContext,
defaultAnimationSpec: SpringSpec<Float> = DefaultAnimationSpec
) : BaseVisualisation<InteractionTarget, SpotlightModel.State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, SpotlightModel.State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext,
defaultAnimationSpec = defaultAnimationSpec
) {
Expand Down Expand Up @@ -53,6 +53,6 @@ class SpotlightFader<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext)
targetUiState.toMutableUiState(uiContext)
}

Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class TargetUiState(
alpha = base.alpha,
)

fun toMutableState(
fun toMutableUiState(
uiContext: UiContext,
): MutableUiState =
MutableUiState(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class SpotlightSlider<InteractionTarget : Any>(
initialState: State<InteractionTarget>,
@Suppress("UnusedPrivateMember")
private val orientation: Orientation = Orientation.Horizontal, // TODO support RTL
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext
) {
private val scrollX = GenericFloatProperty(
Expand Down Expand Up @@ -84,7 +84,7 @@ class SpotlightSlider<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext, scrollX.renderValueFlow)
targetUiState.toMutableUiState(uiContext, scrollX.renderValueFlow)


class Gestures<InteractionTarget>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class TargetUiState(
*
* TODO support RTL and Orientation.Vertical
*/
fun toMutableState(
fun toMutableUiState(
uiContext: UiContext,
scrollX: StateFlow<Float>
): MutableUiState =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class SpotlightSliderRotation<InteractionTarget : Any>(
initialState: State<InteractionTarget>,
@Suppress("UnusedPrivateMember")
private val orientation: Orientation = Orientation.Horizontal, // TODO support RTL
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, MutableUiState, TargetUiState>(
) : BaseVisualisation<InteractionTarget, State<InteractionTarget>, TargetUiState, MutableUiState>(
uiContext = uiContext
) {
private val scrollX = GenericFloatProperty(
Expand Down Expand Up @@ -78,6 +78,6 @@ class SpotlightSliderRotation<InteractionTarget : Any>(
uiContext: UiContext,
targetUiState: TargetUiState
): MutableUiState =
targetUiState.toMutableState(uiContext, scrollX.renderValueFlow)
targetUiState.toMutableUiState(uiContext, scrollX.renderValueFlow)
}

Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class TargetUiState(
*
* TODO support RTL and Orientation.Vertical
*/
fun toMutableState(
fun toMutableUiState(
uiContext: UiContext,
scrollX: StateFlow<Float>
): MutableUiState {
Expand Down
Loading