Compare commits

...
8 Commits
Author SHA1 Message Date
Bitsy c76f629971 feat(bridge): expose the material3-adaptive version to consumers
material3-adaptive rides its own release train upstream (1.3.0-rc01),
like material3 does, so a consumer had no way to express its version
through the plugin - they would have had to hardcode a number and keep
it in sync with the port by hand.

Adds composeDesktopNative.composeMaterial3Adaptive alongside the existing
compose / composeMaterial3 / composeRuntime accessors, stamped into
bridge-version.properties from the version catalog like the others.

The README consumer snippet now shows the adaptive coordinates, and calls
out that window-core has to be declared DIRECTLY when commonMain touches
WindowSizeClass - substituted modules hide their transitives from the
common metadata classpath.
2026-09-22 16:52:25 +02:00
Bitsy c4564b3a10 feat(demo): make the Adaptive screen fold on a live resize
The first version of this screen proved the vendored adaptive modules
render, but it did not really demonstrate adaptation: it left
rememberListDetailPaneScaffoldNavigator on its default directive, which
is the WINDOW size class, and pinned the scaffold to a fixed 420dp.

The window is the wrong input here. The screen does not get the window -
the demo shell spends 190dp on the sidebar plus 48dp of padding - so
defaulting folds ~240dp too late and leaves two panes side by side in a
region already too cramped for them. The directive is now computed from
the width the screen actually gets (BoxWithConstraints), which is what
any pane-hosting app that is not full-window should do; the pane height
tracks the window height instead of being a constant. The header prints
the window size class and the pane-area size class side by side so the
difference is visible while dragging.

Also adds selection highlighting and a Back button that only appears
while folded, so the single-pane mode is actually navigable.

New `--adaptivetest` probe: drives one window wide -> narrow -> wide with
setSize and asserts the scaffold folds and unfolds. This is what proves
the resize chain end to end - SDL resize, the owner's snapshot-backed
containerSize, recomposition, BoxWithConstraints re-measure, a new
PaneScaffoldDirective on the navigator, a new scaffold value. The
--screen=Adaptive --width=N screenshots could only ever prove the fold
was right for the size the window OPENED at, since each run is a fresh
process. The probe reads a small internal seam on the screen
(gAdaptiveTwoPane); it is documented as a probe hook and is not UI.

Verified on mingwX64: folds at 800dp and stays two-pane at 1100/1400dp,
--adaptivetest passes repeatedly, and the JVM parity leg plus commonMain
metadata still compile.
2026-09-22 16:46:57 +02:00
Bitsy fb8e97b74d feat(material3): port material3-adaptive to desktop native
Closes the request in issue #4. org.jetbrains.compose.material3.adaptive:*
1.3.0-rc01 publishes ios_arm64 / ios_simulator_arm64 / macos_arm64 and
nothing else - no linux, no mingw. (It does carry macosArm64, which
answers the reporter's open question.)

All four artifacts are now vendored and built for every desktop-native
target, with ZERO source edits. Two things made it a pure re-target:

- every platform actual the native legs need already exists upstream:
  adaptive/nonAndroidMain (calculatePosture), adaptive-layout/skikoMain
  (~75 l10n tables + Strings + the drag handle) and
  adaptive-layout/nativeMain (identityHashCode, isGraphicsLayerElement)
- androidx.window:window-core - the dependency `adaptive` api-exposes and
  the obvious suspect for the apple-only publication - has shipped
  linux_x64 / linux_arm64 / mingw_x64 / macos_arm64 klibs all along, under
  BOTH the google and jetbrains coordinates

So the artifacts were missing only because upstream never enabled the
targets, not because anything blocked them.

125 files vendored off the existing COMPOSE_CORE_REF pin - no new
SET_REPO. Upstream's skikoMain lands in src/vendor/native/ beside
upstream's own nativeMain; the two actualise disjoint expects so they
share one source set.

Both bridges substitute all four coordinates, so consumers keep declaring
the official org.jetbrains.compose.material3.adaptive:* coords.

Verified: all four compile for mingwX64 + linuxX64 + linuxArm64, API
dumps generated, vendor-clean and audit-exclusions pass, and
`demo --screen=Adaptive` renders a live ListDetailPaneScaffold with the
window size class resolving correctly. adaptive-navigation3 builds and
dumps API but has no demo screen yet, so its nav3 SceneStrategy path is
unproven at runtime.

Two notes for later:
- the new demo screen hit the granular-metadata trap documented in
  CLAUDE.md: because `adaptive` is substituted on native configs, KGP
  drops its transitives from the commonMain metadata classpath, so
  window-core had to be declared DIRECTLY in demo's commonMain
- demo's JVM parity leg moves navigation3-ui 1.2.0-alpha02 -> 1.1.2 to
  follow CMP 1.12.1's navigation3 reset onto the 1.1 line
2026-09-22 16:07:23 +02:00
Bitsy 6c3bfd8679 chore(deps): coil 3.6.2 -> 3.6.3, ktor 3.5.2 -> 3.6.0
Sweep of every pin the project owns. Only these two moved:
- coil: COIL_REF bumped with it and the vendored sources re-synced (no
  local edits needed)
- ktor: plain Maven dep, apidemo's HTTP client

Already latest, left alone: SDL3 (release-3.4.16), koin 4.2.2, okio
3.18.2, coroutines 1.11.0, kotlinx-io-okio 0.9.1. Deliberately not
bumped: kotlinx-serialization (latest is 1.12.0-RC, a prerelease) and
everything under policy 1, which CMP 1.12.1 still pins where we are.

The pulse group rename also lands in the klib dumps here - the unique
name embeds the group, and BCV infers the macOS dumps from the checked-in
files on Windows, so those headers had to be rewritten for apiDump to run.
2026-09-22 15:51:26 +02:00
Bitsy ec2d9b06ad chore(pulse): namespace the republish under the project group
Pulse is the one vendored dependency that is ITSELF a com.bitsycore
library (upstream com.bitsycore.lib:*), so republishing it as a bare
com.bitsycore.pulse:* read like an upstream coordinate and left room for
a real collision if upstream ever moves under that group.

Group becomes com.bitsycore.compose.desktop.native.pulse:*. Nothing
changes for consumers: they still declare the upstream com.bitsycore.lib
coordinate and the bridge plugin substitutes it on native configs.
2026-09-22 15:48:21 +02:00
Bitsy 1d6e5a76de chore: port to Compose Multiplatform 1.12.1
Bumps COMPOSE_CORE_REF / COMPOSE_REF to v1.12.1 and re-syncs all 1760
vendored files. No vendored file needed an edit; the ten manual vendors
were all verified unchanged upstream base..pin and only needed their
VENDOR-BASE ref re-stamped.

skiko stays 0.150.1, so the mingwX64 fork (0.150.1-mingw.2) still matches
its Skia base - no republish.

navigation3 moves BACKWARDS, 1.2.0-alpha04 -> 1.1.7: upstream re-checked
navigation3 out of release/1.11 for this patch (redirectversions.toml), so
the vendored :navigation3:navigation3-ui is now 1.1.7 source and the Maven
runtime has to follow it down. 1.1.7 publishes every target this port needs.

Two upstream-driven API deltas, both matching CMP:
- ui gains LocalSystemTheme, re-exposed upstream as @InternalComposeUiApi
- navigation3-ui loses NavigationBackHandler / rememberNavigationEventState,
  deleted by the 1.1.7 reset

LayerTransformationMatrix.kt's VENDOR-BASE path also corrected - it still
pointed at ui/ui, but upstream moved Matrices.skiko.kt to ui/ui-graphics,
which is why the drift check could not diff it.

Verified on mingwX64: both apps link, full probe suite passes (nav3test,
backtest, multiwintest included), vendor-clean and audit-exclusions clean.
2026-09-22 15:47:19 +02:00
Bitsy eb44db915e refactor: finish the SDL3* -> Sdl3* rename and regenerate the API dumps
Picks up the file/type renames (SDL3Backend -> Sdl3Backend, SDL3FrameClock ->
Sdl3FrameClock, SDL3EventMapper.kt -> AppEvent.kt) and unifies the 15 references
the rename left behind. All were prose or strings, which is why it still
compiled:

  - a user-visible error message ("SDL3Backend received GpuMode.Auto ...")
  - two user-visible demo UI strings ("driven by the SDL3FrameClock ...")
  - the MARK headers in AppEvent.kt and Sdl3Backend.kt
  - KDoc cross-references, including to `SDL3EventMapper.kt` which no longer
    exists - repointed at AppEvent.kt
  - 3 PLAN.md references

The codebase now uses Sdl3* uniformly, matching the Sdl3MainDispatcher /
Sdl3Clipboard / Sdl3DragAndDropOwner / Sdl3ScrollConfig that already followed
that form. `sdl3.*` (the cinterop package) and SDL_* (the C API) are untouched.

API dumps regenerated: a clean 1:1 rename, 41 SDL3Backend -> 41 Sdl3Backend in
:ui and nothing else - the other renamed types were not public. Breaking, but
com.compose.sdl only; no androidx.compose.* / org.jetbrains.compose.* change.

Verified beyond compiling: apiCheck green, both metadata publish gates compile,
nav3test/backtest/multiwintest PASS, raw SDL handles still resolve
(gpu=OpenGL window=true glContext=true), and the Images screen renders.
2026-09-19 00:12:36 +02:00
Bitsy 1120abc488 Update README to remove Infrastructure and add Support
Removed the Infrastructure section and added a Support section with a Discord link.
2026-09-18 23:54:32 +02:00
69 changed files with 1901 additions and 176 deletions
+45 -5
View File
@@ -96,7 +96,30 @@ compose/
│ ├── foundation/ → :compose:foundation:foundation - androidx.compose.foundation.*
│ └── foundation-layout/ → :compose:foundation:foundation-layout - androidx.compose.foundation.layout.*
├── material3/
│ └── material3/ → :compose:material3:material3 - androidx.compose.material3.*
│ ├── material3/ → :compose:material3:material3 - androidx.compose.material3.*
│ └── adaptive/ → the material3-adaptive family, VENDORED VERBATIM.
│ │ org.jetbrains.compose.material3.adaptive:* publishes
│ │ ios + macosArm64 ONLY - no linux, no mingw (issue #4).
│ │ Nothing in the sources blocks those targets: every
│ │ actual the native legs need already exists upstream
│ │ (nonAndroidMain / skikoMain / nativeMain), and the one
│ │ real dependency, androidx.window:window-core, ALREADY
│ │ publishes linux + mingw + macos. The artifacts were
│ │ missing purely because upstream never enabled the
│ │ targets - so this port is vendor-only, ZERO source
│ │ edits. Upstream's skikoMain (the ~75 l10n tables +
│ │ Strings / drag-handle actuals) lands in src/vendor/
│ │ native/ next to upstream's own nativeMain actuals;
│ │ they actualise disjoint expects so they coexist.
│ │ com.bitsycore.compose.material3.adaptive:<module>.
│ ├── adaptive/ → :compose:material3:adaptive:adaptive - WindowAdaptiveInfo /
│ │ Posture / window size class. api-exposes window-core.
│ ├── adaptive-layout/ → :compose:material3:adaptive:adaptive-layout - ListDetail /
│ │ SupportingPane / ThreePane scaffolds + pane motion
│ ├── adaptive-navigation/ → :compose:material3:adaptive:adaptive-navigation -
│ │ ThreePaneScaffoldNavigator + back behaviour
│ └── adaptive-navigation3/ → :compose:material3:adaptive:adaptive-navigation3 -
│ SceneStrategy bindings for nav3 (→ :navigation3-ui)
├── material/
│ └── material-ripple/ → :compose:material:material-ripple - androidx.compose.material.ripple.*
└── desktop/native/desktop-native-window/ → :compose:desktop:native:desktop-native-window - nativeComposeApp { Window(...) {} }
@@ -184,10 +207,14 @@ pulse/ → Pulse MVI. Upstream (bitsycore/pulse-mvi, PULSE_REF) ta
├── pulse-viewmodel/ → :pulse:pulse-viewmodel - ViewModel binding
├── pulse-savedstate/ → :pulse:pulse-savedstate - SavedStateHandle persistence
└── pulse-compose/ → :pulse:pulse-compose - Compose bindings
Published as com.bitsycore.pulse:<module>, NOT
upstream's com.bitsycore.lib:<module> - the two
must not collide; the bridge substitutes the
upstream coord on native configs.
Published as com.bitsycore.compose.desktop.native
.pulse:<module>, NOT upstream's com.bitsycore.lib:
<module>. Pulse is the one vendored dep that is
ITSELF a com.bitsycore library, so the republish is
namespaced under this project rather than a bare
com.bitsycore.pulse that would read like upstream;
the bridge substitutes the upstream coord on
native configs.
navigation3/
└── navigation3-ui/ → :navigation3:navigation3-ui - androidx.navigation3.ui.* + scene machinery,
@@ -304,6 +331,14 @@ sees the split modules. Full DAG: `:ui-util → collection`; `:ui-geometry → :
`:foundation → :animation, :foundation-layout, :animation-core, :ui`;
`:material-ripple → :foundation, :animation-core`;
`:material3 → :foundation, :material-ripple, :animation-core, :foundation-layout`.
The adaptive family sits beside material3 rather than under it - it depends on
`:ui` / `:foundation` / `:animation-core`, NOT on `:material3`:
`:adaptive → :ui, :foundation, window-core`;
`:adaptive-layout → :adaptive, :ui, :animation-core, :animation, :foundation,
:foundation-layout, :ui-geometry, collection, window-core`;
`:adaptive-navigation → :adaptive-layout, :foundation, :ui-util`;
`:adaptive-navigation3 → :adaptive-navigation, :navigation3-ui, collection,
navigationevent-compose`.
`:ui` is the Compose core + the Skia RenderBackend + the SDL↔Compose bridges; it
sits on `:ui-graphics` / `:ui-text` (the graphics/text primitives + their skiko
@@ -749,6 +784,11 @@ Verified in-tree (api-exposed by `:ui` unless noted):
- `androidx.navigationevent:navigationevent-compose` 1.1.2 - predictive-back
event plumbing (BackHandler, NavDisplay gestures).
- `androidx.collection:collection` - plain Maven dep, not a module.
- `androidx.window:window-core` **1.5.0** - WindowSizeClass / the adaptive
window model. Publishes mingwX64 + linux + macos under BOTH coordinate sets;
the port takes the google one like the rest of the androidx stack. This is
what makes the material3-adaptive vendoring a pure re-target: the dependency
everybody assumed was the blocker was never missing.
- `io.insert-koin:koin-core` **4.2.2** - the DI container itself publishes
mingwX64 + linux + macos. Only Koin's viewmodel / compose layers stop at
apple+android and are vendored (`koin/`).
+61 -15
View File
@@ -391,21 +391,21 @@ re-vendoring.** The debt is **completing native-actual stubs**.
### P0 - blocks fidelity/correctness
- [~] **P0** Text context menu (right-click copy/paste/select-all) - **RECONCILED: already
works, no reimplementation.** Static trace confirmed the menu is wired end-to-end
through the vendored LEGACY path: text-level `ContextMenuArea` (`ContextMenu.native.kt`)
works, no reimplementation.** Static trace confirmed the menu is wired end-to-end
through the vendored LEGACY path: text-level `ContextMenuArea` (`ContextMenu.native.kt`)
→ `CommonContextMenuArea` (`vendor/common/.../text/CommonContextMenuArea.kt`) → (native
`ComposeFoundationFlags.isNewContextMenuEnabled = false`, so the legacy branch) →
`contextmenu.ContextMenuArea` → `contextMenuGestures`/`onRightClickDown`
(`isSecondaryPressed`) → `ContextMenuPopup` → `Popup.native.kt` (hosted by
`LocalPopupHost` at the app root). Items are real: `TextFieldSelectionManager` /
`SelectionManager.contextMenuBuilder` emit Cut/Copy/Paste/SelectAll with real actions.
SDL right-click → `PointerButton.Secondary` (`SDL3EventMapper.kt`) →
SDL right-click → `PointerButton.Secondary` (`AppEvent.kt`) →
`isSecondaryPressed` (`PointerEventBridge`). The three "NOP" seams belong to the
DISABLED *new* context-menu API and are unreachable - **DONE:** their misleading
DISABLED *new* context-menu API and are unreachable - **DONE:** their misleading
`TODO(CMP-7819)` comments corrected to say so, in all three files.
**REMAINING:** an interactive right-click smoke check (no headless driver here - fold
into manual/WIN-SMOKE). Known limitation, not a breakage: Paste enablement is
plain-text-only (`ClipboardPasteState.hasClip = hasText`, see P2 below).
**REMAINING:** an interactive right-click smoke check (no headless driver here - fold
into manual/WIN-SMOKE). Known limitation, not a breakage: Paste enablement is
plain-text-only (`ClipboardPasteState.hasClip = hasText`, see P2 below).
- [ ] **P1** DatePicker/TimePicker localization - VERIFIED current state:
`material3/.../internal/PlatformDateFormat.native.kt` is a real kotlinx-datetime
formatter that DOES honor CLDR patterns/skeletons (renders "Jul 29, 2026" /
@@ -417,14 +417,14 @@ re-vendoring.** The debt is **completing native-actual stubs**.
(author):** bundle a CLDR subset or K/N i18n lib for localized names + locale-aware
first-day/24h; also unblocks `CalendarLocale.native.kt:20` (fixed `"en"`). Ships
readable English dates today - polish, not a P0 gate.
- [x] **P0** Float pointer coordinates - `SDL3EventMapper.kt` `.toInt()`-truncated SDL's
Float `mb.x`/`mb.y`/`mm.x`/`mm.y` and the wheel `mouse_x/y` before the DPR multiply in
- [x] **P0** Float pointer coordinates - `AppEvent.kt` `.toInt()`-truncated SDL's
Float `mb.x`/`mb.y`/`mm.x`/`mm.y` and the wheel `mouse_x/y` before the DPR multiply in
`ComposeWindow.kt`. On 2× displays a click at logical 100.9 → physical 200 not ~201,
quantizing the caret to 2px steps near glyph edges. **DONE:** widened
quantizing the caret to 2px steps near glyph edges. **DONE:** widened
`LegacyPointerEvent.x/y` and `AppEvent.MouseWheel.x/y` to `Float`, dropped the
`.toInt()` at the three mapper construction sites, and removed the now-redundant
`.toFloat()` at the two `ComposeWindow` read sites. Consumers fully contained (verified
by grep). Builds + runs clean on macosArm64.
by grep). Builds + runs clean on macosArm64.
### P1 - quality / parity
@@ -521,7 +521,7 @@ re-vendoring.** The debt is **completing native-actual stubs**.
Static lib built from source per host (`scripts/build-sdl/build-all.py`, ref
`release-3.4.12`); linked into the exe via `sdl3.def` (`staticLibraries=libSDL3.a`). Today
only tests/examples + Windows D3D12/GPU are off (`build-all.py:311-319`). `SDL_Init` uses
**`SDL_INIT_VIDEO` only** (`SDL3Backend.kt:49`).
**`SDL_INIT_VIDEO` only** (`Sdl3Backend.kt:49`).
**USED (keep ON):** Video/window, Events, Clipboard, Dialog (file open/save - no cheaper
substitute; Linux uses portal/zenity, keep deps), OpenGL + Metal contexts, Render (2D CPU-
@@ -554,7 +554,7 @@ joystick.
disabled SDL subsystems.)
- [ ] **P2** (higher-risk, flag-don't-apply) Render-driver pruning to software-only. Only
the CPU-raster fallback uses `SDL_Render`; GL/Metal go direct. But
`SDL_CreateRenderer(window, null)` (`SDL3Backend.kt:117`) lets SDL pick the first
`SDL_CreateRenderer(window, null)` (`Sdl3Backend.kt:117`) lets SDL pick the first
driver - with only software present it picks software (fine) but couples the fallback
to that assumption. **Conservative: leave render drivers alone.**
@@ -732,7 +732,7 @@ Rule-3 vendors (like `FontRasterizationSettings.native.kt` now has a `VENDOR-BAS
The multi-window probe exited 139 with no output, so it had silently been
asserting nothing. Root cause: an OpenGL context is per-WINDOW but "current" is
per-THREAD, and `SDL_GL_MakeCurrent` ran only once at creation
(`SDL3Backend.init`) with nothing re-binding it per frame. With two windows open,
(`Sdl3Backend.init`) with nothing re-binding it per frame. With two windows open,
whichever initialised last owned the thread - so window A issued its draw and
swap against window B's context (silent corruption while both lived), and
destroying B left the current context dangling, faulting in `present()`.
@@ -759,6 +759,52 @@ hand-rolled text engine as an architectural deviation (§2 P1), per-focus
`SDL_StartTextInput/StopTextInput`, `loadImageBitmap`/`loadSvgPainter` (JVM `InputStream`
signatures, N/A on K/N).
## 8. material3-adaptive ported to desktop native (2026-09-22) - âś… LANDED
Asked for in [issue #4](https://github.com/bitsycore/compose-desktop-native/issues/4):
`org.jetbrains.compose.material3.adaptive:*` 1.3.0-rc01 publishes `ios_arm64
ios_simulator_arm64 macos_arm64` and nothing else - no linux, no mingw. (It DOES
carry macosArm64, which answers the reporter's open question.)
**The port needed zero source edits.** Two things made it a pure re-target:
1. Every platform actual the native legs want already exists upstream -
`adaptive/nonAndroidMain` (`calculatePosture`), `adaptive-layout/skikoMain`
(the ~75 l10n tables + `Strings` + the drag handle) and
`adaptive-layout/nativeMain` (`identityHashCode`, `isGraphicsLayerElement`).
2. `androidx.window:window-core` - the dependency `adaptive` api-exposes, and the
obvious suspect for why the artifacts stop at apple - has published
`linux_x64 linux_arm64 mingw_x64 macos_arm64` klibs all along, under BOTH the
google and jetbrains coordinates.
So the artifacts were missing purely because upstream never enabled the targets.
**Landed** as four modules under `compose/material3/adaptive/`
(`com.bitsycore.compose.material3.adaptive:*`), 125 files vendored verbatim off the
existing `COMPOSE_CORE_REF` pin - no new SET_REPO. Upstream's `skikoMain` lands in
`src/vendor/native/` beside upstream's own `nativeMain`; they actualise disjoint
expects so they share one source set. Both bridges substitute all four. `demo --screen=Adaptive` renders a
`ListDetailPaneScaffold`, and `demo --adaptivetest` drives one window
wide -> narrow -> wide and asserts the scaffold folds and unfolds, which is what
actually proves the resize chain end to end (SDL resize -> the owner's
snapshot-backed containerSize -> recomposition -> BoxWithConstraints re-measure ->
a new PaneScaffoldDirective -> a new scaffold value).
The demo screen computes its directive from the width IT gets rather than taking
the `rememberListDetailPaneScaffoldNavigator` default, which is the window size
class: the shell spends 190dp on the sidebar plus 48dp of padding, so defaulting
folds ~240dp too late and leaves two panes in a region already too cramped for
them. Pane-hosting apps that are not full-window should do the same.
One wrinkle worth remembering, and a textbook case of the granular-metadata trap
already documented in CLAUDE.md: because `adaptive` is SUBSTITUTED on native
configs, KGP drops its transitives from the commonMain metadata classpath, so the
shared demo screen could not see `WindowSizeClass` until `window-core` was declared
DIRECTLY in `demo`'s commonMain.
Not yet exercised: `adaptive-navigation3` builds and dumps API but has no demo
screen - the nav3 SceneStrategy path is unproven at runtime.
## 7. Post-1.12.0 open items (opened 2026-09-12)
### 7a. JVM parity reference used a DIFFERENT default font than native - âś… FIXED
@@ -886,7 +932,7 @@ WRONG - both coordinate sets publish mingwX64 + linux + macos, and the port alre
CLAUDE.md, exercised by `demo --backtest`). Nothing to vendor there.
**Landed** as `koin/` (4 modules, `com.bitsycore.koin`), `coil/` (7 modules,
`com.bitsycore.coil3`) and `pulse/` (4 modules, `com.bitsycore.pulse`) - 202 files vendored
`com.bitsycore.coil3`) and `pulse/` (4 modules, `com.bitsycore.compose.desktop.native.pulse`) - 202 files vendored
verbatim across three new pinned repos (`KOIN_REF=4.2.2`, `COIL_REF=3.6.2`,
`PULSE_REF=0.3.7`), ZERO local source edits. All build for mingwX64 + linuxX64/arm64, are
BCV-dumped, publish, and carry bridge substitution rules so consumers keep declaring the
+41 -25
View File
@@ -118,11 +118,21 @@ plugins {
commonMain.dependencies {
// The plugin exposes the exact Compose versions the port tracks, so you
// never hand-match them (material3 is versioned separately upstream).
// never hand-match them (material3 and material3-adaptive each ride their
// own release train upstream).
implementation("org.jetbrains.compose.runtime:runtime:${composeDesktopNative.composeRuntime}")
implementation("org.jetbrains.compose.ui:ui:${composeDesktopNative.compose}")
implementation("org.jetbrains.compose.foundation:foundation:${composeDesktopNative.compose}")
implementation("org.jetbrains.compose.material3:material3:${composeDesktopNative.composeMaterial3}")
// material3-adaptive, which upstream publishes for apple targets only.
// Note adaptive api-exposes androidx.window:window-core - declare it
// DIRECTLY if your commonMain touches WindowSizeClass, since substituted
// modules hide their transitives from the common metadata classpath.
val vAdaptive = composeDesktopNative.composeMaterial3Adaptive
implementation("org.jetbrains.compose.material3.adaptive:adaptive:$vAdaptive")
implementation("org.jetbrains.compose.material3.adaptive:adaptive-layout:$vAdaptive")
implementation("androidx.window:window-core:1.5.0")
}
```
@@ -185,7 +195,8 @@ targets, so you keep writing against the official coordinates:
| `components-resources`, `navigation3-ui` | no mingwX64 / linux klibs | `com.bitsycore.compose.components`, `com.bitsycore.navigation3` |
| **Koin** viewmodel + compose modules | apple + android only upstream (`koin-core` itself is fine) | `com.bitsycore.koin` |
| **Coil 3** (whole stack) | no mingwX64 anywhere; no desktop native at all for its compose layer | `com.bitsycore.coil3` |
| **Pulse MVI** | no desktop-native artifact upstream | `com.bitsycore.pulse` |
| **Pulse MVI** | no desktop-native artifact upstream | `com.bitsycore.compose.desktop.native.pulse` |
| **material3-adaptive** (all four) | ios + macosArm64 only upstream - no linux, no mingw | `com.bitsycore.compose.material3.adaptive` |
The bridge plugin substitutes each of these on native desktop configurations, so
app code declares `io.insert-koin:koin-compose`, `io.coil-kt.coil3:coil-compose`
@@ -213,8 +224,8 @@ one (`savedstate`, below).
| | Version | Notes |
|---|---|---|
| Kotlin | **2.4.20** | Newer than the 2.3.20 CMP 1.12.0 is built with. Kotlin/Native consumes older klibs fine, and the whole port builds clean on 2.4.20 with no klib API diff, so there is no reason to hold back. |
| Compose Multiplatform | **1.12.0** | The vendored sources are the `v1.12.0` tag of both upstream repos, and the JVM parity leg forces the same version - no dev-build skew. |
| Kotlin | **2.4.20** | Newer than the 2.3.20 CMP 1.12.1 is built with. Kotlin/Native consumes older klibs fine, and the whole port builds clean on 2.4.20 with no klib API diff, so there is no reason to hold back. |
| Compose Multiplatform | **1.12.1** | The vendored sources are the `v1.12.1` tag of both upstream repos, and the JVM parity leg forces the same version - no dev-build skew. skiko is unchanged at 0.150.1, so the mingwX64 fork still matches its Skia base. |
| SDL3 | **release-3.4.16** | Built from source as a static lib per host (`scripts/build-sdl/build-all.py`), linked into the executable. |
| Skiko | **0.150.1** | macOS / Linux use the official `org.jetbrains.skiko`. |
| Skiko (Windows fork) | **0.150.1-mingw.2** | `com.bitsycore.skiko:skiko` - Skiko + Skia in `skiko-windows-x64.dll`. Same Skia base as the official build. Public repo, no auth. |
@@ -227,19 +238,31 @@ the bridge plugin and you keep declaring the **official** coordinate.
| Library | Official coordinate | Port coordinate |
|---|---|---|
| Runtime | `org.jetbrains.compose.runtime:runtime*:1.12.0` | *not forked - the official klibs serve every target* |
| UI | `org.jetbrains.compose.ui:ui*:1.12.0` | `com.bitsycore.compose.ui:ui*` |
| Foundation | `org.jetbrains.compose.foundation:foundation*:1.12.0` | `com.bitsycore.compose.foundation:foundation*` |
| Animation | `org.jetbrains.compose.animation:animation*:1.12.0` | `com.bitsycore.compose.animation:animation*` |
| Material Ripple | `org.jetbrains.compose.material:material-ripple:1.12.0` | `com.bitsycore.compose.material:material-ripple` |
| Runtime | `org.jetbrains.compose.runtime:runtime*:1.12.1` | *not forked - the official klibs serve every target* |
| UI | `org.jetbrains.compose.ui:ui*:1.12.1` | `com.bitsycore.compose.ui:ui*` |
| Foundation | `org.jetbrains.compose.foundation:foundation*:1.12.1` | `com.bitsycore.compose.foundation:foundation*` |
| Animation | `org.jetbrains.compose.animation:animation*:1.12.1` | `com.bitsycore.compose.animation:animation*` |
| Material Ripple | `org.jetbrains.compose.material:material-ripple:1.12.1` | `com.bitsycore.compose.material:material-ripple` |
| Material3 | `org.jetbrains.compose.material3:material3:1.12.0-alpha03` | `com.bitsycore.compose.material3:material3` |
| Resources | `org.jetbrains.compose.components:components-resources:1.12.0` | `com.bitsycore.compose.components:components-resources` |
| Material3 Adaptive | `org.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01` | `com.bitsycore.compose.material3.adaptive:adaptive*` |
| Resources | `org.jetbrains.compose.components:components-resources:1.12.1` | `com.bitsycore.compose.components:components-resources` |
| Navigation3 UI | `org.jetbrains.androidx.navigation3:navigation3-ui` | `com.bitsycore.navigation3:navigation3-ui` |
| Window shell | *no upstream equivalent* | `com.bitsycore.compose:desktop-native-window` |
| SDL layer | *no upstream equivalent* | `com.bitsycore.compose.sdl:sdl-core` |
Material3 rides its own release train upstream: `1.12.0-alpha03` **is** the
version Compose Multiplatform 1.12.0 ships (Jetpack Material3 1.5.0-alpha22).
version Compose Multiplatform 1.12.1 ships (Jetpack Material3 1.5.0-alpha22).
material3-adaptive rides a third train again.
**material3-adaptive** (`adaptive`, `adaptive-layout`, `adaptive-navigation`,
`adaptive-navigation3`) is published upstream for ios and macosArm64 only - no
linux, no mingw. This port ships all four for every desktop-native target. It
needed no source changes at all: every platform actual the native legs want is
already in upstream's `nonAndroidMain` / `skikoMain` / `nativeMain`, and
`androidx.window:window-core` - the one dependency involved - has published
linux, mingw and macos klibs the whole time. The artifacts were missing only
because upstream never turned the targets on. `demo --screen=Adaptive` renders
a live `ListDetailPaneScaffold`.
### Ecosystem libraries
@@ -250,8 +273,8 @@ substitutes them on native desktop targets only.
|---|---|---|---|
| Koin | `io.insert-koin:koin-compose*:4.2.2` | `com.bitsycore.koin:*` | apple + android only upstream |
| Koin core | `io.insert-koin:koin-core:4.2.2` | *not forked* | already ships mingwX64 + linux |
| Coil 3 | `io.coil-kt.coil3:coil*:3.6.2` | `com.bitsycore.coil3:*` | no mingwX64 anywhere; no desktop native at all for the compose layer |
| Pulse MVI | `com.bitsycore.lib:pulse*:0.3.7` | `com.bitsycore.pulse:*` | no desktop-native artifact upstream |
| Coil 3 | `io.coil-kt.coil3:coil*:3.6.3` | `com.bitsycore.coil3:*` | no mingwX64 anywhere; no desktop native at all for the compose layer |
| Pulse MVI | `com.bitsycore.lib:pulse*:0.3.7` | `com.bitsycore.compose.desktop.native.pulse:*` | no desktop-native artifact upstream - and Pulse is itself a `com.bitsycore` library, so the republish is namespaced under this project |
Koin's `koin-compose-viewmodel-navigation` is deliberately **not** provided: it
needs Navigation 2's `navigation-compose`, which has no mingwX64 or linux klibs
@@ -268,22 +291,11 @@ mirrors or you will have every class twice.
|---|---|
| Lifecycle / ViewModel | `androidx.lifecycle:lifecycle-*:2.11.0` |
| SavedState | `androidx.savedstate:savedstate*:1.5.0` (CMP builds against 1.4.0; lifecycle 2.11.0 requires it only as a *minimum*, so 1.5.0 resolves cleanly and gives consumers the newer API) |
| Navigation3 runtime | `androidx.navigation3:navigation3-runtime:1.2.0-alpha04` |
| Navigation3 runtime | `androidx.navigation3:navigation3-runtime:1.1.7` |
| Navigation Event | `androidx.navigationevent:navigationevent-compose:1.1.2` |
| Collection | `androidx.collection:collection:1.5.0` |
| Graphics Shapes | `androidx.graphics:graphics-shapes:1.1.0` |
### Infrastructure
| Library | Version |
|---|---|
| kotlinx-coroutines | 1.11.0 |
| kotlinx-serialization | 1.11.0 |
| kotlinx-datetime | 0.8.0 |
| kotlinx-io-okio | 0.9.1 |
| Okio | 3.18.2 |
| Ktor | 3.5.2 |
## Building
Build the native libraries once per machine, then build any app target:
@@ -298,6 +310,10 @@ command line tools; Linux needs gcc/g++ and the X11 / Wayland / audio dev
headers; Windows needs a mingw-w64 g++ on PATH. See [TOOLING.md](TOOLING.md) for
the full build and verification workflow.
## Support
[Bitsycore's Discord](https://discord.gg/kGnraVAtDR)
## Documentation
- [TOOLING.md](TOOLING.md): building the native libs, vendoring, and verification.
+2 -1
View File
@@ -154,6 +154,7 @@ demo.kexe --backtest # predictive-back / BackHandler
demo.kexe --clicktest # pointer -> upstream clickable
demo.kexe --scrolltest # wheel -> scrollable
demo.kexe --multiwintest # multi-window lifecycle
demo.kexe --adaptivetest # material3-adaptive folds/unfolds on a LIVE window resize
demo.kexe --soaktest # memory soak (CDN_SOAK_SCREEN, CDN_SOAK_STATIC, CDN_SOAK_CYCLES)
```
@@ -194,7 +195,7 @@ single file to edit; know which axis you are changing.
| Project release version | The git tag `vX.Y.Z`. `PUBLISH_VERSION` (from the tag) feeds `vPublishVersion` in `build.gradle.kts`, which strips the leading `v`. Groups mirror upstream per area (`com.bitsycore.compose.<area>:<module>`, e.g. `com.bitsycore.compose.ui:ui`); project-only modules use `com.bitsycore.compose.sdl` and `:desktop-native-window` is `com.bitsycore.compose` - see `groupFor()` in the root build. | Set by the tag, not edited by hand. A non-publish build is `0.0.0-SNAPSHOT`. |
| Vendored Compose (native side) | `COMPOSE_CORE_REF` and `COMPOSE_REF` in `scripts/compose-fork/compose.properties`, plus `compose` in `gradle/libs.versions.toml`. | Pin to a durable tag (not a `+dev` commit upstream may GC). Re-sync after changing. |
| Vendored ecosystem libs | `KOIN_REF`, `COIL_REF`, `PULSE_REF` in the same file, plus `koin` / `coil` in `gradle/libs.versions.toml`. | Same rule: durable tags. Each repo gets its own sibling sparse clone (`../cmp-ref-koin`, `../cmp-ref-coil`, `../cmp-ref-pulse-mvi`). Re-sync, then `apiDump` - these modules are BCV-validated like the rest. |
| JVM parity forcing | `compose` / `composeMaterial3` / `composeRuntime` in `gradle/libs.versions.toml` (read by `demo`, `apidemo`, `material-symbols` and the root build's forcing map). | Must be a version PUBLISHED to Maven Central. It may lag the vendored native ref (a documented skew) until the matching version is published; at v1.12.0 they are in lockstep. |
| JVM parity forcing | `compose` / `composeMaterial3` / `composeRuntime` in `gradle/libs.versions.toml` (read by `demo`, `apidemo`, `material-symbols` and the root build's forcing map). | Must be a version PUBLISHED to Maven Central. It may lag the vendored native ref (a documented skew) until the matching version is published; at v1.12.1 they are in lockstep. |
| Skiko | `skiko` (official) and `skikoMingw` (the fork) in `gradle/libs.versions.toml`; keep the fork's `-mingw.N` base equal to `skiko`. | macOS/Linux use official Skiko (`org.jetbrains.skiko`); mingwX64 uses the bitsycore fork (`com.bitsycore.skiko:skiko:0.150.1-mingw.2` from the public maven.bitsycore.com), published out of band by the fork repo's own workflow. Must expose the `org.jetbrains.skiko.node` `RenderNode` / `GraphicsContext` API the vendored compose-core uses (the fork keeps upstream's `org.jetbrains.skiko.*` package names; only the Maven coord is rebranded). Verify with a throwaway `skikoRendererMain` compile if unsure. |
| SDL3 | `scripts/build-sdl/build-sdl.properties`. | Rebuild `libs/` with `build-all.py` after any change. |
| Bridge substituted version | Defaults to the bridge plugin's own published version; consumers override with the `composeDesktopNative.version` Gradle property. | The plugin publishes with the release tag, so a consumer on the matching plugin version resolves the right klibs automatically. |
+18 -5
View File
@@ -46,6 +46,10 @@ val kAreaGroups = mapOf(
":compose:animation:animation-core" to "com.bitsycore.compose.animation",
":compose:animation:animation-graphics" to "com.bitsycore.compose.animation",
":compose:material3:material3" to "com.bitsycore.compose.material3",
":compose:material3:adaptive:adaptive" to "com.bitsycore.compose.material3.adaptive",
":compose:material3:adaptive:adaptive-layout" to "com.bitsycore.compose.material3.adaptive",
":compose:material3:adaptive:adaptive-navigation" to "com.bitsycore.compose.material3.adaptive",
":compose:material3:adaptive:adaptive-navigation3" to "com.bitsycore.compose.material3.adaptive",
":compose:material:material-ripple" to "com.bitsycore.compose.material",
":components:resources:components-resources" to "com.bitsycore.compose.components",
":navigation3:navigation3-ui" to "com.bitsycore.navigation3",
@@ -60,10 +64,10 @@ val kAreaGroups = mapOf(
":coil:coil-svg" to "com.bitsycore.coil3",
":coil:coil-network-core" to "com.bitsycore.coil3",
":coil:coil-network-ktor3" to "com.bitsycore.coil3",
":pulse:pulse" to "com.bitsycore.pulse",
":pulse:pulse-viewmodel" to "com.bitsycore.pulse",
":pulse:pulse-savedstate" to "com.bitsycore.pulse",
":pulse:pulse-compose" to "com.bitsycore.pulse",
":pulse:pulse" to "com.bitsycore.compose.desktop.native.pulse",
":pulse:pulse-viewmodel" to "com.bitsycore.compose.desktop.native.pulse",
":pulse:pulse-savedstate" to "com.bitsycore.compose.desktop.native.pulse",
":pulse:pulse-compose" to "com.bitsycore.compose.desktop.native.pulse",
":compose:desktop:native:desktop-native-window" to "com.bitsycore.compose",
)
fun groupFor(path: String): String = kAreaGroups[path] ?: kDefaultGroup
@@ -99,6 +103,7 @@ val kPublishedLibs = setOf(
":compose:animation:animation-graphics",
":compose:foundation:foundation", ":compose:foundation:foundation-layout",
":compose:material3:material3", ":compose:material:material-ripple",
":compose:material3:adaptive:adaptive", ":compose:material3:adaptive:adaptive-layout", ":compose:material3:adaptive:adaptive-navigation", ":compose:material3:adaptive:adaptive-navigation3",
":compose:desktop:native:desktop-native-window", ":utils:material-symbols",
":navigation3:navigation3-ui", ":components:resources:components-resources",
":koin:koin-core-viewmodel", ":koin:koin-compose",
@@ -222,6 +227,12 @@ allprojects {
substitute(module("org.jetbrains.compose.animation:animation")).using(project(":compose:animation:animation"))
substitute(module("org.jetbrains.compose.animation:animation-core")).using(project(":compose:animation:animation-core"))
substitute(module("org.jetbrains.compose.material3:material3")).using(project(":compose:material3:material3"))
// material3-adaptive: upstream publishes ios + macosArm64 only - no
// linux, no mingw (issues/4). Vendored as :compose:material3:adaptive:*.
substitute(module("org.jetbrains.compose.material3.adaptive:adaptive")).using(project(":compose:material3:adaptive:adaptive"))
substitute(module("org.jetbrains.compose.material3.adaptive:adaptive-layout")).using(project(":compose:material3:adaptive:adaptive-layout"))
substitute(module("org.jetbrains.compose.material3.adaptive:adaptive-navigation")).using(project(":compose:material3:adaptive:adaptive-navigation"))
substitute(module("org.jetbrains.compose.material3.adaptive:adaptive-navigation3")).using(project(":compose:material3:adaptive:adaptive-navigation3"))
// navigation3-ui: the JB Maven artifact has no K/N desktop
// klibs - the port vendors it as :navigation3-ui.
substitute(module("org.jetbrains.androidx.navigation3:navigation3-ui")).using(project(":navigation3:navigation3-ui"))
@@ -244,7 +255,9 @@ allprojects {
substitute(module("io.coil-kt.coil3:coil-network-core")).using(project(":coil:coil-network-core"))
substitute(module("io.coil-kt.coil3:coil-network-ktor3")).using(project(":coil:coil-network-ktor3"))
// Pulse MVI: upstream publishes com.bitsycore.lib:* with no desktop
// native targets. The port republishes under com.bitsycore.pulse so the
// native targets. Pulse is itself a com.bitsycore library, so the port's
// republish is namespaced under THIS project rather than a bare
// com.bitsycore.pulse, which would read like the upstream artifact. The
// two coordinates never collide, and substitutes the official one here.
substitute(module("com.bitsycore.lib:pulse")).using(project(":pulse:pulse"))
substitute(module("com.bitsycore.lib:pulse-viewmodel")).using(project(":pulse:pulse-viewmodel"))
@@ -11,12 +11,6 @@ plugins {
alias(libs.plugins.kotlin.plugin.compose)
}
repositories {
google()
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
val vHostSupportsMingw = rootProject.extra["vHostSupportsMingw"] as Boolean
kotlin {
@@ -16,7 +16,7 @@ package org.jetbrains.compose.resources.vector.xmldom
CDATA skipping, and the five predefined entities plus numeric character
references. No DTD expansion, no processing-instruction handling beyond
skipping - malformed input throws MalformedXMLException like upstream. */
// VENDOR-BASE(COMPOSE_REF): components/resources/library/src/nativeMain/kotlin/org/jetbrains/compose/resources/vector/xmldom/DomXmlParser.kt @ v1.12.0
// VENDOR-BASE(COMPOSE_REF): components/resources/library/src/nativeMain/kotlin/org/jetbrains/compose/resources/vector/xmldom/DomXmlParser.kt @ v1.12.1
// (fresh REIMPL, not a copy-edit - the base ref marks the upstream API it tracks)
internal fun parse(xml: String): Element {
@@ -14,7 +14,6 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.runtime.snapshots.Snapshot
import com.compose.sdl.res.currentImageLoader
import kotlinx.coroutines.*
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.setMain
@@ -141,7 +140,7 @@ fun nativeComposeApp(content: @Composable ApplicationScope.() -> Unit) {
runtime.scope = this
// App-level composition: no UI tree - it only declares Window()s.
val appClock = SDL3FrameClock()
val appClock = Sdl3FrameClock()
val appRecomposer = Recomposer(coroutineContext + appClock)
// The clock must be in the collector's context - runRecomposeAndApplyChanges
// awaits parent frames through it.
@@ -20,7 +20,7 @@ import sdl3.SDL_GetTicksNS
Both come from delegating to the runtime's BroadcastFrameClock, which is
exactly upstream's dispatch structure. */
internal class SDL3FrameClock : MonotonicFrameClock {
internal class Sdl3FrameClock : MonotonicFrameClock {
private val broadcast = BroadcastFrameClock()
override suspend fun <R> withFrameNanos(onFrame: (Long) -> R): R =
@@ -56,7 +56,7 @@ internal class WindowInstance(
private val initialHeight = inHeight
private val icon = inIcon
// Assigned by init() from the first backend that comes up (see makeBackend()).
lateinit var backend: SDL3Backend
lateinit var backend: Sdl3Backend
private set
private var renderBackend: RenderBackend? = null
lateinit var host: ComposeRootHost
@@ -65,7 +65,7 @@ internal class WindowInstance(
private set
private var popupHost: com.compose.sdl.window.PopupHostState? = null
val frameClock = SDL3FrameClock()
val frameClock = Sdl3FrameClock()
private var recomposer: Recomposer? = null
private var recomposeJob: Job? = null
private var composition: Composition? = null
@@ -128,11 +128,11 @@ internal class WindowInstance(
needsFrame = true
}
// Creates + initialises an SDL3Backend for [mode] and its RenderBackend. On
// Creates + initialises an Sdl3Backend for [mode] and its RenderBackend. On
// success commits `backend` and returns the renderer; else tears everything
// down and returns null so the caller can retry with a different mode.
private fun makeBackend(mode: GpuMode): RenderBackend? {
val vBackend = SDL3Backend(
val vBackend = Sdl3Backend(
initialTitle, initialWidth, initialHeight, gpuMode = mode,
iconLightResourcePaths = icon?.light ?: emptyList(),
iconDarkResourcePaths = icon?.dark ?: emptyList(),
@@ -1,4 +1,4 @@
// VENDOR-BASE: compose/foundation/foundation/src/skikoMain/kotlin/androidx/compose/foundation/Scrollbar.skiko.kt @ v1.12.0
// VENDOR-BASE: compose/foundation/foundation/src/skikoMain/kotlin/androidx/compose/foundation/Scrollbar.skiko.kt @ v1.12.1
// MANUAL VENDOR: refused in compose-fork.txt (flat native source set). Only edit vs base is the
// K2 @file:Suppress below - identical to what sync.py injects into src/vendor .kt (this file lives
// in src/nativeMain so sync doesn't regenerate it). Needed so compileNativeMainKotlinMetadata (the
@@ -1,4 +1,4 @@
// VENDOR-BASE: compose/foundation/foundation/src/skikoMain/kotlin/androidx/compose/foundation/v2/Scrollbar.skiko.kt @ v1.12.0
// VENDOR-BASE: compose/foundation/foundation/src/skikoMain/kotlin/androidx/compose/foundation/v2/Scrollbar.skiko.kt @ v1.12.1
// MANUAL VENDOR: expect fun runBlockingIfPossible inlined to runBlocking (flat native source set can't hold expect+actual together).
// Also carries the K2 @file:Suppress below (same as sync.py injects into src/vendor) so the native metadata compile / Windows publish accepts the orphaned JVM annotation.
/*
@@ -0,0 +1,658 @@
// Klib ABI Dump
// Targets: [linuxArm64, linuxX64, macosArm64, mingwX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.compose.material3.adaptive:adaptive-layout>
final enum class androidx.compose.material3.adaptive.layout/DockedEdge : kotlin/Enum<androidx.compose.material3.adaptive.layout/DockedEdge> { // androidx.compose.material3.adaptive.layout/DockedEdge|null[0]
enum entry Bottom // androidx.compose.material3.adaptive.layout/DockedEdge.Bottom|null[0]
enum entry End // androidx.compose.material3.adaptive.layout/DockedEdge.End|null[0]
enum entry Start // androidx.compose.material3.adaptive.layout/DockedEdge.Start|null[0]
enum entry Top // androidx.compose.material3.adaptive.layout/DockedEdge.Top|null[0]
final val entries // androidx.compose.material3.adaptive.layout/DockedEdge.entries|#static{}entries[0]
final fun <get-entries>(): kotlin.enums/EnumEntries<androidx.compose.material3.adaptive.layout/DockedEdge> // androidx.compose.material3.adaptive.layout/DockedEdge.entries.<get-entries>|<get-entries>#static(){}[0]
final fun valueOf(kotlin/String): androidx.compose.material3.adaptive.layout/DockedEdge // androidx.compose.material3.adaptive.layout/DockedEdge.valueOf|valueOf#static(kotlin.String){}[0]
final fun values(): kotlin/Array<androidx.compose.material3.adaptive.layout/DockedEdge> // androidx.compose.material3.adaptive.layout/DockedEdge.values|values#static(){}[0]
}
final enum class androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole : androidx.compose.material3.adaptive.layout/PaneScaffoldRole, kotlin/Enum<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole> { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole|null[0]
enum entry Primary // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole.Primary|null[0]
enum entry Secondary // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole.Secondary|null[0]
enum entry Tertiary // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole.Tertiary|null[0]
final val entries // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole.entries|#static{}entries[0]
final fun <get-entries>(): kotlin.enums/EnumEntries<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole> // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole.entries.<get-entries>|<get-entries>#static(){}[0]
final fun valueOf(kotlin/String): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole.valueOf|valueOf#static(kotlin.String){}[0]
final fun values(): kotlin/Array<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole> // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole.values|values#static(){}[0]
}
abstract interface androidx.compose.material3.adaptive.layout/AnimatedPaneOverride { // androidx.compose.material3.adaptive.layout/AnimatedPaneOverride|null[0]
abstract fun <#A1: androidx.compose.material3.adaptive.layout/PaneScaffoldRole, #B1: androidx.compose.material3.adaptive.layout/PaneScaffoldValue<#A1>> (androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope<#A1, #B1>).AnimatedPane(androidx.compose.runtime/Composer?, kotlin/Int) // androidx.compose.material3.adaptive.layout/AnimatedPaneOverride.AnimatedPane|AnimatedPane@androidx.compose.material3.adaptive.layout.AnimatedPaneOverrideScope<0:0,0:1>(androidx.compose.runtime.Composer?;kotlin.Int){0§<androidx.compose.material3.adaptive.layout.PaneScaffoldRole>;1§<androidx.compose.material3.adaptive.layout.PaneScaffoldValue<0:0>>}[0]
}
abstract interface androidx.compose.material3.adaptive.layout/PaneScaffoldRole // androidx.compose.material3.adaptive.layout/PaneScaffoldRole|null[0]
abstract interface androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverride { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverride|null[0]
abstract fun (androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope).ThreePaneScaffold(androidx.compose.runtime/Composer?, kotlin/Int) // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverride.ThreePaneScaffold|ThreePaneScaffold@androidx.compose.material3.adaptive.layout.ThreePaneScaffoldOverrideScope(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
}
sealed interface <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole, #B: androidx.compose.material3.adaptive.layout/PaneScaffoldValue<#A>> androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldPaneScope : androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldScope<#A, #B>, androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope<#A> // androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldPaneScope|null[0]
sealed interface <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole, #B: androidx.compose.material3.adaptive.layout/PaneScaffoldValue<#A>> androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldScope : androidx.compose.material3.adaptive.layout/PaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope<#A, #B>, androidx.compose.ui.layout/LookaheadScope { // androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldScope|null[0]
abstract val focusRequesters // androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldScope.focusRequesters|{}focusRequesters[0]
abstract fun <get-focusRequesters>(): kotlin.collections/Map<#A, androidx.compose.ui.focus/FocusRequester> // androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldScope.focusRequesters.<get-focusRequesters>|<get-focusRequesters>(){}[0]
}
sealed interface <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole, #B: androidx.compose.material3.adaptive.layout/PaneScaffoldValue<#A>> androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope { // androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope|null[0]
abstract val motionDataProvider // androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope.motionDataProvider|{}motionDataProvider[0]
abstract fun <get-motionDataProvider>(): androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider<#A> // androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope.motionDataProvider.<get-motionDataProvider>|<get-motionDataProvider>(){}[0]
abstract val motionProgress // androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope.motionProgress|{}motionProgress[0]
abstract fun <get-motionProgress>(): kotlin/Float // androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope.motionProgress.<get-motionProgress>|<get-motionProgress>(){}[0]
abstract val scaffoldStateTransition // androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope.scaffoldStateTransition|{}scaffoldStateTransition[0]
abstract fun <get-scaffoldStateTransition>(): androidx.compose.animation.core/Transition<#B> // androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope.scaffoldStateTransition.<get-scaffoldStateTransition>|<get-scaffoldStateTransition>(){}[0]
}
sealed interface <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder { // androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder|null[0]
abstract val size // androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder.size|{}size[0]
abstract fun <get-size>(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder.size.<get-size>|<get-size>(){}[0]
abstract fun forEach(kotlin/Function1<#A, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder.forEach|forEach(kotlin.Function1<1:0,kotlin.Unit>){}[0]
abstract fun forEachIndexed(kotlin/Function2<kotlin/Int, #A, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder.forEachIndexed|forEachIndexed(kotlin.Function2<kotlin.Int,1:0,kotlin.Unit>){}[0]
abstract fun forEachIndexedReversed(kotlin/Function2<kotlin/Int, #A, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder.forEachIndexedReversed|forEachIndexedReversed(kotlin.Function2<kotlin.Int,1:0,kotlin.Unit>){}[0]
abstract fun indexOf(#A): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder.indexOf|indexOf(1:0){}[0]
}
sealed interface <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider { // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider|null[0]
abstract val count // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider.count|{}count[0]
abstract fun <get-count>(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider.count.<get-count>|<get-count>(){}[0]
abstract val scaffoldSize // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider.scaffoldSize|{}scaffoldSize[0]
abstract fun <get-scaffoldSize>(): androidx.compose.ui.unit/IntSize // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider.scaffoldSize.<get-scaffoldSize>|<get-scaffoldSize>(){}[0]
abstract fun get(#A): androidx.compose.material3.adaptive.layout/PaneMotionData // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider.get|get(1:0){}[0]
abstract fun get(kotlin/Int): androidx.compose.material3.adaptive.layout/PaneMotionData // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider.get|get(kotlin.Int){}[0]
abstract fun getRoleAt(kotlin/Int): #A // androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider.getRoleAt|getRoleAt(kotlin.Int){}[0]
}
sealed interface <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope { // androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope|null[0]
abstract val isInteractable // androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope.isInteractable|{}isInteractable[0]
abstract fun <get-isInteractable>(): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope.isInteractable.<get-isInteractable>|<get-isInteractable>(){}[0]
abstract val paneMotion // androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope.paneMotion|{}paneMotion[0]
abstract fun <get-paneMotion>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope.paneMotion.<get-paneMotion>|<get-paneMotion>(){}[0]
abstract val paneRole // androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope.paneRole|{}paneRole[0]
abstract fun <get-paneRole>(): #A // androidx.compose.material3.adaptive.layout/PaneScaffoldPaneScope.paneRole.<get-paneRole>|<get-paneRole>(){}[0]
}
sealed interface <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> androidx.compose.material3.adaptive.layout/PaneScaffoldValue { // androidx.compose.material3.adaptive.layout/PaneScaffoldValue|null[0]
abstract fun get(#A): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/PaneScaffoldValue.get|get(1:0){}[0]
}
sealed interface androidx.compose.material3.adaptive.layout/AdaptStrategy { // androidx.compose.material3.adaptive.layout/AdaptStrategy|null[0]
open fun adapt(): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/AdaptStrategy.adapt|adapt(){}[0]
final class Levitate : androidx.compose.material3.adaptive.layout/AdaptStrategy { // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate|null[0]
constructor <init>(androidx.compose.ui/Alignment = ..., kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? = ...) // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate.<init>|<init>(androidx.compose.ui.Alignment;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?){}[0]
constructor <init>(androidx.compose.ui/Alignment = ..., kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? = ..., androidx.compose.material3.adaptive.layout/DragToResizeState? = ...) // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate.<init>|<init>(androidx.compose.ui.Alignment;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.DragToResizeState?){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate.hashCode|hashCode(){}[0]
final fun onlyIf(kotlin/Boolean, androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.material3.adaptive.layout/AdaptStrategy // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate.onlyIf|onlyIf(kotlin.Boolean;androidx.compose.runtime.Composer?;kotlin.Int){}[0]
final fun onlyIfSinglePane(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.material3.adaptive.layout/AdaptStrategy // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate.onlyIfSinglePane|onlyIfSinglePane(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.runtime.Composer?;kotlin.Int){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/AdaptStrategy.Levitate.toString|toString(){}[0]
}
final class Reflow : androidx.compose.material3.adaptive.layout/AdaptStrategy { // androidx.compose.material3.adaptive.layout/AdaptStrategy.Reflow|null[0]
constructor <init>(androidx.compose.material3.adaptive.layout/PaneScaffoldRole) // androidx.compose.material3.adaptive.layout/AdaptStrategy.Reflow.<init>|<init>(androidx.compose.material3.adaptive.layout.PaneScaffoldRole){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/AdaptStrategy.Reflow.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/AdaptStrategy.Reflow.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/AdaptStrategy.Reflow.toString|toString(){}[0]
}
final object Companion { // androidx.compose.material3.adaptive.layout/AdaptStrategy.Companion|null[0]
final val Hide // androidx.compose.material3.adaptive.layout/AdaptStrategy.Companion.Hide|{}Hide[0]
final fun <get-Hide>(): androidx.compose.material3.adaptive.layout/AdaptStrategy // androidx.compose.material3.adaptive.layout/AdaptStrategy.Companion.Hide.<get-Hide>|<get-Hide>(){}[0]
}
}
sealed interface androidx.compose.material3.adaptive.layout/AnimatedPaneScope : androidx.compose.animation/AnimatedVisibilityScope { // androidx.compose.material3.adaptive.layout/AnimatedPaneScope|null[0]
final object Companion { // androidx.compose.material3.adaptive.layout/AnimatedPaneScope.Companion|null[0]
final fun create(androidx.compose.animation/AnimatedVisibilityScope): androidx.compose.material3.adaptive.layout/AnimatedPaneScope // androidx.compose.material3.adaptive.layout/AnimatedPaneScope.Companion.create|create(androidx.compose.animation.AnimatedVisibilityScope){}[0]
}
}
sealed interface androidx.compose.material3.adaptive.layout/PaneAdaptedValue { // androidx.compose.material3.adaptive.layout/PaneAdaptedValue|null[0]
final class Levitated : androidx.compose.material3.adaptive.layout/PaneAdaptedValue { // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Levitated|null[0]
constructor <init>(androidx.compose.ui/Alignment, kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? = ...) // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Levitated.<init>|<init>(androidx.compose.ui.Alignment;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?){}[0]
constructor <init>(androidx.compose.ui/Alignment, kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? = ..., androidx.compose.material3.adaptive.layout/DragToResizeState? = ...) // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Levitated.<init>|<init>(androidx.compose.ui.Alignment;kotlin.Function2<androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.DragToResizeState?){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Levitated.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Levitated.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Levitated.toString|toString(){}[0]
}
final class Reflowed : androidx.compose.material3.adaptive.layout/PaneAdaptedValue { // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Reflowed|null[0]
constructor <init>(androidx.compose.material3.adaptive.layout/PaneScaffoldRole) // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Reflowed.<init>|<init>(androidx.compose.material3.adaptive.layout.PaneScaffoldRole){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Reflowed.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Reflowed.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Reflowed.toString|toString(){}[0]
}
final object Companion { // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Companion|null[0]
final val Expanded // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Companion.Expanded|{}Expanded[0]
final fun <get-Expanded>(): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Companion.Expanded.<get-Expanded>|<get-Expanded>(){}[0]
final val Hidden // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Companion.Hidden|{}Hidden[0]
final fun <get-Hidden>(): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/PaneAdaptedValue.Companion.Hidden.<get-Hidden>|<get-Hidden>(){}[0]
}
}
sealed interface androidx.compose.material3.adaptive.layout/PaneExpansionStateKey { // androidx.compose.material3.adaptive.layout/PaneExpansionStateKey|null[0]
final object Companion { // androidx.compose.material3.adaptive.layout/PaneExpansionStateKey.Companion|null[0]
final val Default // androidx.compose.material3.adaptive.layout/PaneExpansionStateKey.Companion.Default|{}Default[0]
final fun <get-Default>(): androidx.compose.material3.adaptive.layout/PaneExpansionStateKey // androidx.compose.material3.adaptive.layout/PaneExpansionStateKey.Companion.Default.<get-Default>|<get-Default>(){}[0]
}
}
sealed interface androidx.compose.material3.adaptive.layout/PaneExpansionStateKeyProvider { // androidx.compose.material3.adaptive.layout/PaneExpansionStateKeyProvider|null[0]
abstract val paneExpansionStateKey // androidx.compose.material3.adaptive.layout/PaneExpansionStateKeyProvider.paneExpansionStateKey|{}paneExpansionStateKey[0]
abstract fun <get-paneExpansionStateKey>(): androidx.compose.material3.adaptive.layout/PaneExpansionStateKey // androidx.compose.material3.adaptive.layout/PaneExpansionStateKeyProvider.paneExpansionStateKey.<get-paneExpansionStateKey>|<get-paneExpansionStateKey>(){}[0]
}
sealed interface androidx.compose.material3.adaptive.layout/PaneMargins { // androidx.compose.material3.adaptive.layout/PaneMargins|null[0]
open fun (androidx.compose.ui.layout/Placeable.PlacementScope).getPaneBottom(kotlin/Int, kotlin/Int): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneMargins.getPaneBottom|getPaneBottom@androidx.compose.ui.layout.Placeable.PlacementScope(kotlin.Int;kotlin.Int){}[0]
open fun (androidx.compose.ui.layout/Placeable.PlacementScope).getPaneLeft(kotlin/Int): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneMargins.getPaneLeft|getPaneLeft@androidx.compose.ui.layout.Placeable.PlacementScope(kotlin.Int){}[0]
open fun (androidx.compose.ui.layout/Placeable.PlacementScope).getPaneRight(kotlin/Int, kotlin/Int): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneMargins.getPaneRight|getPaneRight@androidx.compose.ui.layout.Placeable.PlacementScope(kotlin.Int;kotlin.Int){}[0]
open fun (androidx.compose.ui.layout/Placeable.PlacementScope).getPaneTop(kotlin/Int): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneMargins.getPaneTop|getPaneTop@androidx.compose.ui.layout.Placeable.PlacementScope(kotlin.Int){}[0]
final object Companion { // androidx.compose.material3.adaptive.layout/PaneMargins.Companion|null[0]
final val Unspecified // androidx.compose.material3.adaptive.layout/PaneMargins.Companion.Unspecified|{}Unspecified[0]
final fun <get-Unspecified>(): androidx.compose.material3.adaptive.layout/PaneMargins // androidx.compose.material3.adaptive.layout/PaneMargins.Companion.Unspecified.<get-Unspecified>|<get-Unspecified>(){}[0]
}
}
sealed interface androidx.compose.material3.adaptive.layout/PaneMotion { // androidx.compose.material3.adaptive.layout/PaneMotion|null[0]
abstract val type // androidx.compose.material3.adaptive.layout/PaneMotion.type|{}type[0]
abstract fun <get-type>(): androidx.compose.material3.adaptive.layout/PaneMotion.Type // androidx.compose.material3.adaptive.layout/PaneMotion.type.<get-type>|<get-type>(){}[0]
final value class Type { // androidx.compose.material3.adaptive.layout/PaneMotion.Type|null[0]
final val value // androidx.compose.material3.adaptive.layout/PaneMotion.Type.value|{}value[0]
final fun <get-value>(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneMotion.Type.value.<get-value>|<get-value>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneMotion.Type.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneMotion.Type.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/PaneMotion.Type.toString|toString(){}[0]
final object Companion { // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion|null[0]
final val Entering // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Entering|{}Entering[0]
final fun <get-Entering>(): androidx.compose.material3.adaptive.layout/PaneMotion.Type // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Entering.<get-Entering>|<get-Entering>(){}[0]
final val EnteringModal // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.EnteringModal|{}EnteringModal[0]
final fun <get-EnteringModal>(): androidx.compose.material3.adaptive.layout/PaneMotion.Type // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.EnteringModal.<get-EnteringModal>|<get-EnteringModal>(){}[0]
final val Exiting // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Exiting|{}Exiting[0]
final fun <get-Exiting>(): androidx.compose.material3.adaptive.layout/PaneMotion.Type // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Exiting.<get-Exiting>|<get-Exiting>(){}[0]
final val ExitingModal // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.ExitingModal|{}ExitingModal[0]
final fun <get-ExitingModal>(): androidx.compose.material3.adaptive.layout/PaneMotion.Type // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.ExitingModal.<get-ExitingModal>|<get-ExitingModal>(){}[0]
final val Hidden // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Hidden|{}Hidden[0]
final fun <get-Hidden>(): androidx.compose.material3.adaptive.layout/PaneMotion.Type // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Hidden.<get-Hidden>|<get-Hidden>(){}[0]
final val Shown // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Shown|{}Shown[0]
final fun <get-Shown>(): androidx.compose.material3.adaptive.layout/PaneMotion.Type // androidx.compose.material3.adaptive.layout/PaneMotion.Type.Companion.Shown.<get-Shown>|<get-Shown>(){}[0]
}
}
final object Companion { // androidx.compose.material3.adaptive.layout/PaneMotion.Companion|null[0]
final val AnimateBounds // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.AnimateBounds|{}AnimateBounds[0]
final fun <get-AnimateBounds>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.AnimateBounds.<get-AnimateBounds>|<get-AnimateBounds>(){}[0]
final val EnterAsModal // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterAsModal|{}EnterAsModal[0]
final fun <get-EnterAsModal>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterAsModal.<get-EnterAsModal>|<get-EnterAsModal>(){}[0]
final val EnterFromLeft // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromLeft|{}EnterFromLeft[0]
final fun <get-EnterFromLeft>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromLeft.<get-EnterFromLeft>|<get-EnterFromLeft>(){}[0]
final val EnterFromLeftDelayed // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromLeftDelayed|{}EnterFromLeftDelayed[0]
final fun <get-EnterFromLeftDelayed>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromLeftDelayed.<get-EnterFromLeftDelayed>|<get-EnterFromLeftDelayed>(){}[0]
final val EnterFromRight // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromRight|{}EnterFromRight[0]
final fun <get-EnterFromRight>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromRight.<get-EnterFromRight>|<get-EnterFromRight>(){}[0]
final val EnterFromRightDelayed // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromRightDelayed|{}EnterFromRightDelayed[0]
final fun <get-EnterFromRightDelayed>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterFromRightDelayed.<get-EnterFromRightDelayed>|<get-EnterFromRightDelayed>(){}[0]
final val EnterWithExpand // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterWithExpand|{}EnterWithExpand[0]
final fun <get-EnterWithExpand>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.EnterWithExpand.<get-EnterWithExpand>|<get-EnterWithExpand>(){}[0]
final val ExitAsModal // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitAsModal|{}ExitAsModal[0]
final fun <get-ExitAsModal>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitAsModal.<get-ExitAsModal>|<get-ExitAsModal>(){}[0]
final val ExitToLeft // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitToLeft|{}ExitToLeft[0]
final fun <get-ExitToLeft>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitToLeft.<get-ExitToLeft>|<get-ExitToLeft>(){}[0]
final val ExitToRight // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitToRight|{}ExitToRight[0]
final fun <get-ExitToRight>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitToRight.<get-ExitToRight>|<get-ExitToRight>(){}[0]
final val ExitWithShrink // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitWithShrink|{}ExitWithShrink[0]
final fun <get-ExitWithShrink>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.ExitWithShrink.<get-ExitWithShrink>|<get-ExitWithShrink>(){}[0]
final val NoMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.NoMotion|{}NoMotion[0]
final fun <get-NoMotion>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotion.Companion.NoMotion.<get-NoMotion>|<get-NoMotion>(){}[0]
}
}
sealed interface androidx.compose.material3.adaptive.layout/PaneScaffoldParentData { // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData|null[0]
abstract val isAnimatedPane // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.isAnimatedPane|{}isAnimatedPane[0]
abstract fun <get-isAnimatedPane>(): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.isAnimatedPane.<get-isAnimatedPane>|<get-isAnimatedPane>(){}[0]
abstract val minTouchTargetSize // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.minTouchTargetSize|{}minTouchTargetSize[0]
abstract fun <get-minTouchTargetSize>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.minTouchTargetSize.<get-minTouchTargetSize>|<get-minTouchTargetSize>(){}[0]
abstract val paneMargins // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.paneMargins|{}paneMargins[0]
abstract fun <get-paneMargins>(): androidx.compose.material3.adaptive.layout/PaneMargins // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.paneMargins.<get-paneMargins>|<get-paneMargins>(){}[0]
abstract val preferredHeight // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredHeight|{}preferredHeight[0]
abstract fun <get-preferredHeight>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredHeight.<get-preferredHeight>|<get-preferredHeight>(){}[0]
abstract val preferredHeightInProportion // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredHeightInProportion|{}preferredHeightInProportion[0]
abstract fun <get-preferredHeightInProportion>(): kotlin/Float // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredHeightInProportion.<get-preferredHeightInProportion>|<get-preferredHeightInProportion>(){}[0]
abstract val preferredWidth // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredWidth|{}preferredWidth[0]
abstract fun <get-preferredWidth>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredWidth.<get-preferredWidth>|<get-preferredWidth>(){}[0]
abstract val preferredWidthInProportion // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredWidthInProportion|{}preferredWidthInProportion[0]
abstract fun <get-preferredWidthInProportion>(): kotlin/Float // androidx.compose.material3.adaptive.layout/PaneScaffoldParentData.preferredWidthInProportion.<get-preferredWidthInProportion>|<get-preferredWidthInProportion>(){}[0]
}
sealed interface androidx.compose.material3.adaptive.layout/PaneScaffoldScope { // androidx.compose.material3.adaptive.layout/PaneScaffoldScope|null[0]
abstract val saveableStateHolder // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.saveableStateHolder|{}saveableStateHolder[0]
abstract fun <get-saveableStateHolder>(): androidx.compose.runtime.saveable/SaveableStateHolder // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.saveableStateHolder.<get-saveableStateHolder>|<get-saveableStateHolder>(){}[0]
abstract fun (androidx.compose.ui/Modifier).paneExpansionDraggable(androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.ui.unit/Dp, androidx.compose.foundation.interaction/MutableInteractionSource, kotlin/Function1<androidx.compose.ui.semantics/SemanticsPropertyReceiver, kotlin/Unit>? = ...): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.paneExpansionDraggable|paneExpansionDraggable@androidx.compose.ui.Modifier(androidx.compose.material3.adaptive.layout.PaneExpansionState;androidx.compose.ui.unit.Dp;androidx.compose.foundation.interaction.MutableInteractionSource;kotlin.Function1<androidx.compose.ui.semantics.SemanticsPropertyReceiver,kotlin.Unit>?){}[0]
abstract fun (androidx.compose.ui/Modifier).paneMargins(androidx.compose.foundation.layout/PaddingValues, kotlin/Array<out androidx.compose.ui.layout/RectRulers>..., androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.paneMargins|paneMargins@androidx.compose.ui.Modifier(androidx.compose.foundation.layout.PaddingValues;kotlin.Array<out|androidx.compose.ui.layout.RectRulers>...;androidx.compose.runtime.Composer?;kotlin.Int){}[0]
abstract fun (androidx.compose.ui/Modifier).paneMargins(kotlin/Array<out androidx.compose.ui.layout/RectRulers>..., androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.paneMargins|paneMargins@androidx.compose.ui.Modifier(kotlin.Array<out|androidx.compose.ui.layout.RectRulers>...;androidx.compose.runtime.Composer?;kotlin.Int){}[0]
abstract fun (androidx.compose.ui/Modifier).preferredHeight(androidx.compose.ui.unit/Dp): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.preferredHeight|preferredHeight@androidx.compose.ui.Modifier(androidx.compose.ui.unit.Dp){}[0]
abstract fun (androidx.compose.ui/Modifier).preferredHeight(kotlin/Float): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.preferredHeight|preferredHeight@androidx.compose.ui.Modifier(kotlin.Float){}[0]
abstract fun (androidx.compose.ui/Modifier).preferredWidth(androidx.compose.ui.unit/Dp): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.preferredWidth|preferredWidth@androidx.compose.ui.Modifier(androidx.compose.ui.unit.Dp){}[0]
abstract fun (androidx.compose.ui/Modifier).preferredWidth(kotlin/Float): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/PaneScaffoldScope.preferredWidth|preferredWidth@androidx.compose.ui.Modifier(kotlin.Float){}[0]
}
sealed interface androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope : androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldPaneScope<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue>, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope|null[0]
sealed interface androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope : androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldScope<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue> // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope|null[0]
abstract class androidx.compose.material3.adaptive.layout/DragToResizeState : androidx.compose.foundation.gestures/DraggableState { // androidx.compose.material3.adaptive.layout/DragToResizeState|null[0]
open fun dispatchRawDelta(kotlin/Float) // androidx.compose.material3.adaptive.layout/DragToResizeState.dispatchRawDelta|dispatchRawDelta(kotlin.Float){}[0]
open suspend fun drag(androidx.compose.foundation/MutatePriority, kotlin.coroutines/SuspendFunction1<androidx.compose.foundation.gestures/DragScope, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/DragToResizeState.drag|drag(androidx.compose.foundation.MutatePriority;kotlin.coroutines.SuspendFunction1<androidx.compose.foundation.gestures.DragScope,kotlin.Unit>){}[0]
final object Companion // androidx.compose.material3.adaptive.layout/DragToResizeState.Companion|null[0]
}
final class <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole, #B: androidx.compose.material3.adaptive.layout/PaneScaffoldValue<#A>> androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope { // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope|null[0]
final val boundsAnimationSpec // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.boundsAnimationSpec|{}boundsAnimationSpec[0]
final fun <get-boundsAnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntRect> // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.boundsAnimationSpec.<get-boundsAnimationSpec>|<get-boundsAnimationSpec>(){}[0]
final val content // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.content|{}content[0]
final fun <get-content>(): kotlin/Function3<androidx.compose.material3.adaptive.layout/AnimatedPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit> // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.content.<get-content>|<get-content>(){}[0]
final val dragToResizeHandle // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.dragToResizeHandle|{}dragToResizeHandle[0]
final fun <get-dragToResizeHandle>(): kotlin/Function3<androidx.compose.material3.adaptive.layout/DragToResizeState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.dragToResizeHandle.<get-dragToResizeHandle>|<get-dragToResizeHandle>(){}[0]
final val enterTransition // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.enterTransition|{}enterTransition[0]
final fun <get-enterTransition>(): androidx.compose.animation/EnterTransition // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.enterTransition.<get-enterTransition>|<get-enterTransition>(){}[0]
final val exitTransition // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.exitTransition|{}exitTransition[0]
final fun <get-exitTransition>(): androidx.compose.animation/ExitTransition // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.exitTransition.<get-exitTransition>|<get-exitTransition>(){}[0]
final val modifier // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.modifier|{}modifier[0]
final fun <get-modifier>(): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.modifier.<get-modifier>|<get-modifier>(){}[0]
final val scope // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.scope|{}scope[0]
final fun <get-scope>(): androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldPaneScope<#A, #B> // androidx.compose.material3.adaptive.layout/AnimatedPaneOverrideScope.scope.<get-scope>|<get-scope>(){}[0]
}
final class <#A: out kotlin/Any?> androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem|null[0]
constructor <init>(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, #A? = ...) // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.<init>|<init>(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole;1:0?){}[0]
final val contentKey // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.contentKey|{}contentKey[0]
final fun <get-contentKey>(): #A? // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.contentKey.<get-contentKey>|<get-contentKey>(){}[0]
final val pane // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.pane|{}pane[0]
final fun <get-pane>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.pane.<get-pane>|<get-pane>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem.toString|toString(){}[0]
}
final class androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState : androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState { // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState|null[0]
constructor <init>(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue) // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.<init>|<init>(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue){}[0]
final val currentState // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.currentState|{}currentState[0]
final fun <get-currentState>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.currentState.<get-currentState>|<get-currentState>(){}[0]
final val progressFraction // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.progressFraction|{}progressFraction[0]
final fun <get-progressFraction>(): kotlin/Float // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.progressFraction.<get-progressFraction>|<get-progressFraction>(){}[0]
final val targetState // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.targetState|{}targetState[0]
final fun <get-targetState>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.targetState.<get-targetState>|<get-targetState>(){}[0]
final var isPredictiveBackInProgress // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.isPredictiveBackInProgress|{}isPredictiveBackInProgress[0]
final fun <get-isPredictiveBackInProgress>(): kotlin/Boolean // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.isPredictiveBackInProgress.<get-isPredictiveBackInProgress>|<get-isPredictiveBackInProgress>(){}[0]
final suspend fun animateTo(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue = ..., androidx.compose.animation.core/FiniteAnimationSpec<kotlin/Float>? = ..., kotlin/Boolean = ...) // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.animateTo|animateTo(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue;androidx.compose.animation.core.FiniteAnimationSpec<kotlin.Float>?;kotlin.Boolean){}[0]
final suspend fun seekTo(kotlin/Float, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue = ..., kotlin/Boolean = ...) // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.seekTo|seekTo(kotlin.Float;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue;kotlin.Boolean){}[0]
final suspend fun snapTo(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue) // androidx.compose.material3.adaptive.layout/MutableThreePaneScaffoldState.snapTo|snapTo(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue){}[0]
}
final class androidx.compose.material3.adaptive.layout/PaneExpansionState { // androidx.compose.material3.adaptive.layout/PaneExpansionState|null[0]
final var currentAnchor // androidx.compose.material3.adaptive.layout/PaneExpansionState.currentAnchor|{}currentAnchor[0]
final fun <get-currentAnchor>(): androidx.compose.material3.adaptive.layout/PaneExpansionAnchor? // androidx.compose.material3.adaptive.layout/PaneExpansionState.currentAnchor.<get-currentAnchor>|<get-currentAnchor>(){}[0]
final fun clear() // androidx.compose.material3.adaptive.layout/PaneExpansionState.clear|clear(){}[0]
final fun isUnspecified(): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneExpansionState.isUnspecified|isUnspecified(){}[0]
final fun setFirstPaneProportion(kotlin/Float) // androidx.compose.material3.adaptive.layout/PaneExpansionState.setFirstPaneProportion|setFirstPaneProportion(kotlin.Float){}[0]
final fun setFirstPaneWidth(kotlin/Int) // androidx.compose.material3.adaptive.layout/PaneExpansionState.setFirstPaneWidth|setFirstPaneWidth(kotlin.Int){}[0]
final suspend fun animateTo(androidx.compose.material3.adaptive.layout/PaneExpansionAnchor, kotlin/Float = ...) // androidx.compose.material3.adaptive.layout/PaneExpansionState.animateTo|animateTo(androidx.compose.material3.adaptive.layout.PaneExpansionAnchor;kotlin.Float){}[0]
final object Companion { // androidx.compose.material3.adaptive.layout/PaneExpansionState.Companion|null[0]
final const val Unspecified // androidx.compose.material3.adaptive.layout/PaneExpansionState.Companion.Unspecified|{}Unspecified[0]
final fun <get-Unspecified>(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneExpansionState.Companion.Unspecified.<get-Unspecified>|<get-Unspecified>(){}[0]
}
}
final class androidx.compose.material3.adaptive.layout/PaneMotionData { // androidx.compose.material3.adaptive.layout/PaneMotionData|null[0]
final var motion // androidx.compose.material3.adaptive.layout/PaneMotionData.motion|{}motion[0]
final fun <get-motion>(): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/PaneMotionData.motion.<get-motion>|<get-motion>(){}[0]
final var originPosition // androidx.compose.material3.adaptive.layout/PaneMotionData.originPosition|{}originPosition[0]
final fun <get-originPosition>(): androidx.compose.ui.unit/IntOffset // androidx.compose.material3.adaptive.layout/PaneMotionData.originPosition.<get-originPosition>|<get-originPosition>(){}[0]
final var originSize // androidx.compose.material3.adaptive.layout/PaneMotionData.originSize|{}originSize[0]
final fun <get-originSize>(): androidx.compose.ui.unit/IntSize // androidx.compose.material3.adaptive.layout/PaneMotionData.originSize.<get-originSize>|<get-originSize>(){}[0]
final var targetPosition // androidx.compose.material3.adaptive.layout/PaneMotionData.targetPosition|{}targetPosition[0]
final fun <get-targetPosition>(): androidx.compose.ui.unit/IntOffset // androidx.compose.material3.adaptive.layout/PaneMotionData.targetPosition.<get-targetPosition>|<get-targetPosition>(){}[0]
final var targetSize // androidx.compose.material3.adaptive.layout/PaneMotionData.targetSize|{}targetSize[0]
final fun <get-targetSize>(): androidx.compose.ui.unit/IntSize // androidx.compose.material3.adaptive.layout/PaneMotionData.targetSize.<get-targetSize>|<get-targetSize>(){}[0]
}
final class androidx.compose.material3.adaptive.layout/PaneScaffoldDirective { // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective|null[0]
constructor <init>(kotlin/Int, androidx.compose.ui.unit/Dp, kotlin/Int, androidx.compose.ui.unit/Dp, androidx.compose.ui.unit/Dp, androidx.compose.ui.unit/Dp, kotlin.collections/List<androidx.compose.ui.geometry/Rect>) // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.<init>|<init>(kotlin.Int;androidx.compose.ui.unit.Dp;kotlin.Int;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;kotlin.collections.List<androidx.compose.ui.geometry.Rect>){}[0]
constructor <init>(kotlin/Int, androidx.compose.ui.unit/Dp, kotlin/Int, androidx.compose.ui.unit/Dp, androidx.compose.ui.unit/Dp, androidx.compose.ui.unit/Dp, kotlin.collections/List<androidx.compose.ui.geometry/Rect>, kotlin/Boolean) // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.<init>|<init>(kotlin.Int;androidx.compose.ui.unit.Dp;kotlin.Int;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;kotlin.collections.List<androidx.compose.ui.geometry.Rect>;kotlin.Boolean){}[0]
constructor <init>(kotlin/Int, androidx.compose.ui.unit/Dp, kotlin/Int, androidx.compose.ui.unit/Dp, androidx.compose.ui.unit/Dp, kotlin.collections/List<androidx.compose.ui.geometry/Rect>) // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.<init>|<init>(kotlin.Int;androidx.compose.ui.unit.Dp;kotlin.Int;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;kotlin.collections.List<androidx.compose.ui.geometry.Rect>){}[0]
final val defaultPanePreferredHeight // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.defaultPanePreferredHeight|{}defaultPanePreferredHeight[0]
final fun <get-defaultPanePreferredHeight>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.defaultPanePreferredHeight.<get-defaultPanePreferredHeight>|<get-defaultPanePreferredHeight>(){}[0]
final val defaultPanePreferredWidth // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.defaultPanePreferredWidth|{}defaultPanePreferredWidth[0]
final fun <get-defaultPanePreferredWidth>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.defaultPanePreferredWidth.<get-defaultPanePreferredWidth>|<get-defaultPanePreferredWidth>(){}[0]
final val excludedBounds // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.excludedBounds|{}excludedBounds[0]
final fun <get-excludedBounds>(): kotlin.collections/List<androidx.compose.ui.geometry/Rect> // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.excludedBounds.<get-excludedBounds>|<get-excludedBounds>(){}[0]
final val horizontalPartitionSpacerSize // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.horizontalPartitionSpacerSize|{}horizontalPartitionSpacerSize[0]
final fun <get-horizontalPartitionSpacerSize>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.horizontalPartitionSpacerSize.<get-horizontalPartitionSpacerSize>|<get-horizontalPartitionSpacerSize>(){}[0]
final val maxHorizontalPartitions // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.maxHorizontalPartitions|{}maxHorizontalPartitions[0]
final fun <get-maxHorizontalPartitions>(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.maxHorizontalPartitions.<get-maxHorizontalPartitions>|<get-maxHorizontalPartitions>(){}[0]
final val maxVerticalPartitions // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.maxVerticalPartitions|{}maxVerticalPartitions[0]
final fun <get-maxVerticalPartitions>(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.maxVerticalPartitions.<get-maxVerticalPartitions>|<get-maxVerticalPartitions>(){}[0]
final val shouldAutoFocusCurrentDestination // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.shouldAutoFocusCurrentDestination|{}shouldAutoFocusCurrentDestination[0]
final fun <get-shouldAutoFocusCurrentDestination>(): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.shouldAutoFocusCurrentDestination.<get-shouldAutoFocusCurrentDestination>|<get-shouldAutoFocusCurrentDestination>(){}[0]
final val verticalPartitionSpacerSize // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.verticalPartitionSpacerSize|{}verticalPartitionSpacerSize[0]
final fun <get-verticalPartitionSpacerSize>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.verticalPartitionSpacerSize.<get-verticalPartitionSpacerSize>|<get-verticalPartitionSpacerSize>(){}[0]
final fun copy(kotlin/Int = ..., androidx.compose.ui.unit/Dp = ..., kotlin/Int = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., kotlin.collections/List<androidx.compose.ui.geometry/Rect> = ...): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.copy|copy(kotlin.Int;androidx.compose.ui.unit.Dp;kotlin.Int;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;kotlin.collections.List<androidx.compose.ui.geometry.Rect>){}[0]
final fun copy(kotlin/Int = ..., androidx.compose.ui.unit/Dp = ..., kotlin/Int = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., kotlin.collections/List<androidx.compose.ui.geometry/Rect> = ..., androidx.compose.ui.unit/Dp = ...): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.copy|copy(kotlin.Int;androidx.compose.ui.unit.Dp;kotlin.Int;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;kotlin.collections.List<androidx.compose.ui.geometry.Rect>;androidx.compose.ui.unit.Dp){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.toString|toString(){}[0]
final object Companion { // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.Companion|null[0]
final val Default // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.Companion.Default|{}Default[0]
final fun <get-Default>(): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.layout/PaneScaffoldDirective.Companion.Default.<get-Default>|<get-Default>(){}[0]
}
}
final class androidx.compose.material3.adaptive.layout/ThreePaneMotion { // androidx.compose.material3.adaptive.layout/ThreePaneMotion|null[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/ThreePaneMotion.equals|equals(kotlin.Any?){}[0]
final fun get(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole): androidx.compose.material3.adaptive.layout/PaneMotion // androidx.compose.material3.adaptive.layout/ThreePaneMotion.get|get(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/ThreePaneMotion.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/ThreePaneMotion.toString|toString(){}[0]
final object Companion { // androidx.compose.material3.adaptive.layout/ThreePaneMotion.Companion|null[0]
final val NoMotion // androidx.compose.material3.adaptive.layout/ThreePaneMotion.Companion.NoMotion|{}NoMotion[0]
final fun <get-NoMotion>(): androidx.compose.material3.adaptive.layout/ThreePaneMotion // androidx.compose.material3.adaptive.layout/ThreePaneMotion.Companion.NoMotion.<get-NoMotion>|<get-NoMotion>(){}[0]
}
}
final class androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies|null[0]
constructor <init>(androidx.compose.material3.adaptive.layout/AdaptStrategy, androidx.compose.material3.adaptive.layout/AdaptStrategy, androidx.compose.material3.adaptive.layout/AdaptStrategy) // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies.<init>|<init>(androidx.compose.material3.adaptive.layout.AdaptStrategy;androidx.compose.material3.adaptive.layout.AdaptStrategy;androidx.compose.material3.adaptive.layout.AdaptStrategy){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies.equals|equals(kotlin.Any?){}[0]
final fun get(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole): androidx.compose.material3.adaptive.layout/AdaptStrategy // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies.get|get(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies.hashCode|hashCode(){}[0]
}
final class androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder : androidx.compose.material3.adaptive.layout/PaneScaffoldHorizontalOrder<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole> { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder|null[0]
final val size // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.size|{}size[0]
final fun <get-size>(): kotlin/Int // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.size.<get-size>|<get-size>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.equals|equals(kotlin.Any?){}[0]
final fun forEach(kotlin/Function1<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.forEach|forEach(kotlin.Function1<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole,kotlin.Unit>){}[0]
final fun forEachIndexed(kotlin/Function2<kotlin/Int, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.forEachIndexed|forEachIndexed(kotlin.Function2<kotlin.Int,androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole,kotlin.Unit>){}[0]
final fun forEachIndexedReversed(kotlin/Function2<kotlin/Int, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.forEachIndexedReversed|forEachIndexedReversed(kotlin.Function2<kotlin.Int,androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole,kotlin.Unit>){}[0]
final fun get(kotlin/Int): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.get|get(kotlin.Int){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.hashCode|hashCode(){}[0]
final fun indexOf(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole): kotlin/Int // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder.indexOf|indexOf(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole){}[0]
}
final class androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope|null[0]
final val modifier // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.modifier|{}modifier[0]
final fun <get-modifier>(): androidx.compose.ui/Modifier // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.modifier.<get-modifier>|<get-modifier>(){}[0]
final val paneExpansionDragHandle // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.paneExpansionDragHandle|{}paneExpansionDragHandle[0]
final fun <get-paneExpansionDragHandle>(): kotlin/Function3<androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.paneExpansionDragHandle.<get-paneExpansionDragHandle>|<get-paneExpansionDragHandle>(){}[0]
final val paneExpansionState // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.paneExpansionState|{}paneExpansionState[0]
final fun <get-paneExpansionState>(): androidx.compose.material3.adaptive.layout/PaneExpansionState // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.paneExpansionState.<get-paneExpansionState>|<get-paneExpansionState>(){}[0]
final val paneOrder // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.paneOrder|{}paneOrder[0]
final fun <get-paneOrder>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldHorizontalOrder // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.paneOrder.<get-paneOrder>|<get-paneOrder>(){}[0]
final val primaryPane // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.primaryPane|{}primaryPane[0]
final fun <get-primaryPane>(): kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit> // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.primaryPane.<get-primaryPane>|<get-primaryPane>(){}[0]
final val scaffoldDirective // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.scaffoldDirective|{}scaffoldDirective[0]
final fun <get-scaffoldDirective>(): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.scaffoldDirective.<get-scaffoldDirective>|<get-scaffoldDirective>(){}[0]
final val scaffoldState // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.scaffoldState|{}scaffoldState[0]
final fun <get-scaffoldState>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.scaffoldState.<get-scaffoldState>|<get-scaffoldState>(){}[0]
final val secondaryPane // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.secondaryPane|{}secondaryPane[0]
final fun <get-secondaryPane>(): kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit> // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.secondaryPane.<get-secondaryPane>|<get-secondaryPane>(){}[0]
final val tertiaryPane // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.tertiaryPane|{}tertiaryPane[0]
final fun <get-tertiaryPane>(): kotlin/Function2<androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverrideScope.tertiaryPane.<get-tertiaryPane>|<get-tertiaryPane>(){}[0]
}
final class androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue : androidx.compose.material3.adaptive.layout/PaneExpansionStateKeyProvider, androidx.compose.material3.adaptive.layout/PaneScaffoldValue<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole> { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue|null[0]
constructor <init>(androidx.compose.material3.adaptive.layout/PaneAdaptedValue, androidx.compose.material3.adaptive.layout/PaneAdaptedValue, androidx.compose.material3.adaptive.layout/PaneAdaptedValue) // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.<init>|<init>(androidx.compose.material3.adaptive.layout.PaneAdaptedValue;androidx.compose.material3.adaptive.layout.PaneAdaptedValue;androidx.compose.material3.adaptive.layout.PaneAdaptedValue){}[0]
final val paneExpansionStateKey // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.paneExpansionStateKey|{}paneExpansionStateKey[0]
final fun <get-paneExpansionStateKey>(): androidx.compose.material3.adaptive.layout/PaneExpansionStateKey // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.paneExpansionStateKey.<get-paneExpansionStateKey>|<get-paneExpansionStateKey>(){}[0]
final val primary // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.primary|{}primary[0]
final fun <get-primary>(): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.primary.<get-primary>|<get-primary>(){}[0]
final val secondary // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.secondary|{}secondary[0]
final fun <get-secondary>(): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.secondary.<get-secondary>|<get-secondary>(){}[0]
final val tertiary // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.tertiary|{}tertiary[0]
final fun <get-tertiary>(): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.tertiary.<get-tertiary>|<get-tertiary>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.equals|equals(kotlin.Any?){}[0]
final fun get(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole): androidx.compose.material3.adaptive.layout/PaneAdaptedValue // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.get|get(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue.toString|toString(){}[0]
}
final value class androidx.compose.material3.adaptive.layout/HingePolicy { // androidx.compose.material3.adaptive.layout/HingePolicy|null[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/HingePolicy.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/HingePolicy.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/HingePolicy.toString|toString(){}[0]
final object Companion { // androidx.compose.material3.adaptive.layout/HingePolicy.Companion|null[0]
final val AlwaysAvoid // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.AlwaysAvoid|{}AlwaysAvoid[0]
final fun <get-AlwaysAvoid>(): androidx.compose.material3.adaptive.layout/HingePolicy // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.AlwaysAvoid.<get-AlwaysAvoid>|<get-AlwaysAvoid>(){}[0]
final val AvoidOccluding // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.AvoidOccluding|{}AvoidOccluding[0]
final fun <get-AvoidOccluding>(): androidx.compose.material3.adaptive.layout/HingePolicy // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.AvoidOccluding.<get-AvoidOccluding>|<get-AvoidOccluding>(){}[0]
final val AvoidSeparating // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.AvoidSeparating|{}AvoidSeparating[0]
final fun <get-AvoidSeparating>(): androidx.compose.material3.adaptive.layout/HingePolicy // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.AvoidSeparating.<get-AvoidSeparating>|<get-AvoidSeparating>(){}[0]
final val NeverAvoid // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.NeverAvoid|{}NeverAvoid[0]
final fun <get-NeverAvoid>(): androidx.compose.material3.adaptive.layout/HingePolicy // androidx.compose.material3.adaptive.layout/HingePolicy.Companion.NeverAvoid.<get-NeverAvoid>|<get-NeverAvoid>(){}[0]
}
}
sealed class androidx.compose.material3.adaptive.layout/PaneExpansionAnchor { // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor|null[0]
abstract val description // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.description|{}description[0]
abstract fun <get-description>(androidx.compose.runtime/Composer?, kotlin/Int): kotlin/String // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.description.<get-description>|<get-description>(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
abstract class Offset : androidx.compose.material3.adaptive.layout/PaneExpansionAnchor { // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset|null[0]
final val direction // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.direction|{}direction[0]
final fun <get-direction>(): androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.direction.<get-direction>|<get-direction>(){}[0]
final val offset // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.offset|{}offset[0]
final fun <get-offset>(): androidx.compose.ui.unit/Dp // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.offset.<get-offset>|<get-offset>(){}[0]
open fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.equals|equals(kotlin.Any?){}[0]
open fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.hashCode|hashCode(){}[0]
open fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.toString|toString(){}[0]
final value class Direction { // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction|null[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.toString|toString(){}[0]
final object Companion { // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.Companion|null[0]
final val FromEnd // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.Companion.FromEnd|{}FromEnd[0]
final fun <get-FromEnd>(): androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.Companion.FromEnd.<get-FromEnd>|<get-FromEnd>(){}[0]
final val FromStart // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.Companion.FromStart|{}FromStart[0]
final fun <get-FromStart>(): androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Direction.Companion.FromStart.<get-FromStart>|<get-FromStart>(){}[0]
}
}
final object Companion { // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Companion|null[0]
final fun fromEnd(androidx.compose.ui.unit/Dp): androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Companion.fromEnd|fromEnd(androidx.compose.ui.unit.Dp){}[0]
final fun fromStart(androidx.compose.ui.unit/Dp): androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Offset.Companion.fromStart|fromStart(androidx.compose.ui.unit.Dp){}[0]
}
}
final class Proportion : androidx.compose.material3.adaptive.layout/PaneExpansionAnchor { // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion|null[0]
constructor <init>(kotlin/Float) // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.<init>|<init>(kotlin.Float){}[0]
final val description // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.description|{}description[0]
final fun <get-description>(androidx.compose.runtime/Composer?, kotlin/Int): kotlin/String // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.description.<get-description>|<get-description>(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
final val proportion // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.proportion|{}proportion[0]
final fun <get-proportion>(): kotlin/Float // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.proportion.<get-proportion>|<get-proportion>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.layout/PaneExpansionAnchor.Proportion.toString|toString(){}[0]
}
}
sealed class androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState { // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState|null[0]
abstract val currentState // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.currentState|{}currentState[0]
abstract fun <get-currentState>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.currentState.<get-currentState>|<get-currentState>(){}[0]
abstract val isPredictiveBackInProgress // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.isPredictiveBackInProgress|{}isPredictiveBackInProgress[0]
abstract fun <get-isPredictiveBackInProgress>(): kotlin/Boolean // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.isPredictiveBackInProgress.<get-isPredictiveBackInProgress>|<get-isPredictiveBackInProgress>(){}[0]
abstract val progressFraction // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.progressFraction|{}progressFraction[0]
abstract fun <get-progressFraction>(): kotlin/Float // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.progressFraction.<get-progressFraction>|<get-progressFraction>(){}[0]
abstract val targetState // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.targetState|{}targetState[0]
abstract fun <get-targetState>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState.targetState.<get-targetState>|<get-targetState>(){}[0]
}
final object androidx.compose.material3.adaptive.layout/LevitatedPaneScrimDefaults { // androidx.compose.material3.adaptive.layout/LevitatedPaneScrimDefaults|null[0]
final val Color // androidx.compose.material3.adaptive.layout/LevitatedPaneScrimDefaults.Color|{}Color[0]
final fun <get-Color>(): androidx.compose.ui.graphics/Color // androidx.compose.material3.adaptive.layout/LevitatedPaneScrimDefaults.Color.<get-Color>|<get-Color>(){}[0]
}
final object androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldDefaults { // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldDefaults|null[0]
final fun adaptStrategies(androidx.compose.material3.adaptive.layout/AdaptStrategy = ..., androidx.compose.material3.adaptive.layout/AdaptStrategy = ..., androidx.compose.material3.adaptive.layout/AdaptStrategy = ...): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldDefaults.adaptStrategies|adaptStrategies(androidx.compose.material3.adaptive.layout.AdaptStrategy;androidx.compose.material3.adaptive.layout.AdaptStrategy;androidx.compose.material3.adaptive.layout.AdaptStrategy){}[0]
}
final object androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole { // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole|null[0]
final val Detail // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole.Detail|{}Detail[0]
final fun <get-Detail>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole.Detail.<get-Detail>|<get-Detail>(){}[0]
final val Extra // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole.Extra|{}Extra[0]
final fun <get-Extra>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole.Extra.<get-Extra>|<get-Extra>(){}[0]
final val List // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole.List|{}List[0]
final fun <get-List>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffoldRole.List.<get-List>|<get-List>(){}[0]
}
final object androidx.compose.material3.adaptive.layout/PaneMotionDefaults { // androidx.compose.material3.adaptive.layout/PaneMotionDefaults|null[0]
final val AnimationSpec // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.AnimationSpec|{}AnimationSpec[0]
final fun <get-AnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntRect> // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.AnimationSpec.<get-AnimationSpec>|<get-AnimationSpec>(){}[0]
final val DelayedAnimationSpec // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.DelayedAnimationSpec|{}DelayedAnimationSpec[0]
final fun <get-DelayedAnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntRect> // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.DelayedAnimationSpec.<get-DelayedAnimationSpec>|<get-DelayedAnimationSpec>(){}[0]
final val DelayedOffsetAnimationSpec // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.DelayedOffsetAnimationSpec|{}DelayedOffsetAnimationSpec[0]
final fun <get-DelayedOffsetAnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntOffset> // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.DelayedOffsetAnimationSpec.<get-DelayedOffsetAnimationSpec>|<get-DelayedOffsetAnimationSpec>(){}[0]
final val DelayedSizeAnimationSpec // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.DelayedSizeAnimationSpec|{}DelayedSizeAnimationSpec[0]
final fun <get-DelayedSizeAnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntSize> // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.DelayedSizeAnimationSpec.<get-DelayedSizeAnimationSpec>|<get-DelayedSizeAnimationSpec>(){}[0]
final val OffsetAnimationSpec // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.OffsetAnimationSpec|{}OffsetAnimationSpec[0]
final fun <get-OffsetAnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntOffset> // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.OffsetAnimationSpec.<get-OffsetAnimationSpec>|<get-OffsetAnimationSpec>(){}[0]
final val SizeAnimationSpec // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.SizeAnimationSpec|{}SizeAnimationSpec[0]
final fun <get-SizeAnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntSize> // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.SizeAnimationSpec.<get-SizeAnimationSpec>|<get-SizeAnimationSpec>(){}[0]
final val VisibilityAnimationSpec // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.VisibilityAnimationSpec|{}VisibilityAnimationSpec[0]
final fun <get-VisibilityAnimationSpec>(): androidx.compose.animation.core/FiniteAnimationSpec<kotlin/Float> // androidx.compose.material3.adaptive.layout/PaneMotionDefaults.VisibilityAnimationSpec.<get-VisibilityAnimationSpec>|<get-VisibilityAnimationSpec>(){}[0]
}
final object androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldDefaults { // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldDefaults|null[0]
final fun adaptStrategies(androidx.compose.material3.adaptive.layout/AdaptStrategy = ..., androidx.compose.material3.adaptive.layout/AdaptStrategy = ..., androidx.compose.material3.adaptive.layout/AdaptStrategy = ...): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldDefaults.adaptStrategies|adaptStrategies(androidx.compose.material3.adaptive.layout.AdaptStrategy;androidx.compose.material3.adaptive.layout.AdaptStrategy;androidx.compose.material3.adaptive.layout.AdaptStrategy){}[0]
}
final object androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole { // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole|null[0]
final val Extra // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole.Extra|{}Extra[0]
final fun <get-Extra>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole.Extra.<get-Extra>|<get-Extra>(){}[0]
final val Main // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole.Main|{}Main[0]
final fun <get-Main>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole.Main.<get-Main>|<get-Main>(){}[0]
final val Supporting // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole.Supporting|{}Supporting[0]
final fun <get-Supporting>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole // androidx.compose.material3.adaptive.layout/SupportingPaneScaffoldRole.Supporting.<get-Supporting>|<get-Supporting>(){}[0]
}
final val androidx.compose.material3.adaptive.layout/LocalAnimatedPaneOverride // androidx.compose.material3.adaptive.layout/LocalAnimatedPaneOverride|{}LocalAnimatedPaneOverride[0]
final fun <get-LocalAnimatedPaneOverride>(): androidx.compose.runtime/ProvidableCompositionLocal<androidx.compose.material3.adaptive.layout/AnimatedPaneOverride> // androidx.compose.material3.adaptive.layout/LocalAnimatedPaneOverride.<get-LocalAnimatedPaneOverride>|<get-LocalAnimatedPaneOverride>(){}[0]
final val androidx.compose.material3.adaptive.layout/LocalThreePaneScaffoldOverride // androidx.compose.material3.adaptive.layout/LocalThreePaneScaffoldOverride|{}LocalThreePaneScaffoldOverride[0]
final fun <get-LocalThreePaneScaffoldOverride>(): androidx.compose.runtime/ProvidableCompositionLocal<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldOverride> // androidx.compose.material3.adaptive.layout/LocalThreePaneScaffoldOverride.<get-LocalThreePaneScaffoldOverride>|<get-LocalThreePaneScaffoldOverride>(){}[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Levitate$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Levitate$stableprop|#static{}androidx_compose_material3_adaptive_layout_AdaptStrategy_Levitate$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Reflow$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Reflow$stableprop|#static{}androidx_compose_material3_adaptive_layout_AdaptStrategy_Reflow$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AnimatedPaneOverrideScope$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AnimatedPaneOverrideScope$stableprop|#static{}androidx_compose_material3_adaptive_layout_AnimatedPaneOverrideScope$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_DragToResizeState$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_DragToResizeState$stableprop|#static{}androidx_compose_material3_adaptive_layout_DragToResizeState$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_LevitatedPaneScrimDefaults$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_LevitatedPaneScrimDefaults$stableprop|#static{}androidx_compose_material3_adaptive_layout_LevitatedPaneScrimDefaults$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldDefaults$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldDefaults$stableprop|#static{}androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldDefaults$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldRole$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldRole$stableprop|#static{}androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldRole$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_MutableThreePaneScaffoldState$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_MutableThreePaneScaffoldState$stableprop|#static{}androidx_compose_material3_adaptive_layout_MutableThreePaneScaffoldState$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Levitated$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Levitated$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Levitated$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Reflowed$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Reflowed$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Reflowed$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneExpansionAnchor$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Offset$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Offset$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Offset$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Proportion$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Proportion$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Proportion$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionState$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionState$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneExpansionState$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionData$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionData$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneMotionData$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionDefaults$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionDefaults$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneMotionDefaults$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneScaffoldDirective$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneScaffoldDirective$stableprop|#static{}androidx_compose_material3_adaptive_layout_PaneScaffoldDirective$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldDefaults$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldDefaults$stableprop|#static{}androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldDefaults$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldRole$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldRole$stableprop|#static{}androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldRole$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneMotion$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneMotion$stableprop|#static{}androidx_compose_material3_adaptive_layout_ThreePaneMotion$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldAdaptStrategies$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldAdaptStrategies$stableprop|#static{}androidx_compose_material3_adaptive_layout_ThreePaneScaffoldAdaptStrategies$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldDestinationItem$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldDestinationItem$stableprop|#static{}androidx_compose_material3_adaptive_layout_ThreePaneScaffoldDestinationItem$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldHorizontalOrder$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldHorizontalOrder$stableprop|#static{}androidx_compose_material3_adaptive_layout_ThreePaneScaffoldHorizontalOrder$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldOverrideScope$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldOverrideScope$stableprop|#static{}androidx_compose_material3_adaptive_layout_ThreePaneScaffoldOverrideScope$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldState$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldState$stableprop|#static{}androidx_compose_material3_adaptive_layout_ThreePaneScaffoldState$stableprop[0]
final val androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldValue$stableprop // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldValue$stableprop|#static{}androidx_compose_material3_adaptive_layout_ThreePaneScaffoldValue$stableprop[0]
final fun (androidx.compose.material3.adaptive.layout/PaneExpansionState).androidx.compose.material3.adaptive.layout/defaultDragHandleSemantics(androidx.compose.runtime/Composer?, kotlin/Int): kotlin/Function1<androidx.compose.ui.semantics/SemanticsPropertyReceiver, kotlin/Unit> // androidx.compose.material3.adaptive.layout/defaultDragHandleSemantics|defaultDragHandleSemantics@androidx.compose.material3.adaptive.layout.PaneExpansionState(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
final fun <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole, #B: androidx.compose.material3.adaptive.layout/PaneScaffoldValue<#A>> (androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldPaneScope<#A, #B>).androidx.compose.material3.adaptive.layout/AnimatedPane(androidx.compose.ui/Modifier?, androidx.compose.animation/EnterTransition?, androidx.compose.animation/ExitTransition?, androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntRect>?, kotlin/Function3<androidx.compose.material3.adaptive.layout/AnimatedPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.compose.material3.adaptive.layout/AnimatedPane|AnimatedPane@androidx.compose.material3.adaptive.layout.ExtendedPaneScaffoldPaneScope<0:0,0:1>(androidx.compose.ui.Modifier?;androidx.compose.animation.EnterTransition?;androidx.compose.animation.ExitTransition?;androidx.compose.animation.core.FiniteAnimationSpec<androidx.compose.ui.unit.IntRect>?;kotlin.Function3<androidx.compose.material3.adaptive.layout.AnimatedPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<androidx.compose.material3.adaptive.layout.PaneScaffoldRole>;1§<androidx.compose.material3.adaptive.layout.PaneScaffoldValue<0:0>>}[0]
final fun <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole, #B: androidx.compose.material3.adaptive.layout/PaneScaffoldValue<#A>> (androidx.compose.material3.adaptive.layout/ExtendedPaneScaffoldPaneScope<#A, #B>).androidx.compose.material3.adaptive.layout/AnimatedPane(androidx.compose.ui/Modifier?, androidx.compose.animation/EnterTransition?, androidx.compose.animation/ExitTransition?, androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntRect>?, kotlin/Function3<androidx.compose.material3.adaptive.layout/DragToResizeState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, kotlin/Function3<androidx.compose.material3.adaptive.layout/AnimatedPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.compose.material3.adaptive.layout/AnimatedPane|AnimatedPane@androidx.compose.material3.adaptive.layout.ExtendedPaneScaffoldPaneScope<0:0,0:1>(androidx.compose.ui.Modifier?;androidx.compose.animation.EnterTransition?;androidx.compose.animation.ExitTransition?;androidx.compose.animation.core.FiniteAnimationSpec<androidx.compose.ui.unit.IntRect>?;kotlin.Function3<androidx.compose.material3.adaptive.layout.DragToResizeState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;kotlin.Function3<androidx.compose.material3.adaptive.layout.AnimatedPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<androidx.compose.material3.adaptive.layout.PaneScaffoldRole>;1§<androidx.compose.material3.adaptive.layout.PaneScaffoldValue<0:0>>}[0]
final fun <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> (androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider<#A>).androidx.compose.material3.adaptive.layout/calculateDefaultEnterTransition(#A): androidx.compose.animation/EnterTransition // androidx.compose.material3.adaptive.layout/calculateDefaultEnterTransition|calculateDefaultEnterTransition@androidx.compose.material3.adaptive.layout.PaneScaffoldMotionDataProvider<0:0>(0:0){0§<androidx.compose.material3.adaptive.layout.PaneScaffoldRole>}[0]
final fun <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> (androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider<#A>).androidx.compose.material3.adaptive.layout/calculateDefaultExitTransition(#A): androidx.compose.animation/ExitTransition // androidx.compose.material3.adaptive.layout/calculateDefaultExitTransition|calculateDefaultExitTransition@androidx.compose.material3.adaptive.layout.PaneScaffoldMotionDataProvider<0:0>(0:0){0§<androidx.compose.material3.adaptive.layout.PaneScaffoldRole>}[0]
final fun androidx.compose.material3.adaptive.layout/LevitatedPaneScrim(androidx.compose.ui/Modifier?, kotlin/Function0<kotlin/Unit>?, androidx.compose.ui.graphics/Color, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.compose.material3.adaptive.layout/LevitatedPaneScrim|LevitatedPaneScrim(androidx.compose.ui.Modifier?;kotlin.Function0<kotlin.Unit>?;androidx.compose.ui.graphics.Color;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/ListDetailPaneScaffold(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, androidx.compose.ui/Modifier?, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffold|ListDetailPaneScaffold(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldState;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.ui.Modifier?;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/ListDetailPaneScaffold(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, androidx.compose.ui/Modifier?, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.compose.material3.adaptive.layout/ListDetailPaneScaffold|ListDetailPaneScaffold(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.ui.Modifier?;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/SupportingPaneScaffold(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, androidx.compose.ui/Modifier?, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.compose.material3.adaptive.layout/SupportingPaneScaffold|SupportingPaneScaffold(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldState;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.ui.Modifier?;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/SupportingPaneScaffold(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>, androidx.compose.ui/Modifier?, kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldPaneScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.compose.material3.adaptive.layout/SupportingPaneScaffold|SupportingPaneScaffold(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>;androidx.compose.ui.Modifier?;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Levitate$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Levitate$stableprop_getter|androidx_compose_material3_adaptive_layout_AdaptStrategy_Levitate$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Reflow$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AdaptStrategy_Reflow$stableprop_getter|androidx_compose_material3_adaptive_layout_AdaptStrategy_Reflow$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AnimatedPaneOverrideScope$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_AnimatedPaneOverrideScope$stableprop_getter|androidx_compose_material3_adaptive_layout_AnimatedPaneOverrideScope$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_DragToResizeState$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_DragToResizeState$stableprop_getter|androidx_compose_material3_adaptive_layout_DragToResizeState$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_LevitatedPaneScrimDefaults$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_LevitatedPaneScrimDefaults$stableprop_getter|androidx_compose_material3_adaptive_layout_LevitatedPaneScrimDefaults$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldDefaults$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldDefaults$stableprop_getter|androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldDefaults$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldRole$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldRole$stableprop_getter|androidx_compose_material3_adaptive_layout_ListDetailPaneScaffoldRole$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_MutableThreePaneScaffoldState$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_MutableThreePaneScaffoldState$stableprop_getter|androidx_compose_material3_adaptive_layout_MutableThreePaneScaffoldState$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Levitated$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Levitated$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Levitated$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Reflowed$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Reflowed$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneAdaptedValue_Reflowed$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneExpansionAnchor$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Offset$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Offset$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Offset$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Proportion$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Proportion$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneExpansionAnchor_Proportion$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionState$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneExpansionState$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneExpansionState$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionData$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionData$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneMotionData$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionDefaults$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneMotionDefaults$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneMotionDefaults$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneScaffoldDirective$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_PaneScaffoldDirective$stableprop_getter|androidx_compose_material3_adaptive_layout_PaneScaffoldDirective$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldDefaults$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldDefaults$stableprop_getter|androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldDefaults$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldRole$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldRole$stableprop_getter|androidx_compose_material3_adaptive_layout_SupportingPaneScaffoldRole$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneMotion$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneMotion$stableprop_getter|androidx_compose_material3_adaptive_layout_ThreePaneMotion$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldAdaptStrategies$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldAdaptStrategies$stableprop_getter|androidx_compose_material3_adaptive_layout_ThreePaneScaffoldAdaptStrategies$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldDestinationItem$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldDestinationItem$stableprop_getter|androidx_compose_material3_adaptive_layout_ThreePaneScaffoldDestinationItem$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldHorizontalOrder$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldHorizontalOrder$stableprop_getter|androidx_compose_material3_adaptive_layout_ThreePaneScaffoldHorizontalOrder$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldOverrideScope$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldOverrideScope$stableprop_getter|androidx_compose_material3_adaptive_layout_ThreePaneScaffoldOverrideScope$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldState$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldState$stableprop_getter|androidx_compose_material3_adaptive_layout_ThreePaneScaffoldState$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldValue$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.layout/androidx_compose_material3_adaptive_layout_ThreePaneScaffoldValue$stableprop_getter|androidx_compose_material3_adaptive_layout_ThreePaneScaffoldValue$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.layout/calculatePaneScaffoldDirective(androidx.compose.material3.adaptive/WindowAdaptiveInfo, androidx.compose.material3.adaptive.layout/HingePolicy = ...): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.layout/calculatePaneScaffoldDirective|calculatePaneScaffoldDirective(androidx.compose.material3.adaptive.WindowAdaptiveInfo;androidx.compose.material3.adaptive.layout.HingePolicy){}[0]
final fun androidx.compose.material3.adaptive.layout/calculatePaneScaffoldDirectiveWithTwoPanesOnMediumWidth(androidx.compose.material3.adaptive/WindowAdaptiveInfo, androidx.compose.material3.adaptive.layout/HingePolicy = ...): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.layout/calculatePaneScaffoldDirectiveWithTwoPanesOnMediumWidth|calculatePaneScaffoldDirectiveWithTwoPanesOnMediumWidth(androidx.compose.material3.adaptive.WindowAdaptiveInfo;androidx.compose.material3.adaptive.layout.HingePolicy){}[0]
final fun androidx.compose.material3.adaptive.layout/calculateThreePaneScaffoldValue(kotlin/Int, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem<*>?, kotlin/Int = ...): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.layout/calculateThreePaneScaffoldValue|calculateThreePaneScaffoldValue(kotlin.Int;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldDestinationItem<*>?;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/calculateThreePaneScaffoldValue(kotlin/Int, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies, kotlin.collections/List<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem<*>>, kotlin/Int = ...): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.layout/calculateThreePaneScaffoldValue|calculateThreePaneScaffoldValue(kotlin.Int;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies;kotlin.collections.List<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldDestinationItem<*>>;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/rememberDragToResizeState(androidx.compose.material3.adaptive.layout/DockedEdge, androidx.compose.ui.unit/Dp, androidx.compose.ui.unit/Dp, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.layout/DragToResizeState // androidx.compose.material3.adaptive.layout/rememberDragToResizeState|rememberDragToResizeState(androidx.compose.material3.adaptive.layout.DockedEdge;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/rememberPaneExpansionState(androidx.compose.material3.adaptive.layout/PaneExpansionStateKey?, kotlin.collections/List<androidx.compose.material3.adaptive.layout/PaneExpansionAnchor>?, kotlin/Int, androidx.compose.animation.core/FiniteAnimationSpec<kotlin/Float>?, androidx.compose.foundation.gestures/FlingBehavior?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.layout/PaneExpansionState // androidx.compose.material3.adaptive.layout/rememberPaneExpansionState|rememberPaneExpansionState(androidx.compose.material3.adaptive.layout.PaneExpansionStateKey?;kotlin.collections.List<androidx.compose.material3.adaptive.layout.PaneExpansionAnchor>?;kotlin.Int;androidx.compose.animation.core.FiniteAnimationSpec<kotlin.Float>?;androidx.compose.foundation.gestures.FlingBehavior?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/rememberPaneExpansionState(androidx.compose.material3.adaptive.layout/PaneExpansionStateKey?, kotlin.collections/List<androidx.compose.material3.adaptive.layout/PaneExpansionAnchor>?, kotlin/Int, androidx.compose.animation.core/FiniteAnimationSpec<kotlin/Float>?, androidx.compose.foundation.gestures/FlingBehavior?, kotlin/Function1<kotlin/Float, kotlin/Float>?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.layout/PaneExpansionState // androidx.compose.material3.adaptive.layout/rememberPaneExpansionState|rememberPaneExpansionState(androidx.compose.material3.adaptive.layout.PaneExpansionStateKey?;kotlin.collections.List<androidx.compose.material3.adaptive.layout.PaneExpansionAnchor>?;kotlin.Int;androidx.compose.animation.core.FiniteAnimationSpec<kotlin.Float>?;androidx.compose.foundation.gestures.FlingBehavior?;kotlin.Function1<kotlin.Float,kotlin.Float>?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/rememberPaneExpansionState(androidx.compose.material3.adaptive.layout/PaneExpansionStateKeyProvider, kotlin.collections/List<androidx.compose.material3.adaptive.layout/PaneExpansionAnchor>?, kotlin/Int, androidx.compose.animation.core/FiniteAnimationSpec<kotlin/Float>?, androidx.compose.foundation.gestures/FlingBehavior?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.layout/PaneExpansionState // androidx.compose.material3.adaptive.layout/rememberPaneExpansionState|rememberPaneExpansionState(androidx.compose.material3.adaptive.layout.PaneExpansionStateKeyProvider;kotlin.collections.List<androidx.compose.material3.adaptive.layout.PaneExpansionAnchor>?;kotlin.Int;androidx.compose.animation.core.FiniteAnimationSpec<kotlin.Float>?;androidx.compose.foundation.gestures.FlingBehavior?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.layout/rememberPaneExpansionState(androidx.compose.material3.adaptive.layout/PaneExpansionStateKeyProvider, kotlin.collections/List<androidx.compose.material3.adaptive.layout/PaneExpansionAnchor>?, kotlin/Int, androidx.compose.animation.core/FiniteAnimationSpec<kotlin/Float>?, androidx.compose.foundation.gestures/FlingBehavior?, kotlin/Function1<kotlin/Float, kotlin/Float>?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.layout/PaneExpansionState // androidx.compose.material3.adaptive.layout/rememberPaneExpansionState|rememberPaneExpansionState(androidx.compose.material3.adaptive.layout.PaneExpansionStateKeyProvider;kotlin.collections.List<androidx.compose.material3.adaptive.layout.PaneExpansionAnchor>?;kotlin.Int;androidx.compose.animation.core.FiniteAnimationSpec<kotlin.Float>?;androidx.compose.foundation.gestures.FlingBehavior?;kotlin.Function1<kotlin.Float,kotlin.Float>?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final inline fun <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> (androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider<#A>).androidx.compose.material3.adaptive.layout/forEach(kotlin/Function2<#A, androidx.compose.material3.adaptive.layout/PaneMotionData, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/forEach|forEach@androidx.compose.material3.adaptive.layout.PaneScaffoldMotionDataProvider<0:0>(kotlin.Function2<0:0,androidx.compose.material3.adaptive.layout.PaneMotionData,kotlin.Unit>){0§<androidx.compose.material3.adaptive.layout.PaneScaffoldRole>}[0]
final inline fun <#A: androidx.compose.material3.adaptive.layout/PaneScaffoldRole> (androidx.compose.material3.adaptive.layout/PaneScaffoldMotionDataProvider<#A>).androidx.compose.material3.adaptive.layout/forEachReversed(kotlin/Function2<#A, androidx.compose.material3.adaptive.layout/PaneMotionData, kotlin/Unit>) // androidx.compose.material3.adaptive.layout/forEachReversed|forEachReversed@androidx.compose.material3.adaptive.layout.PaneScaffoldMotionDataProvider<0:0>(kotlin.Function2<0:0,androidx.compose.material3.adaptive.layout.PaneMotionData,kotlin.Unit>){0§<androidx.compose.material3.adaptive.layout.PaneScaffoldRole>}[0]
@@ -0,0 +1,52 @@
// :adaptive-layout - androidx.compose.material3.adaptive.layout.* (ListDetailPaneScaffold,
// SupportingPaneScaffold, ThreePaneScaffold + pane motion / expansion machinery), vendored
// VERBATIM from JetBrains/compose-multiplatform-core into src/vendor/. See :adaptive for why
// upstream ships no linux / mingw artifact.
//
// Upstream's `skikoMain` carries the l10n translation tables (~75 files) plus the Strings and
// drag-handle actuals; for this port every native target is a skiko target, so it lands in
// src/vendor/native/ alongside upstream's own nativeMain actuals. The two sets actualise
// disjoint expects, so they coexist in one source set.
//
// Provenance = compose-fork.txt + scripts/compose-fork/compose.properties. Never hand-edit
// src/vendor - change the manifest + `python scripts/compose-fork/sync.py compose/material3/adaptive/adaptive-layout`.
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.plugin.compose)
}
val vHostSupportsMingw = rootProject.extra["vHostSupportsMingw"] as Boolean
kotlin {
linuxArm64(); linuxX64(); macosArm64(); if (vHostSupportsMingw) mingwX64()
applyDefaultHierarchyTemplate()
sourceSets {
commonMain {
dependencies {
api(project(":compose:material3:adaptive:adaptive"))
api(project(":compose:ui:ui"))
api(project(":compose:animation:animation-core"))
api(libs.androidx.collection)
implementation(project(":compose:animation:animation"))
implementation(project(":compose:foundation:foundation"))
implementation(project(":compose:foundation:foundation-layout"))
implementation(project(":compose:ui:ui-geometry"))
implementation(libs.androidx.window.core)
}
kotlin.srcDir("src/vendor/common/kotlin")
}
nativeMain {
kotlin.srcDir("src/vendor/native/kotlin")
}
}
compilerOptions {
freeCompilerArgs.addAll(
"-Xexpect-actual-classes",
"-opt-in=androidx.compose.ui.ExperimentalComposeUiApi",
"-opt-in=androidx.compose.ui.InternalComposeUiApi",
"-opt-in=androidx.compose.animation.ExperimentalAnimationApi",
"-opt-in=androidx.compose.animation.ExperimentalSharedTransitionApi",
"-opt-in=androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi",
)
}
}
@@ -0,0 +1,133 @@
SET_REPO=https://github.com/JetBrains/compose-multiplatform-core@<COMPOSE_CORE_REF>
SET_FOLDER=compose/material3/adaptive/adaptive-layout/src
commonMain/kotlin/ -> src/vendor/common/kotlin/
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/AdaptStrategy.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/AdaptStrategy.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/AnimateBoundsModifier.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/AnimateBoundsModifier.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/AnimateModifierUtils.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/AnimateModifierUtils.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/AnimateWithFadingModifier.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/AnimateWithFadingModifier.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/DragToResizeState.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/DragToResizeState.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/LevitatedPaneScrim.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/LevitatedPaneScrim.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ListDetailPaneScaffold.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ListDetailPaneScaffold.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/Pane.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/Pane.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneAdaptedValue.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneAdaptedValue.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionDraggableModifier.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionDraggableModifier.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionState.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionState.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneMargins.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneMargins.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneMotion.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneMotion.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldDirective.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldDirective.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldHorizontalOrder.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldHorizontalOrder.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldRole.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldRole.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldValue.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffoldValue.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/PredictiveBackScaleState.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/PredictiveBackScaleState.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/SupportingPaneScaffold.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/SupportingPaneScaffold.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneMotion.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneMotion.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffold.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffold.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldAdaptStrategies.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldAdaptStrategies.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldDestinationItem.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldDestinationItem.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldHorizontalOrder.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldHorizontalOrder.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldScope.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldScope.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldState.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldState.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldValue.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/ThreePaneScaffoldValue.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/WindowSizeClassHelper.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/WindowSizeClassHelper.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/internal/DelegableModifier.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/internal/DelegableModifier.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/internal/RememberUtils.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/internal/RememberUtils.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/internal/Strings.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/internal/Strings.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/layout/internal/System.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/layout/internal/System.kt
skikoMain/kotlin/ -> src/vendor/native/kotlin/
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Af.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Af.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Am.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Am.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ar.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ar.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/As.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/As.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Az.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Az.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Be.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Be.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Bg.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Bg.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Bn.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Bn.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Bs.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Bs.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ca.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ca.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Cs.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Cs.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Da.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Da.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/De.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/De.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/El.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/El.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/En.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/En.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Es.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Es.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Et.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Et.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Eu.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Eu.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Fa.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Fa.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Fi.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Fi.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Fr.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Fr.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Gl.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Gl.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Gu.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Gu.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Hi.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Hi.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Hr.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Hr.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Hu.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Hu.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Hy.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Hy.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/In.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/In.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Is.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Is.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/It.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/It.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Iw.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Iw.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ja.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ja.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ka.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ka.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Kk.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Kk.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Km.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Km.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Kn.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Kn.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ko.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ko.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ky.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ky.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Lo.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Lo.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Lt.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Lt.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Lv.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Lv.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Mk.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Mk.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ml.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ml.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Mn.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Mn.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Mr.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Mr.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ms.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ms.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/My.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/My.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Nb.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Nb.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ne.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ne.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Nl.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Nl.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Or.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Or.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Pa.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Pa.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Pl.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Pl.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Pt.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Pt.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ro.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ro.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ru.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ru.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Si.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Si.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Sk.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Sk.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Sl.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Sl.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Sq.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Sq.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Sr.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Sr.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Sv.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Sv.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Sw.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Sw.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ta.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ta.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Te.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Te.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Th.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Th.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Tl.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Tl.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Tr.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Tr.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Translations.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Translations.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Uk.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Uk.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Ur.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Ur.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Uz.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Uz.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Vi.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Vi.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Zh.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Zh.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/l10n/Zu.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/l10n/Zu.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionDragHandle.skiko.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionDragHandle.skiko.kt
# | skikoMain/kotlin/androidx/compose/material3/adaptive/layout/internal/Strings.skiko.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/layout/internal/Strings.skiko.kt
nativeMain/kotlin/ -> src/vendor/native/kotlin/
# | nativeMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.native.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.native.kt
# | nativeMain/kotlin/androidx/compose/material3/adaptive/layout/internal/System.native.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/layout/internal/System.native.kt
# >>> ---- DIAGNOSTIC GAPS ---- <<<<
# androidMain (2)
# | androidMain/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionDraggableModifier.android.kt -> src/vendor/android/kotlin/androidx/compose/material3/adaptive/layout/PaneExpansionDraggableModifier.android.kt
# | androidMain/kotlin/androidx/compose/material3/adaptive/layout/internal/Strings.android.kt -> src/vendor/android/kotlin/androidx/compose/material3/adaptive/layout/internal/Strings.android.kt
# jsMain (2)
# | jsMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.js.kt -> src/vendor/js/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.js.kt
# | jsMain/kotlin/androidx/compose/material3/adaptive/layout/internal/System.js.kt -> src/vendor/js/kotlin/androidx/compose/material3/adaptive/layout/internal/System.js.kt
# jvmAndAndroidMain (2)
# | jvmAndAndroidMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.jvmAndAndroid.kt -> src/vendor/jvmAndAndroid/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.jvmAndAndroid.kt
# | jvmAndAndroidMain/kotlin/androidx/compose/material3/adaptive/layout/internal/System.jvmAndAndroid.kt -> src/vendor/jvmAndAndroid/kotlin/androidx/compose/material3/adaptive/layout/internal/System.jvmAndAndroid.kt
# wasmJsMain (2)
# | wasmJsMain/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.wasm.kt -> src/vendor/wasmJs/kotlin/androidx/compose/material3/adaptive/layout/PaneScaffold.wasm.kt
# | wasmJsMain/kotlin/androidx/compose/material3/adaptive/layout/internal/System.wasm.kt -> src/vendor/wasmJs/kotlin/androidx/compose/material3/adaptive/layout/internal/System.wasm.kt
# <<< ---- DIAGNOSTIC GAPS ---- >>>>
@@ -0,0 +1,50 @@
// Klib ABI Dump
// Targets: [linuxArm64, linuxX64, macosArm64, mingwX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.compose.material3.adaptive:adaptive-navigation>
abstract interface <#A: kotlin/Any?> androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator { // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator|null[0]
abstract val currentDestination // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.currentDestination|{}currentDestination[0]
abstract fun <get-currentDestination>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem<#A>? // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.currentDestination.<get-currentDestination>|<get-currentDestination>(){}[0]
abstract val scaffoldDirective // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.scaffoldDirective|{}scaffoldDirective[0]
abstract fun <get-scaffoldDirective>(): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.scaffoldDirective.<get-scaffoldDirective>|<get-scaffoldDirective>(){}[0]
abstract val scaffoldState // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.scaffoldState|{}scaffoldState[0]
abstract fun <get-scaffoldState>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldState // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.scaffoldState.<get-scaffoldState>|<get-scaffoldState>(){}[0]
abstract val scaffoldValue // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.scaffoldValue|{}scaffoldValue[0]
abstract fun <get-scaffoldValue>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.scaffoldValue.<get-scaffoldValue>|<get-scaffoldValue>(){}[0]
abstract var isDestinationHistoryAware // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.isDestinationHistoryAware|{}isDestinationHistoryAware[0]
abstract fun <get-isDestinationHistoryAware>(): kotlin/Boolean // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.isDestinationHistoryAware.<get-isDestinationHistoryAware>|<get-isDestinationHistoryAware>(){}[0]
abstract fun <set-isDestinationHistoryAware>(kotlin/Boolean) // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.isDestinationHistoryAware.<set-isDestinationHistoryAware>|<set-isDestinationHistoryAware>(kotlin.Boolean){}[0]
abstract fun canNavigateBack(androidx.compose.material3.adaptive.navigation/BackNavigationBehavior = ...): kotlin/Boolean // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.canNavigateBack|canNavigateBack(androidx.compose.material3.adaptive.navigation.BackNavigationBehavior){}[0]
abstract fun peekPreviousScaffoldValue(androidx.compose.material3.adaptive.navigation/BackNavigationBehavior = ...): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.peekPreviousScaffoldValue|peekPreviousScaffoldValue(androidx.compose.material3.adaptive.navigation.BackNavigationBehavior){}[0]
abstract suspend fun navigateBack(androidx.compose.material3.adaptive.navigation/BackNavigationBehavior = ...): kotlin/Boolean // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.navigateBack|navigateBack(androidx.compose.material3.adaptive.navigation.BackNavigationBehavior){}[0]
abstract suspend fun navigateTo(androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, #A? = ...) // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.navigateTo|navigateTo(androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole;1:0?){}[0]
abstract suspend fun seekBack(androidx.compose.material3.adaptive.navigation/BackNavigationBehavior = ..., kotlin/Float = ...) // androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator.seekBack|seekBack(androidx.compose.material3.adaptive.navigation.BackNavigationBehavior;kotlin.Float){}[0]
}
final value class androidx.compose.material3.adaptive.navigation/BackNavigationBehavior { // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior|null[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.toString|toString(){}[0]
final object Companion { // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion|null[0]
final val PopLatest // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopLatest|{}PopLatest[0]
final fun <get-PopLatest>(): androidx.compose.material3.adaptive.navigation/BackNavigationBehavior // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopLatest.<get-PopLatest>|<get-PopLatest>(){}[0]
final val PopUntilContentChange // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopUntilContentChange|{}PopUntilContentChange[0]
final fun <get-PopUntilContentChange>(): androidx.compose.material3.adaptive.navigation/BackNavigationBehavior // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopUntilContentChange.<get-PopUntilContentChange>|<get-PopUntilContentChange>(){}[0]
final val PopUntilCurrentDestinationChange // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopUntilCurrentDestinationChange|{}PopUntilCurrentDestinationChange[0]
final fun <get-PopUntilCurrentDestinationChange>(): androidx.compose.material3.adaptive.navigation/BackNavigationBehavior // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopUntilCurrentDestinationChange.<get-PopUntilCurrentDestinationChange>|<get-PopUntilCurrentDestinationChange>(){}[0]
final val PopUntilScaffoldValueChange // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopUntilScaffoldValueChange|{}PopUntilScaffoldValueChange[0]
final fun <get-PopUntilScaffoldValueChange>(): androidx.compose.material3.adaptive.navigation/BackNavigationBehavior // androidx.compose.material3.adaptive.navigation/BackNavigationBehavior.Companion.PopUntilScaffoldValueChange.<get-PopUntilScaffoldValueChange>|<get-PopUntilScaffoldValueChange>(){}[0]
}
}
final fun <#A: kotlin/Any?> androidx.compose.material3.adaptive.navigation/rememberListDetailPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective?, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies?, kotlin/Boolean, kotlin.collections/List<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem<#A>>?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator<#A> // androidx.compose.material3.adaptive.navigation/rememberListDetailPaneScaffoldNavigator|rememberListDetailPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective?;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies?;kotlin.Boolean;kotlin.collections.List<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldDestinationItem<0:0>>?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any?>}[0]
final fun <#A: kotlin/Any?> androidx.compose.material3.adaptive.navigation/rememberSupportingPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective?, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies?, kotlin/Boolean, kotlin.collections/List<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldDestinationItem<#A>>?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator<#A> // androidx.compose.material3.adaptive.navigation/rememberSupportingPaneScaffoldNavigator|rememberSupportingPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective?;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies?;kotlin.Boolean;kotlin.collections.List<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldDestinationItem<0:0>>?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any?>}[0]
final fun androidx.compose.material3.adaptive.navigation/rememberListDetailPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective?, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies?, kotlin/Boolean, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator<kotlin/Any> // androidx.compose.material3.adaptive.navigation/rememberListDetailPaneScaffoldNavigator|rememberListDetailPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective?;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies?;kotlin.Boolean;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive.navigation/rememberSupportingPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout/PaneScaffoldDirective?, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies?, kotlin/Boolean, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation/ThreePaneScaffoldNavigator<kotlin/Any> // androidx.compose.material3.adaptive.navigation/rememberSupportingPaneScaffoldNavigator|rememberSupportingPaneScaffoldNavigator(androidx.compose.material3.adaptive.layout.PaneScaffoldDirective?;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies?;kotlin.Boolean;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
@@ -0,0 +1,35 @@
// :adaptive-navigation - androidx.compose.material3.adaptive.navigation.*
// (ThreePaneScaffoldNavigator + back-navigation behaviour), vendored VERBATIM from
// JetBrains/compose-multiplatform-core into src/vendor/. See :adaptive for why upstream
// ships no linux / mingw artifact. commonMain only - upstream's platform legs are
// android-specific.
//
// Provenance = compose-fork.txt + scripts/compose-fork/compose.properties. Never hand-edit
// src/vendor - change the manifest + `python scripts/compose-fork/sync.py compose/material3/adaptive/adaptive-navigation`.
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.plugin.compose)
}
val vHostSupportsMingw = rootProject.extra["vHostSupportsMingw"] as Boolean
kotlin {
linuxArm64(); linuxX64(); macosArm64(); if (vHostSupportsMingw) mingwX64()
applyDefaultHierarchyTemplate()
sourceSets {
commonMain {
dependencies {
api(project(":compose:material3:adaptive:adaptive-layout"))
implementation(project(":compose:foundation:foundation"))
implementation(project(":compose:ui:ui-util"))
}
kotlin.srcDir("src/vendor/common/kotlin")
}
}
compilerOptions {
freeCompilerArgs.addAll(
"-Xexpect-actual-classes",
"-opt-in=androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi",
)
}
}
@@ -0,0 +1,12 @@
SET_REPO=https://github.com/JetBrains/compose-multiplatform-core@<COMPOSE_CORE_REF>
SET_FOLDER=compose/material3/adaptive/adaptive-navigation/src
commonMain/kotlin/ -> src/vendor/common/kotlin/
# | commonMain/kotlin/androidx/compose/material3/adaptive/navigation/BackNavigationBehavior.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/navigation/BackNavigationBehavior.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/navigation/ThreePaneScaffoldNavigator.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/navigation/ThreePaneScaffoldNavigator.kt
# >>> ---- DIAGNOSTIC GAPS ---- <<<<
# androidMain (2)
# | androidMain/kotlin/androidx/compose/material3/adaptive/navigation/AndroidThreePaneScaffold.android.kt -> src/vendor/android/kotlin/androidx/compose/material3/adaptive/navigation/AndroidThreePaneScaffold.android.kt
# | androidMain/kotlin/androidx/compose/material3/adaptive/navigation/ThreePaneScaffoldPredictiveBackHandler.android.kt -> src/vendor/android/kotlin/androidx/compose/material3/adaptive/navigation/ThreePaneScaffoldPredictiveBackHandler.android.kt
# <<< ---- DIAGNOSTIC GAPS ---- >>>>
@@ -0,0 +1,93 @@
// Klib ABI Dump
// Targets: [linuxArm64, linuxX64, macosArm64, mingwX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.compose.material3.adaptive:adaptive-navigation3>
sealed interface androidx.compose.material3.adaptive.navigation3/ListDetailSceneScope { // androidx.compose.material3.adaptive.navigation3/ListDetailSceneScope|null[0]
abstract val scaffoldTransitionScope // androidx.compose.material3.adaptive.navigation3/ListDetailSceneScope.scaffoldTransitionScope|{}scaffoldTransitionScope[0]
abstract fun <get-scaffoldTransitionScope>(): androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue> // androidx.compose.material3.adaptive.navigation3/ListDetailSceneScope.scaffoldTransitionScope.<get-scaffoldTransitionScope>|<get-scaffoldTransitionScope>(){}[0]
}
sealed interface androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneScope { // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneScope|null[0]
abstract val scaffoldTransitionScope // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneScope.scaffoldTransitionScope|{}scaffoldTransitionScope[0]
abstract fun <get-scaffoldTransitionScope>(): androidx.compose.material3.adaptive.layout/PaneScaffoldTransitionScope<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldRole, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldValue> // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneScope.scaffoldTransitionScope.<get-scaffoldTransitionScope>|<get-scaffoldTransitionScope>(){}[0]
}
final class <#A: kotlin/Any> androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy : androidx.navigation3.scene/SceneStrategy<#A> { // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy|null[0]
constructor <init>(kotlin/Boolean, androidx.compose.material3.adaptive.navigation/BackNavigationBehavior, androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?) // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.<init>|<init>(kotlin.Boolean;androidx.compose.material3.adaptive.navigation.BackNavigationBehavior;androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?){}[0]
final val adaptStrategies // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.adaptStrategies|{}adaptStrategies[0]
final fun <get-adaptStrategies>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.adaptStrategies.<get-adaptStrategies>|<get-adaptStrategies>(){}[0]
final val backNavigationBehavior // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.backNavigationBehavior|{}backNavigationBehavior[0]
final fun <get-backNavigationBehavior>(): androidx.compose.material3.adaptive.navigation/BackNavigationBehavior // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.backNavigationBehavior.<get-backNavigationBehavior>|<get-backNavigationBehavior>(){}[0]
final val directive // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.directive|{}directive[0]
final fun <get-directive>(): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.directive.<get-directive>|<get-directive>(){}[0]
final val paneExpansionDragHandle // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.paneExpansionDragHandle|{}paneExpansionDragHandle[0]
final fun <get-paneExpansionDragHandle>(): kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.paneExpansionDragHandle.<get-paneExpansionDragHandle>|<get-paneExpansionDragHandle>(){}[0]
final val paneExpansionState // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.paneExpansionState|{}paneExpansionState[0]
final fun <get-paneExpansionState>(): androidx.compose.material3.adaptive.layout/PaneExpansionState? // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.paneExpansionState.<get-paneExpansionState>|<get-paneExpansionState>(){}[0]
final val shouldHandleSinglePaneLayout // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.shouldHandleSinglePaneLayout|{}shouldHandleSinglePaneLayout[0]
final fun <get-shouldHandleSinglePaneLayout>(): kotlin/Boolean // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.shouldHandleSinglePaneLayout.<get-shouldHandleSinglePaneLayout>|<get-shouldHandleSinglePaneLayout>(){}[0]
final fun (androidx.navigation3.scene/SceneStrategyScope<#A>).calculateScene(kotlin.collections/List<androidx.navigation3.runtime/NavEntry<#A>>): androidx.navigation3.scene/Scene<#A>? // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.calculateScene|calculateScene@androidx.navigation3.scene.SceneStrategyScope<1:0>(kotlin.collections.List<androidx.navigation3.runtime.NavEntry<1:0>>){}[0]
final object Companion { // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.Companion|null[0]
final fun detailPane(kotlin/Any = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.Companion.detailPane|detailPane(kotlin.Any){}[0]
final fun extraPane(kotlin/Any = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.Companion.extraPane|extraPane(kotlin.Any){}[0]
final fun listPane(kotlin/Any = ..., kotlin/Function3<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit> = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.Companion.listPane|listPane(kotlin.Any;kotlin.Function3<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>){}[0]
final fun paneAnimation(androidx.compose.animation/EnterTransition? = ..., androidx.compose.animation/ExitTransition? = ..., androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntRect>? = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.Companion.paneAnimation|paneAnimation(androidx.compose.animation.EnterTransition?;androidx.compose.animation.ExitTransition?;androidx.compose.animation.core.FiniteAnimationSpec<androidx.compose.ui.unit.IntRect>?){}[0]
final fun preferredPaneSize(androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.Companion.preferredPaneSize|preferredPaneSize(androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp){}[0]
final fun preferredPaneSize(kotlin/Float = ..., kotlin/Float = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy.Companion.preferredPaneSize|preferredPaneSize(kotlin.Float;kotlin.Float){}[0]
}
}
final class <#A: kotlin/Any> androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy : androidx.navigation3.scene/SceneStrategy<#A> { // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy|null[0]
constructor <init>(kotlin/Boolean, androidx.compose.material3.adaptive.navigation/BackNavigationBehavior, androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?) // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.<init>|<init>(kotlin.Boolean;androidx.compose.material3.adaptive.navigation.BackNavigationBehavior;androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?){}[0]
final val adaptStrategies // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.adaptStrategies|{}adaptStrategies[0]
final fun <get-adaptStrategies>(): androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.adaptStrategies.<get-adaptStrategies>|<get-adaptStrategies>(){}[0]
final val backNavigationBehavior // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.backNavigationBehavior|{}backNavigationBehavior[0]
final fun <get-backNavigationBehavior>(): androidx.compose.material3.adaptive.navigation/BackNavigationBehavior // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.backNavigationBehavior.<get-backNavigationBehavior>|<get-backNavigationBehavior>(){}[0]
final val directive // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.directive|{}directive[0]
final fun <get-directive>(): androidx.compose.material3.adaptive.layout/PaneScaffoldDirective // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.directive.<get-directive>|<get-directive>(){}[0]
final val paneExpansionDragHandle // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.paneExpansionDragHandle|{}paneExpansionDragHandle[0]
final fun <get-paneExpansionDragHandle>(): kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>? // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.paneExpansionDragHandle.<get-paneExpansionDragHandle>|<get-paneExpansionDragHandle>(){}[0]
final val paneExpansionState // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.paneExpansionState|{}paneExpansionState[0]
final fun <get-paneExpansionState>(): androidx.compose.material3.adaptive.layout/PaneExpansionState? // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.paneExpansionState.<get-paneExpansionState>|<get-paneExpansionState>(){}[0]
final val shouldHandleSinglePaneLayout // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.shouldHandleSinglePaneLayout|{}shouldHandleSinglePaneLayout[0]
final fun <get-shouldHandleSinglePaneLayout>(): kotlin/Boolean // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.shouldHandleSinglePaneLayout.<get-shouldHandleSinglePaneLayout>|<get-shouldHandleSinglePaneLayout>(){}[0]
final fun (androidx.navigation3.scene/SceneStrategyScope<#A>).calculateScene(kotlin.collections/List<androidx.navigation3.runtime/NavEntry<#A>>): androidx.navigation3.scene/Scene<#A>? // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.calculateScene|calculateScene@androidx.navigation3.scene.SceneStrategyScope<1:0>(kotlin.collections.List<androidx.navigation3.runtime.NavEntry<1:0>>){}[0]
final object Companion { // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.Companion|null[0]
final fun extraPane(kotlin/Any = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.Companion.extraPane|extraPane(kotlin.Any){}[0]
final fun mainPane(kotlin/Any = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.Companion.mainPane|mainPane(kotlin.Any){}[0]
final fun paneAnimation(androidx.compose.animation/EnterTransition? = ..., androidx.compose.animation/ExitTransition? = ..., androidx.compose.animation.core/FiniteAnimationSpec<androidx.compose.ui.unit/IntRect>? = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.Companion.paneAnimation|paneAnimation(androidx.compose.animation.EnterTransition?;androidx.compose.animation.ExitTransition?;androidx.compose.animation.core.FiniteAnimationSpec<androidx.compose.ui.unit.IntRect>?){}[0]
final fun preferredPaneSize(androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.Companion.preferredPaneSize|preferredPaneSize(androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp){}[0]
final fun preferredPaneSize(kotlin/Float = ..., kotlin/Float = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.Companion.preferredPaneSize|preferredPaneSize(kotlin.Float;kotlin.Float){}[0]
final fun supportingPane(kotlin/Any = ...): kotlin.collections/Map<kotlin/String, kotlin/Any> // androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy.Companion.supportingPane|supportingPane(kotlin.Any){}[0]
}
}
final val androidx.compose.material3.adaptive.navigation3/LocalListDetailSceneScope // androidx.compose.material3.adaptive.navigation3/LocalListDetailSceneScope|{}LocalListDetailSceneScope[0]
final fun <get-LocalListDetailSceneScope>(): androidx.compose.runtime/ProvidableCompositionLocal<androidx.compose.material3.adaptive.navigation3/ListDetailSceneScope?> // androidx.compose.material3.adaptive.navigation3/LocalListDetailSceneScope.<get-LocalListDetailSceneScope>|<get-LocalListDetailSceneScope>(){}[0]
final val androidx.compose.material3.adaptive.navigation3/LocalSupportingPaneSceneScope // androidx.compose.material3.adaptive.navigation3/LocalSupportingPaneSceneScope|{}LocalSupportingPaneSceneScope[0]
final fun <get-LocalSupportingPaneSceneScope>(): androidx.compose.runtime/ProvidableCompositionLocal<androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneScope?> // androidx.compose.material3.adaptive.navigation3/LocalSupportingPaneSceneScope.<get-LocalSupportingPaneSceneScope>|<get-LocalSupportingPaneSceneScope>(){}[0]
final val androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ListDetailSceneStrategy$stableprop // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ListDetailSceneStrategy$stableprop|#static{}androidx_compose_material3_adaptive_navigation3_ListDetailSceneStrategy$stableprop[0]
final val androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_SupportingPaneSceneStrategy$stableprop // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_SupportingPaneSceneStrategy$stableprop|#static{}androidx_compose_material3_adaptive_navigation3_SupportingPaneSceneStrategy$stableprop[0]
final val androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldScene_OnBackResult$stableprop // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldScene_OnBackResult$stableprop|#static{}androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldScene_OnBackResult$stableprop[0]
final val androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_ListDetail$stableprop // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_ListDetail$stableprop|#static{}androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_ListDetail$stableprop[0]
final val androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_SupportingPane$stableprop // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_SupportingPane$stableprop|#static{}androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_SupportingPane$stableprop[0]
final fun <#A: kotlin/Any> androidx.compose.material3.adaptive.navigation3/rememberListDetailSceneStrategy(kotlin/Boolean, androidx.compose.material3.adaptive.navigation/BackNavigationBehavior, androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy<#A> // androidx.compose.material3.adaptive.navigation3/rememberListDetailSceneStrategy|rememberListDetailSceneStrategy(kotlin.Boolean;androidx.compose.material3.adaptive.navigation.BackNavigationBehavior;androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any>}[0]
final fun <#A: kotlin/Any> androidx.compose.material3.adaptive.navigation3/rememberListDetailSceneStrategy(kotlin/Boolean, androidx.compose.material3.adaptive.navigation/BackNavigationBehavior?, androidx.compose.material3.adaptive.layout/PaneScaffoldDirective?, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies?, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation3/ListDetailSceneStrategy<#A> // androidx.compose.material3.adaptive.navigation3/rememberListDetailSceneStrategy|rememberListDetailSceneStrategy(kotlin.Boolean;androidx.compose.material3.adaptive.navigation.BackNavigationBehavior?;androidx.compose.material3.adaptive.layout.PaneScaffoldDirective?;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies?;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any>}[0]
final fun <#A: kotlin/Any> androidx.compose.material3.adaptive.navigation3/rememberSupportingPaneSceneStrategy(kotlin/Boolean, androidx.compose.material3.adaptive.navigation/BackNavigationBehavior, androidx.compose.material3.adaptive.layout/PaneScaffoldDirective, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy<#A> // androidx.compose.material3.adaptive.navigation3/rememberSupportingPaneSceneStrategy|rememberSupportingPaneSceneStrategy(kotlin.Boolean;androidx.compose.material3.adaptive.navigation.BackNavigationBehavior;androidx.compose.material3.adaptive.layout.PaneScaffoldDirective;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any>}[0]
final fun <#A: kotlin/Any> androidx.compose.material3.adaptive.navigation3/rememberSupportingPaneSceneStrategy(kotlin/Boolean, androidx.compose.material3.adaptive.navigation/BackNavigationBehavior?, androidx.compose.material3.adaptive.layout/PaneScaffoldDirective?, androidx.compose.material3.adaptive.layout/ThreePaneScaffoldAdaptStrategies?, kotlin/Function4<androidx.compose.material3.adaptive.layout/ThreePaneScaffoldScope, androidx.compose.material3.adaptive.layout/PaneExpansionState, androidx.compose.runtime/Composer, kotlin/Int, kotlin/Unit>?, androidx.compose.material3.adaptive.layout/PaneExpansionState?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive.navigation3/SupportingPaneSceneStrategy<#A> // androidx.compose.material3.adaptive.navigation3/rememberSupportingPaneSceneStrategy|rememberSupportingPaneSceneStrategy(kotlin.Boolean;androidx.compose.material3.adaptive.navigation.BackNavigationBehavior?;androidx.compose.material3.adaptive.layout.PaneScaffoldDirective?;androidx.compose.material3.adaptive.layout.ThreePaneScaffoldAdaptStrategies?;kotlin.Function4<androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope,androidx.compose.material3.adaptive.layout.PaneExpansionState,androidx.compose.runtime.Composer,kotlin.Int,kotlin.Unit>?;androidx.compose.material3.adaptive.layout.PaneExpansionState?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any>}[0]
final fun androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ListDetailSceneStrategy$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ListDetailSceneStrategy$stableprop_getter|androidx_compose_material3_adaptive_navigation3_ListDetailSceneStrategy$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_SupportingPaneSceneStrategy$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_SupportingPaneSceneStrategy$stableprop_getter|androidx_compose_material3_adaptive_navigation3_SupportingPaneSceneStrategy$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldScene_OnBackResult$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldScene_OnBackResult$stableprop_getter|androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldScene_OnBackResult$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_ListDetail$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_ListDetail$stableprop_getter|androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_ListDetail$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_SupportingPane$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive.navigation3/androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_SupportingPane$stableprop_getter|androidx_compose_material3_adaptive_navigation3_ThreePaneScaffoldType_SupportingPane$stableprop_getter(){}[0]
@@ -0,0 +1,40 @@
// :adaptive-navigation3 - androidx.compose.material3.adaptive.navigation3.*
// (ListDetail / SupportingPane SceneStrategy for Navigation 3), vendored VERBATIM from
// JetBrains/compose-multiplatform-core into src/vendor/. See :adaptive for why upstream
// ships no linux / mingw artifact. commonMain only.
//
// navigation3-ui is the PROJECT module: upstream's org.jetbrains.androidx.navigation3:
// navigation3-ui has no K/N desktop artifact either, which is why :navigation3:navigation3-ui
// exists. navigationevent-compose is a plain Maven dep (api-exposed by :ui).
//
// Provenance = compose-fork.txt + scripts/compose-fork/compose.properties. Never hand-edit
// src/vendor - change the manifest + `python scripts/compose-fork/sync.py compose/material3/adaptive/adaptive-navigation3`.
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.plugin.compose)
}
val vHostSupportsMingw = rootProject.extra["vHostSupportsMingw"] as Boolean
kotlin {
linuxArm64(); linuxX64(); macosArm64(); if (vHostSupportsMingw) mingwX64()
applyDefaultHierarchyTemplate()
sourceSets {
commonMain {
dependencies {
api(project(":compose:material3:adaptive:adaptive-navigation"))
api(project(":navigation3:navigation3-ui"))
implementation(libs.androidx.collection)
implementation(libs.androidx.navigationevent.compose)
}
kotlin.srcDir("src/vendor/common/kotlin")
}
}
compilerOptions {
freeCompilerArgs.addAll(
"-Xexpect-actual-classes",
"-opt-in=androidx.compose.ui.ExperimentalComposeUiApi",
"-opt-in=androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi",
)
}
}
@@ -0,0 +1,13 @@
SET_REPO=https://github.com/JetBrains/compose-multiplatform-core@<COMPOSE_CORE_REF>
SET_FOLDER=compose/material3/adaptive/adaptive-navigation3/src
commonMain/kotlin/ -> src/vendor/common/kotlin/
# | commonMain/kotlin/androidx/compose/material3/adaptive/navigation3/ListDetailSceneScope.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/navigation3/ListDetailSceneScope.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/navigation3/ListDetailSceneStrategy.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/navigation3/ListDetailSceneStrategy.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/navigation3/SupportingPaneSceneScope.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/navigation3/SupportingPaneSceneScope.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/navigation3/SupportingPaneSceneStrategy.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/navigation3/SupportingPaneSceneStrategy.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/navigation3/ThreePaneScaffoldScene.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/navigation3/ThreePaneScaffoldScene.kt
# >>> ---- DIAGNOSTIC GAPS ---- <<<<
# (none - every source set under SET_FOLDER is vendored)
# <<< ---- DIAGNOSTIC GAPS ---- >>>>
@@ -0,0 +1,85 @@
// Klib ABI Dump
// Targets: [linuxArm64, linuxX64, macosArm64, mingwX64]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.compose.material3.adaptive:adaptive>
open annotation class androidx.compose.material3.adaptive/ExperimentalMaterial3AdaptiveApi : kotlin/Annotation { // androidx.compose.material3.adaptive/ExperimentalMaterial3AdaptiveApi|null[0]
constructor <init>() // androidx.compose.material3.adaptive/ExperimentalMaterial3AdaptiveApi.<init>|<init>(){}[0]
}
open annotation class androidx.compose.material3.adaptive/ExperimentalMaterial3AdaptiveComponentOverrideApi : kotlin/Annotation { // androidx.compose.material3.adaptive/ExperimentalMaterial3AdaptiveComponentOverrideApi|null[0]
constructor <init>() // androidx.compose.material3.adaptive/ExperimentalMaterial3AdaptiveComponentOverrideApi.<init>|<init>(){}[0]
}
final class androidx.compose.material3.adaptive/HingeInfo { // androidx.compose.material3.adaptive/HingeInfo|null[0]
constructor <init>(androidx.compose.ui.geometry/Rect, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean) // androidx.compose.material3.adaptive/HingeInfo.<init>|<init>(androidx.compose.ui.geometry.Rect;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean){}[0]
final val bounds // androidx.compose.material3.adaptive/HingeInfo.bounds|{}bounds[0]
final fun <get-bounds>(): androidx.compose.ui.geometry/Rect // androidx.compose.material3.adaptive/HingeInfo.bounds.<get-bounds>|<get-bounds>(){}[0]
final val isFlat // androidx.compose.material3.adaptive/HingeInfo.isFlat|{}isFlat[0]
final fun <get-isFlat>(): kotlin/Boolean // androidx.compose.material3.adaptive/HingeInfo.isFlat.<get-isFlat>|<get-isFlat>(){}[0]
final val isOccluding // androidx.compose.material3.adaptive/HingeInfo.isOccluding|{}isOccluding[0]
final fun <get-isOccluding>(): kotlin/Boolean // androidx.compose.material3.adaptive/HingeInfo.isOccluding.<get-isOccluding>|<get-isOccluding>(){}[0]
final val isSeparating // androidx.compose.material3.adaptive/HingeInfo.isSeparating|{}isSeparating[0]
final fun <get-isSeparating>(): kotlin/Boolean // androidx.compose.material3.adaptive/HingeInfo.isSeparating.<get-isSeparating>|<get-isSeparating>(){}[0]
final val isVertical // androidx.compose.material3.adaptive/HingeInfo.isVertical|{}isVertical[0]
final fun <get-isVertical>(): kotlin/Boolean // androidx.compose.material3.adaptive/HingeInfo.isVertical.<get-isVertical>|<get-isVertical>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive/HingeInfo.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive/HingeInfo.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive/HingeInfo.toString|toString(){}[0]
}
final class androidx.compose.material3.adaptive/Posture { // androidx.compose.material3.adaptive/Posture|null[0]
constructor <init>(kotlin/Boolean = ..., kotlin.collections/List<androidx.compose.material3.adaptive/HingeInfo> = ...) // androidx.compose.material3.adaptive/Posture.<init>|<init>(kotlin.Boolean;kotlin.collections.List<androidx.compose.material3.adaptive.HingeInfo>){}[0]
final val hingeList // androidx.compose.material3.adaptive/Posture.hingeList|{}hingeList[0]
final fun <get-hingeList>(): kotlin.collections/List<androidx.compose.material3.adaptive/HingeInfo> // androidx.compose.material3.adaptive/Posture.hingeList.<get-hingeList>|<get-hingeList>(){}[0]
final val isTabletop // androidx.compose.material3.adaptive/Posture.isTabletop|{}isTabletop[0]
final fun <get-isTabletop>(): kotlin/Boolean // androidx.compose.material3.adaptive/Posture.isTabletop.<get-isTabletop>|<get-isTabletop>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive/Posture.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive/Posture.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive/Posture.toString|toString(){}[0]
}
final class androidx.compose.material3.adaptive/WindowAdaptiveInfo { // androidx.compose.material3.adaptive/WindowAdaptiveInfo|null[0]
constructor <init>(androidx.window.core.layout/WindowSizeClass, androidx.compose.material3.adaptive/Posture) // androidx.compose.material3.adaptive/WindowAdaptiveInfo.<init>|<init>(androidx.window.core.layout.WindowSizeClass;androidx.compose.material3.adaptive.Posture){}[0]
final val windowPosture // androidx.compose.material3.adaptive/WindowAdaptiveInfo.windowPosture|{}windowPosture[0]
final fun <get-windowPosture>(): androidx.compose.material3.adaptive/Posture // androidx.compose.material3.adaptive/WindowAdaptiveInfo.windowPosture.<get-windowPosture>|<get-windowPosture>(){}[0]
final val windowSizeClass // androidx.compose.material3.adaptive/WindowAdaptiveInfo.windowSizeClass|{}windowSizeClass[0]
final fun <get-windowSizeClass>(): androidx.window.core.layout/WindowSizeClass // androidx.compose.material3.adaptive/WindowAdaptiveInfo.windowSizeClass.<get-windowSizeClass>|<get-windowSizeClass>(){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // androidx.compose.material3.adaptive/WindowAdaptiveInfo.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // androidx.compose.material3.adaptive/WindowAdaptiveInfo.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // androidx.compose.material3.adaptive/WindowAdaptiveInfo.toString|toString(){}[0]
}
final val androidx.compose.material3.adaptive/allHorizontalHingeBounds // androidx.compose.material3.adaptive/allHorizontalHingeBounds|@androidx.compose.material3.adaptive.Posture{}allHorizontalHingeBounds[0]
final fun (androidx.compose.material3.adaptive/Posture).<get-allHorizontalHingeBounds>(): kotlin.collections/List<androidx.compose.ui.geometry/Rect> // androidx.compose.material3.adaptive/allHorizontalHingeBounds.<get-allHorizontalHingeBounds>|<get-allHorizontalHingeBounds>@androidx.compose.material3.adaptive.Posture(){}[0]
final val androidx.compose.material3.adaptive/allVerticalHingeBounds // androidx.compose.material3.adaptive/allVerticalHingeBounds|@androidx.compose.material3.adaptive.Posture{}allVerticalHingeBounds[0]
final fun (androidx.compose.material3.adaptive/Posture).<get-allVerticalHingeBounds>(): kotlin.collections/List<androidx.compose.ui.geometry/Rect> // androidx.compose.material3.adaptive/allVerticalHingeBounds.<get-allVerticalHingeBounds>|<get-allVerticalHingeBounds>@androidx.compose.material3.adaptive.Posture(){}[0]
final val androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_HingeInfo$stableprop // androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_HingeInfo$stableprop|#static{}androidx_compose_material3_adaptive_HingeInfo$stableprop[0]
final val androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_Posture$stableprop // androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_Posture$stableprop|#static{}androidx_compose_material3_adaptive_Posture$stableprop[0]
final val androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_WindowAdaptiveInfo$stableprop // androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_WindowAdaptiveInfo$stableprop|#static{}androidx_compose_material3_adaptive_WindowAdaptiveInfo$stableprop[0]
final val androidx.compose.material3.adaptive/occludingHorizontalHingeBounds // androidx.compose.material3.adaptive/occludingHorizontalHingeBounds|@androidx.compose.material3.adaptive.Posture{}occludingHorizontalHingeBounds[0]
final fun (androidx.compose.material3.adaptive/Posture).<get-occludingHorizontalHingeBounds>(): kotlin.collections/List<androidx.compose.ui.geometry/Rect> // androidx.compose.material3.adaptive/occludingHorizontalHingeBounds.<get-occludingHorizontalHingeBounds>|<get-occludingHorizontalHingeBounds>@androidx.compose.material3.adaptive.Posture(){}[0]
final val androidx.compose.material3.adaptive/occludingVerticalHingeBounds // androidx.compose.material3.adaptive/occludingVerticalHingeBounds|@androidx.compose.material3.adaptive.Posture{}occludingVerticalHingeBounds[0]
final fun (androidx.compose.material3.adaptive/Posture).<get-occludingVerticalHingeBounds>(): kotlin.collections/List<androidx.compose.ui.geometry/Rect> // androidx.compose.material3.adaptive/occludingVerticalHingeBounds.<get-occludingVerticalHingeBounds>|<get-occludingVerticalHingeBounds>@androidx.compose.material3.adaptive.Posture(){}[0]
final val androidx.compose.material3.adaptive/separatingHorizontalHingeBounds // androidx.compose.material3.adaptive/separatingHorizontalHingeBounds|@androidx.compose.material3.adaptive.Posture{}separatingHorizontalHingeBounds[0]
final fun (androidx.compose.material3.adaptive/Posture).<get-separatingHorizontalHingeBounds>(): kotlin.collections/List<androidx.compose.ui.geometry/Rect> // androidx.compose.material3.adaptive/separatingHorizontalHingeBounds.<get-separatingHorizontalHingeBounds>|<get-separatingHorizontalHingeBounds>@androidx.compose.material3.adaptive.Posture(){}[0]
final val androidx.compose.material3.adaptive/separatingVerticalHingeBounds // androidx.compose.material3.adaptive/separatingVerticalHingeBounds|@androidx.compose.material3.adaptive.Posture{}separatingVerticalHingeBounds[0]
final fun (androidx.compose.material3.adaptive/Posture).<get-separatingVerticalHingeBounds>(): kotlin.collections/List<androidx.compose.ui.geometry/Rect> // androidx.compose.material3.adaptive/separatingVerticalHingeBounds.<get-separatingVerticalHingeBounds>|<get-separatingVerticalHingeBounds>@androidx.compose.material3.adaptive.Posture(){}[0]
final fun androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_HingeInfo$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_HingeInfo$stableprop_getter|androidx_compose_material3_adaptive_HingeInfo$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_Posture$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_Posture$stableprop_getter|androidx_compose_material3_adaptive_Posture$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_WindowAdaptiveInfo$stableprop_getter(): kotlin/Int // androidx.compose.material3.adaptive/androidx_compose_material3_adaptive_WindowAdaptiveInfo$stableprop_getter|androidx_compose_material3_adaptive_WindowAdaptiveInfo$stableprop_getter(){}[0]
final fun androidx.compose.material3.adaptive/currentWindowAdaptiveInfo(androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.material3.adaptive/WindowAdaptiveInfo // androidx.compose.material3.adaptive/currentWindowAdaptiveInfo|currentWindowAdaptiveInfo(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive/currentWindowAdaptiveInfo(kotlin/Boolean, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.compose.material3.adaptive/WindowAdaptiveInfo // androidx.compose.material3.adaptive/currentWindowAdaptiveInfo|currentWindowAdaptiveInfo(kotlin.Boolean;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive/currentWindowAdaptiveInfoV2(androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.material3.adaptive/WindowAdaptiveInfo // androidx.compose.material3.adaptive/currentWindowAdaptiveInfoV2|currentWindowAdaptiveInfoV2(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive/currentWindowDpSize(androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.ui.unit/DpSize // androidx.compose.material3.adaptive/currentWindowDpSize|currentWindowDpSize(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
final fun androidx.compose.material3.adaptive/currentWindowSize(androidx.compose.runtime/Composer?, kotlin/Int): androidx.compose.ui.unit/IntSize // androidx.compose.material3.adaptive/currentWindowSize|currentWindowSize(androidx.compose.runtime.Composer?;kotlin.Int){}[0]
@@ -0,0 +1,47 @@
// :adaptive - androidx.compose.material3.adaptive.* (WindowAdaptiveInfo / Posture /
// window size class helpers), vendored VERBATIM from JetBrains/compose-multiplatform-core
// (compose/material3/adaptive/adaptive) into src/vendor/.
//
// Upstream org.jetbrains.compose.material3.adaptive:* publishes only ios / macosArm64 -
// no linux, no mingw (github.com/bitsycore/compose-desktop-native/issues/4). Nothing in
// the sources blocks those targets: the whole port is vendor-only, every actual the
// native targets need already exists upstream, and the one real dependency
// (androidx.window:window-core) ALREADY publishes linux + mingw + macos. The artifacts
// are missing purely because upstream did not enable the targets.
//
// Upstream's `nonAndroidMain` lands in src/vendor/native/ - for this port native IS the
// only non-android leg, same treatment coil's nonAndroid sets get.
//
// Provenance = compose-fork.txt + scripts/compose-fork/compose.properties. Never hand-edit
// src/vendor - change the manifest + `python scripts/compose-fork/sync.py compose/material3/adaptive/adaptive`.
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.plugin.compose)
}
val vHostSupportsMingw = rootProject.extra["vHostSupportsMingw"] as Boolean
kotlin {
linuxArm64(); linuxX64(); macosArm64(); if (vHostSupportsMingw) mingwX64()
applyDefaultHierarchyTemplate()
sourceSets {
commonMain {
dependencies {
api(project(":compose:ui:ui"))
api(libs.androidx.window.core)
implementation(project(":compose:foundation:foundation"))
}
kotlin.srcDir("src/vendor/common/kotlin")
}
nativeMain {
kotlin.srcDir("src/vendor/native/kotlin")
}
}
compilerOptions {
freeCompilerArgs.addAll(
"-Xexpect-actual-classes",
"-opt-in=androidx.compose.ui.ExperimentalComposeUiApi",
"-opt-in=androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi",
)
}
}
@@ -0,0 +1,17 @@
SET_REPO=https://github.com/JetBrains/compose-multiplatform-core@<COMPOSE_CORE_REF>
SET_FOLDER=compose/material3/adaptive/adaptive/src
commonMain/kotlin/ -> src/vendor/common/kotlin/
# | commonMain/kotlin/androidx/compose/material3/adaptive/ExperimentalMaterial3AdaptiveApi.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/ExperimentalMaterial3AdaptiveApi.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/ExperimentalMaterial3AdaptiveComponentOverrideApi.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/ExperimentalMaterial3AdaptiveComponentOverrideApi.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/Posture.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/Posture.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.kt
# | commonMain/kotlin/androidx/compose/material3/adaptive/WindowSizeClassHelper.kt -> src/vendor/common/kotlin/androidx/compose/material3/adaptive/WindowSizeClassHelper.kt
nonAndroidMain/kotlin/ -> src/vendor/native/kotlin/
# | nonAndroidMain/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.nonAndroid.kt -> src/vendor/native/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.nonAndroid.kt
# >>> ---- DIAGNOSTIC GAPS ---- <<<<
# androidMain (2)
# | androidMain/kotlin/androidx/compose/material3/adaptive/AndroidPosture.android.kt -> src/vendor/android/kotlin/androidx/compose/material3/adaptive/AndroidPosture.android.kt
# | androidMain/kotlin/androidx/compose/material3/adaptive/AndroidWindowAdaptiveInfo.android.kt -> src/vendor/android/kotlin/androidx/compose/material3/adaptive/AndroidWindowAdaptiveInfo.android.kt
# <<< ---- DIAGNOSTIC GAPS ---- >>>>
@@ -12,7 +12,7 @@ import kotlin.math.abs
// vendored Matrices.skiko.kt and would not be visible up here. Distinct name
// avoids clashing with that copy on the Skia leg. (RENDERER.md P1.5 will
// reverse this rename once B2 vendors Matrices.skiko onto the Skia leg.)
// VENDOR-BASE: compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/graphics/Matrices.skiko.kt @ v1.12.0
// VENDOR-BASE: compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/Matrices.skiko.kt @ v1.12.1
// Builds the layer transform (translation / rotation / scale / camera about a
// pivot) into [matrix]. Matches the skiko copy so hit-testing agrees across legs.
@@ -15,7 +15,7 @@
*/
// DERIVED (copy + edit) from compose-multiplatform-core -- MANUAL VENDOR, NON-IDEMPOTENT.
// VENDOR-BASE: compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt @ v1.12.0
// VENDOR-BASE: compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt @ v1.12.1
// ONLY change vs upstream: this class also implements the port draw contracts
// (NativePainterCanvas / NativeShadowCanvas / NativeFinishableCanvas) so the
// resource-image cache + elevation shadows keep working on the Skia renderer,
@@ -17,7 +17,7 @@
*/
// DERIVED (copy + edit) from compose-multiplatform-core -- MANUAL VENDOR, NON-IDEMPOTENT.
// VENDOR-BASE: compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaImageAsset.skiko.kt @ v1.12.0
// VENDOR-BASE: compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaImageAsset.skiko.kt @ v1.12.1
// FLATTENED for our single-native-source-set layout: upstream splits Image.toBitmap /
// ByteArray.putBytesInto into expect (here) + actual (skikoExcludingWebMain / nativeMain).
// Those collapse into the same skikoRenderer source set here, which is illegal, so the two
@@ -6,7 +6,7 @@
* compose/ui/compose-fork.txt is commented out so this file survives
* `scripts/compose-fork/sync.sh`.
*/
// VENDOR-BASE: compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/platform/Synchronization.kt @ v1.12.0
// VENDOR-BASE: compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/platform/Synchronization.kt @ v1.12.1
package androidx.compose.ui.text.platform
@@ -2,7 +2,7 @@ package androidx.compose.ui.text
import kotlin.experimental.ExperimentalNativeApi
// VENDOR-BASE: compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/FontRasterizationSettings.skiko.kt @ v1.12.0
// VENDOR-BASE: compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/FontRasterizationSettings.skiko.kt @ v1.12.1
// ==================
// MARK: FontRasterizationSettings native actual (Skia-free)
+36 -34
View File
@@ -2827,7 +2827,7 @@ final class com.compose.sdl.window/PopupHostState { // com.compose.sdl.window/Po
}
final class com.compose.sdl/ComposeNativeWindow { // com.compose.sdl/ComposeNativeWindow|null[0]
constructor <init>(com.compose.sdl/SDL3Backend, com.compose.sdl/GpuMode, kotlin/String) // com.compose.sdl/ComposeNativeWindow.<init>|<init>(com.compose.sdl.SDL3Backend;com.compose.sdl.GpuMode;kotlin.String){}[0]
constructor <init>(com.compose.sdl/Sdl3Backend, com.compose.sdl/GpuMode, kotlin/String) // com.compose.sdl/ComposeNativeWindow.<init>|<init>(com.compose.sdl.Sdl3Backend;com.compose.sdl.GpuMode;kotlin.String){}[0]
final val fps // com.compose.sdl/ComposeNativeWindow.fps|{}fps[0]
final fun <get-fps>(): kotlin/Int // com.compose.sdl/ComposeNativeWindow.fps.<get-fps>|<get-fps>(){}[0]
@@ -2912,39 +2912,39 @@ final class com.compose.sdl/RawSdlHandles { // com.compose.sdl/RawSdlHandles|nul
final fun toString(): kotlin/String // com.compose.sdl/RawSdlHandles.toString|toString(){}[0]
}
final class com.compose.sdl/SDL3Backend { // com.compose.sdl/SDL3Backend|null[0]
constructor <init>(kotlin/String = ..., kotlin/Int = ..., kotlin/Int = ..., com.compose.sdl/GpuMode = ..., kotlin.collections/List<kotlin/String> = ..., kotlin.collections/List<kotlin/String> = ..., kotlin/Boolean = ..., kotlin/Boolean = ..., kotlin/Boolean = ..., kotlin/Boolean = ..., kotlin/Boolean = ...) // com.compose.sdl/SDL3Backend.<init>|<init>(kotlin.String;kotlin.Int;kotlin.Int;com.compose.sdl.GpuMode;kotlin.collections.List<kotlin.String>;kotlin.collections.List<kotlin.String>;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean){}[0]
final class com.compose.sdl/Sdl3Backend { // com.compose.sdl/Sdl3Backend|null[0]
constructor <init>(kotlin/String = ..., kotlin/Int = ..., kotlin/Int = ..., com.compose.sdl/GpuMode = ..., kotlin.collections/List<kotlin/String> = ..., kotlin.collections/List<kotlin/String> = ..., kotlin/Boolean = ..., kotlin/Boolean = ..., kotlin/Boolean = ..., kotlin/Boolean = ..., kotlin/Boolean = ...) // com.compose.sdl/Sdl3Backend.<init>|<init>(kotlin.String;kotlin.Int;kotlin.Int;com.compose.sdl.GpuMode;kotlin.collections.List<kotlin.String>;kotlin.collections.List<kotlin.String>;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean){}[0]
final val gpuMode // com.compose.sdl/SDL3Backend.gpuMode|{}gpuMode[0]
final fun <get-gpuMode>(): com.compose.sdl/GpuMode // com.compose.sdl/SDL3Backend.gpuMode.<get-gpuMode>|<get-gpuMode>(){}[0]
final val pixelDensity // com.compose.sdl/SDL3Backend.pixelDensity|{}pixelDensity[0]
final fun <get-pixelDensity>(): kotlin/Float // com.compose.sdl/SDL3Backend.pixelDensity.<get-pixelDensity>|<get-pixelDensity>(){}[0]
final val windowId // com.compose.sdl/SDL3Backend.windowId|{}windowId[0]
final fun <get-windowId>(): kotlin/UInt // com.compose.sdl/SDL3Backend.windowId.<get-windowId>|<get-windowId>(){}[0]
final val gpuMode // com.compose.sdl/Sdl3Backend.gpuMode|{}gpuMode[0]
final fun <get-gpuMode>(): com.compose.sdl/GpuMode // com.compose.sdl/Sdl3Backend.gpuMode.<get-gpuMode>|<get-gpuMode>(){}[0]
final val pixelDensity // com.compose.sdl/Sdl3Backend.pixelDensity|{}pixelDensity[0]
final fun <get-pixelDensity>(): kotlin/Float // com.compose.sdl/Sdl3Backend.pixelDensity.<get-pixelDensity>|<get-pixelDensity>(){}[0]
final val windowId // com.compose.sdl/Sdl3Backend.windowId|{}windowId[0]
final fun <get-windowId>(): kotlin/UInt // com.compose.sdl/Sdl3Backend.windowId.<get-windowId>|<get-windowId>(){}[0]
final var glContext // com.compose.sdl/SDL3Backend.glContext|{}glContext[0]
final fun <get-glContext>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/SDL3Backend.glContext.<get-glContext>|<get-glContext>(){}[0]
final var metalView // com.compose.sdl/SDL3Backend.metalView|{}metalView[0]
final fun <get-metalView>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/SDL3Backend.metalView.<get-metalView>|<get-metalView>(){}[0]
final var pixelHeight // com.compose.sdl/SDL3Backend.pixelHeight|{}pixelHeight[0]
final fun <get-pixelHeight>(): kotlin/Int // com.compose.sdl/SDL3Backend.pixelHeight.<get-pixelHeight>|<get-pixelHeight>(){}[0]
final var pixelWidth // com.compose.sdl/SDL3Backend.pixelWidth|{}pixelWidth[0]
final fun <get-pixelWidth>(): kotlin/Int // com.compose.sdl/SDL3Backend.pixelWidth.<get-pixelWidth>|<get-pixelWidth>(){}[0]
final var renderer // com.compose.sdl/SDL3Backend.renderer|{}renderer[0]
final fun <get-renderer>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/SDL3Backend.renderer.<get-renderer>|<get-renderer>(){}[0]
final var vsyncEnabled // com.compose.sdl/SDL3Backend.vsyncEnabled|{}vsyncEnabled[0]
final fun <get-vsyncEnabled>(): kotlin/Boolean // com.compose.sdl/SDL3Backend.vsyncEnabled.<get-vsyncEnabled>|<get-vsyncEnabled>(){}[0]
final var window // com.compose.sdl/SDL3Backend.window|{}window[0]
final fun <get-window>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/SDL3Backend.window.<get-window>|<get-window>(){}[0]
final var windowHeight // com.compose.sdl/SDL3Backend.windowHeight|{}windowHeight[0]
final fun <get-windowHeight>(): kotlin/Int // com.compose.sdl/SDL3Backend.windowHeight.<get-windowHeight>|<get-windowHeight>(){}[0]
final var windowWidth // com.compose.sdl/SDL3Backend.windowWidth|{}windowWidth[0]
final fun <get-windowWidth>(): kotlin/Int // com.compose.sdl/SDL3Backend.windowWidth.<get-windowWidth>|<get-windowWidth>(){}[0]
final var glContext // com.compose.sdl/Sdl3Backend.glContext|{}glContext[0]
final fun <get-glContext>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/Sdl3Backend.glContext.<get-glContext>|<get-glContext>(){}[0]
final var metalView // com.compose.sdl/Sdl3Backend.metalView|{}metalView[0]
final fun <get-metalView>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/Sdl3Backend.metalView.<get-metalView>|<get-metalView>(){}[0]
final var pixelHeight // com.compose.sdl/Sdl3Backend.pixelHeight|{}pixelHeight[0]
final fun <get-pixelHeight>(): kotlin/Int // com.compose.sdl/Sdl3Backend.pixelHeight.<get-pixelHeight>|<get-pixelHeight>(){}[0]
final var pixelWidth // com.compose.sdl/Sdl3Backend.pixelWidth|{}pixelWidth[0]
final fun <get-pixelWidth>(): kotlin/Int // com.compose.sdl/Sdl3Backend.pixelWidth.<get-pixelWidth>|<get-pixelWidth>(){}[0]
final var renderer // com.compose.sdl/Sdl3Backend.renderer|{}renderer[0]
final fun <get-renderer>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/Sdl3Backend.renderer.<get-renderer>|<get-renderer>(){}[0]
final var vsyncEnabled // com.compose.sdl/Sdl3Backend.vsyncEnabled|{}vsyncEnabled[0]
final fun <get-vsyncEnabled>(): kotlin/Boolean // com.compose.sdl/Sdl3Backend.vsyncEnabled.<get-vsyncEnabled>|<get-vsyncEnabled>(){}[0]
final var window // com.compose.sdl/Sdl3Backend.window|{}window[0]
final fun <get-window>(): kotlinx.cinterop/CPointer<out kotlinx.cinterop/CPointed>? // com.compose.sdl/Sdl3Backend.window.<get-window>|<get-window>(){}[0]
final var windowHeight // com.compose.sdl/Sdl3Backend.windowHeight|{}windowHeight[0]
final fun <get-windowHeight>(): kotlin/Int // com.compose.sdl/Sdl3Backend.windowHeight.<get-windowHeight>|<get-windowHeight>(){}[0]
final var windowWidth // com.compose.sdl/Sdl3Backend.windowWidth|{}windowWidth[0]
final fun <get-windowWidth>(): kotlin/Int // com.compose.sdl/Sdl3Backend.windowWidth.<get-windowWidth>|<get-windowWidth>(){}[0]
final fun applyThemeIcon() // com.compose.sdl/SDL3Backend.applyThemeIcon|applyThemeIcon(){}[0]
final fun destroy(kotlin/Boolean = ...) // com.compose.sdl/SDL3Backend.destroy|destroy(kotlin.Boolean){}[0]
final fun init(): kotlin/Boolean // com.compose.sdl/SDL3Backend.init|init(){}[0]
final fun updateWindowSize() // com.compose.sdl/SDL3Backend.updateWindowSize|updateWindowSize(){}[0]
final fun applyThemeIcon() // com.compose.sdl/Sdl3Backend.applyThemeIcon|applyThemeIcon(){}[0]
final fun destroy(kotlin/Boolean = ...) // com.compose.sdl/Sdl3Backend.destroy|destroy(kotlin.Boolean){}[0]
final fun init(): kotlin/Boolean // com.compose.sdl/Sdl3Backend.init|init(){}[0]
final fun updateWindowSize() // com.compose.sdl/Sdl3Backend.updateWindowSize|updateWindowSize(){}[0]
}
final value class <#A: kotlin/Any?> androidx.compose.ui/SessionMutex { // androidx.compose.ui/SessionMutex|null[0]
@@ -4818,6 +4818,8 @@ final val androidx.compose.ui.semantics/androidx_compose_ui_semantics_SemanticsP
final val androidx.compose.ui.spatial/androidx_compose_ui_spatial_RelativeLayoutBounds$stableprop // androidx.compose.ui.spatial/androidx_compose_ui_spatial_RelativeLayoutBounds$stableprop|#static{}androidx_compose_ui_spatial_RelativeLayoutBounds$stableprop[0]
final val androidx.compose.ui.window/androidx_compose_ui_window_DialogProperties$stableprop // androidx.compose.ui.window/androidx_compose_ui_window_DialogProperties$stableprop|#static{}androidx_compose_ui_window_DialogProperties$stableprop[0]
final val androidx.compose.ui.window/androidx_compose_ui_window_PopupProperties$stableprop // androidx.compose.ui.window/androidx_compose_ui_window_PopupProperties$stableprop|#static{}androidx_compose_ui_window_PopupProperties$stableprop[0]
final val androidx.compose.ui/LocalSystemTheme // androidx.compose.ui/LocalSystemTheme|{}LocalSystemTheme[0]
final fun <get-LocalSystemTheme>(): androidx.compose.runtime/ProvidableCompositionLocal<androidx.compose.ui/SystemTheme> // androidx.compose.ui/LocalSystemTheme.<get-LocalSystemTheme>|<get-LocalSystemTheme>(){}[0]
final val androidx.compose.ui/LocalUiMediaScope // androidx.compose.ui/LocalUiMediaScope|{}LocalUiMediaScope[0]
final fun <get-LocalUiMediaScope>(): androidx.compose.runtime/ProvidableCompositionLocal<androidx.compose.ui/UiMediaScope> // androidx.compose.ui/LocalUiMediaScope.<get-LocalUiMediaScope>|<get-LocalUiMediaScope>(){}[0]
final val androidx.compose.ui/androidx_compose_ui_AbsoluteAlignment$stableprop // androidx.compose.ui/androidx_compose_ui_AbsoluteAlignment$stableprop|#static{}androidx_compose_ui_AbsoluteAlignment$stableprop[0]
@@ -4863,7 +4865,7 @@ final val com.compose.sdl/com_compose_sdl_GpuMode_CpuRaster$stableprop // com.co
final val com.compose.sdl/com_compose_sdl_GpuMode_Metal$stableprop // com.compose.sdl/com_compose_sdl_GpuMode_Metal$stableprop|#static{}com_compose_sdl_GpuMode_Metal$stableprop[0]
final val com.compose.sdl/com_compose_sdl_GpuMode_OpenGL$stableprop // com.compose.sdl/com_compose_sdl_GpuMode_OpenGL$stableprop|#static{}com_compose_sdl_GpuMode_OpenGL$stableprop[0]
final val com.compose.sdl/com_compose_sdl_RawSdlHandles$stableprop // com.compose.sdl/com_compose_sdl_RawSdlHandles$stableprop|#static{}com_compose_sdl_RawSdlHandles$stableprop[0]
final val com.compose.sdl/com_compose_sdl_SDL3Backend$stableprop // com.compose.sdl/com_compose_sdl_SDL3Backend$stableprop|#static{}com_compose_sdl_SDL3Backend$stableprop[0]
final val com.compose.sdl/com_compose_sdl_Sdl3Backend$stableprop // com.compose.sdl/com_compose_sdl_Sdl3Backend$stableprop|#static{}com_compose_sdl_Sdl3Backend$stableprop[0]
final val com.compose.sdl/com_compose_sdl_TextLayoutConfig$stableprop // com.compose.sdl/com_compose_sdl_TextLayoutConfig$stableprop|#static{}com_compose_sdl_TextLayoutConfig$stableprop[0]
final var androidx.compose.ui.platform/isDebugInspectorInfoEnabled // androidx.compose.ui.platform/isDebugInspectorInfoEnabled|{}isDebugInspectorInfoEnabled[0]
@@ -5387,9 +5389,9 @@ final fun com.compose.sdl/com_compose_sdl_GpuMode_CpuRaster$stableprop_getter():
final fun com.compose.sdl/com_compose_sdl_GpuMode_Metal$stableprop_getter(): kotlin/Int // com.compose.sdl/com_compose_sdl_GpuMode_Metal$stableprop_getter|com_compose_sdl_GpuMode_Metal$stableprop_getter(){}[0]
final fun com.compose.sdl/com_compose_sdl_GpuMode_OpenGL$stableprop_getter(): kotlin/Int // com.compose.sdl/com_compose_sdl_GpuMode_OpenGL$stableprop_getter|com_compose_sdl_GpuMode_OpenGL$stableprop_getter(){}[0]
final fun com.compose.sdl/com_compose_sdl_RawSdlHandles$stableprop_getter(): kotlin/Int // com.compose.sdl/com_compose_sdl_RawSdlHandles$stableprop_getter|com_compose_sdl_RawSdlHandles$stableprop_getter(){}[0]
final fun com.compose.sdl/com_compose_sdl_SDL3Backend$stableprop_getter(): kotlin/Int // com.compose.sdl/com_compose_sdl_SDL3Backend$stableprop_getter|com_compose_sdl_SDL3Backend$stableprop_getter(){}[0]
final fun com.compose.sdl/com_compose_sdl_Sdl3Backend$stableprop_getter(): kotlin/Int // com.compose.sdl/com_compose_sdl_Sdl3Backend$stableprop_getter|com_compose_sdl_Sdl3Backend$stableprop_getter(){}[0]
final fun com.compose.sdl/com_compose_sdl_TextLayoutConfig$stableprop_getter(): kotlin/Int // com.compose.sdl/com_compose_sdl_TextLayoutConfig$stableprop_getter|com_compose_sdl_TextLayoutConfig$stableprop_getter(){}[0]
final fun com.compose.sdl/createRenderBackend(com.compose.sdl/SDL3Backend, com.compose.sdl/GpuMode): com.compose.sdl/RenderBackend? // com.compose.sdl/createRenderBackend|createRenderBackend(com.compose.sdl.SDL3Backend;com.compose.sdl.GpuMode){}[0]
final fun com.compose.sdl/createRenderBackend(com.compose.sdl/Sdl3Backend, com.compose.sdl/GpuMode): com.compose.sdl/RenderBackend? // com.compose.sdl/createRenderBackend|createRenderBackend(com.compose.sdl.Sdl3Backend;com.compose.sdl.GpuMode){}[0]
final fun com.compose.sdl/fileManagerName(): kotlin/String // com.compose.sdl/fileManagerName|fileManagerName(){}[0]
final fun com.compose.sdl/hasComposeResource(kotlin/String): kotlin/Boolean // com.compose.sdl/hasComposeResource|hasComposeResource(kotlin.String){}[0]
final fun com.compose.sdl/injectKey(kotlin/Int, kotlin/Boolean) // com.compose.sdl/injectKey|injectKey(kotlin.Int;kotlin.Boolean){}[0]
@@ -10,7 +10,7 @@
* Line-for-line kept in sync; the entry in compose/ui/compose-fork.txt is
* commented out so this file survives `scripts/compose-fork/sync.sh`.
*/
// VENDOR-BASE: compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/Synchronization.kt @ v1.12.0
// VENDOR-BASE: compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/Synchronization.kt @ v1.12.1
package androidx.compose.ui.platform
@@ -8,7 +8,7 @@ import androidx.compose.ui.geometry.Offset
/* Actuals for the vendored `DragAndDrop.kt` expect classes.
* Backed by SDL3's SDL_EVENT_DROP_* stream (file / text / begin / position /
* complete) - see Sdl3DragAndDropOwner + SDL3EventMapper for the pump side.
* complete) - see Sdl3DragAndDropOwner + AppEvent.kt for the pump side.
*
* DragAndDropTransferData carries the payload a drop into the window
* delivered: zero or more file paths (SDL_EVENT_DROP_FILE) plus an optional
@@ -10,7 +10,7 @@ import androidx.compose.ui.node.ModifierNodeElement
/** The per-window DragAndDropManager backing ComposeOwner. Holds a root
* DragAndDropNode installed on the root LayoutNode via [modifier]; the SDL
* event pump (see SDL3EventMapper + ComposeWindow) drives [handleDrop] which
* event pump (see AppEvent.kt + ComposeWindow) drives [handleDrop] which
* accumulates BEGIN → FILE / TEXT / POSITION → COMPLETE into a single
* DragAndDropEvent and dispatches through the node tree.
*
@@ -8,8 +8,8 @@ package androidx.compose.ui.input.key
/**
* Project [Key] actual - assigns a unique sequential Long to each named
* key. SDL3EventMapper picks the right `Key.X` by switch on SDL scancode
* (`kKeyForScancode` in `SDL3EventMapper.kt`). Comparison works because
* key. The SDL event mapper picks the right `Key.X` by switch on SDL scancode
* (`kKeyForScancode` in `AppEvent.kt`). Comparison works because
* Key is a value class - `Key(42L) == Key(42L)`.
*/
@kotlin.jvm.JvmInline
@@ -16,7 +16,7 @@
// MANUALLY VENDORED (NON-IDEMPOTENT) from compose-multiplatform-core:
// compose/ui/ui/src/skikoMain/.../node/GraphicsLayerOwnerLayer.skiko.kt
// VENDOR-BASE: compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/node/GraphicsLayerOwnerLayer.skiko.kt @ v1.12.0
// VENDOR-BASE: compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/node/GraphicsLayerOwnerLayer.skiko.kt @ v1.12.1
// Change vs upstream: dropped the trailing `SkiaGraphicsContext.setLightingInfo`
// extension + LIGHT_* constants (skiko-only shadow lighting; our shadows go via
// NativeShadowCanvas). The class body is unchanged - it is the real OwnedLayer
@@ -213,10 +213,10 @@ private fun sdlWriteEntry(entry: ClipEntry?) {
// The SDL3-backed Clipboard implementation. Singleton because SDL's clipboard
// is process-global - allocating a new one per Window() would only waste
// memory. Consumed by :desktop-native-window when seeding LocalClipboard.
private object SDL3Clipboard : Clipboard {
private object Sdl3Clipboard : Clipboard {
override suspend fun getClipEntry(): ClipEntry? = sdlReadEntry()
override suspend fun setClipEntry(clipEntry: ClipEntry?) { sdlWriteEntry(clipEntry) }
override val nativeClipboard: NativeClipboard get() = nativeClipboardSentinel
}
fun platformClipboard(): Clipboard = SDL3Clipboard
fun platformClipboard(): Clipboard = Sdl3Clipboard
@@ -9,7 +9,7 @@ import kotlinx.cinterop.*
import sdl3.*
// ==================
// MARK: SDL3EventMapper
// MARK: AppEvent + the SDL3 event mapper
// ==================
/** Events carry the SDL window id they belong to (0 = unknown - injected test
@@ -83,8 +83,7 @@ fun pollEvents(): List<AppEvent> {
}
private fun mapEvent(e: SDL_Event): AppEvent? {
val type = e.type
return when (type) {
return when (e.type) {
SDL_EVENT_QUIT -> AppEvent.Quit
SDL_EVENT_MOUSE_BUTTON_DOWN -> {
@@ -7,8 +7,6 @@ import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.input.key.KeyEvent
import kotlinx.cinterop.COpaquePointer
import kotlinx.cinterop.reinterpret
import kotlinx.cinterop.toKString
import sdl3.SDL_GetRendererName
import sdl3.SDL_MaximizeWindow
import sdl3.SDL_MinimizeWindow
import sdl3.SDL_RaiseWindow
@@ -36,7 +34,7 @@ import sdl3.SDL_SetWindowTitle
them subscribes the caller to recomposition. The setter methods
call into SDL and also push the new value into the snapshot. */
class ComposeNativeWindow constructor(
private val backend: SDL3Backend,
private val backend: Sdl3Backend,
val gpuMode: GpuMode,
initialTitle: String,
) {
@@ -16,7 +16,7 @@ package com.compose.sdl
/** Create the render backend for the selected [GpuMode]; null when the
backend can't initialise (caller falls back / reports). */
expect fun createRenderBackend(inSdl: SDL3Backend, inGpu: GpuMode): RenderBackend?
expect fun createRenderBackend(inSdl: Sdl3Backend, inGpu: GpuMode): RenderBackend?
/** The renderer module's per-OS default GpuMode (used for GpuMode.Auto). */
expect fun rendererPreferredGpuMode(): GpuMode
@@ -4,10 +4,10 @@ import kotlinx.cinterop.*
import sdl3.*
// ==================
// MARK: SDL3Backend
// MARK: Sdl3Backend
// ==================
class SDL3Backend(
class Sdl3Backend(
private val title: String = "ComposeNativeSDL3",
private val width: Int = 800,
private val height: Int = 600,
@@ -29,7 +29,7 @@ class SDL3Backend(
) {
init {
require(gpuMode !is GpuMode.Auto) {
"SDL3Backend received GpuMode.Auto - resolve via preferredGpuMode() first"
"Sdl3Backend received GpuMode.Auto - resolve via preferredGpuMode() first"
}
}
@@ -6,4 +6,4 @@ import com.compose.sdl.renderer.skia.SkiaBridge
// MARK: Linux GPU defaults
// ==================
internal actual fun makeMetalBridge(backend: SDL3Backend): SkiaBridge? = null
internal actual fun makeMetalBridge(backend: Sdl3Backend): SkiaBridge? = null
@@ -3,7 +3,7 @@ package com.compose.sdl
import com.compose.sdl.renderer.skia.SkiaBridge
import com.compose.sdl.renderer.skia.SkiaMetalBridge
internal actual fun makeMetalBridge(backend: SDL3Backend): SkiaBridge? {
internal actual fun makeMetalBridge(backend: Sdl3Backend): SkiaBridge? {
val bridge = SkiaMetalBridge(backend)
return if (bridge.init()) bridge else null
}
@@ -37,7 +37,7 @@ import sdl3.SDL_Metal_GetLayer
per frame, so we tear the BackendRenderTarget + Surface down every frame
(cheap - the DirectContext + device + queue persist). */
@OptIn(ExperimentalForeignApi::class, BetaInteropApi::class)
internal class SkiaMetalBridge(private val backend: SDL3Backend) : SkiaBridge {
internal class SkiaMetalBridge(private val backend: Sdl3Backend) : SkiaBridge {
private var mDevice: MTLDeviceProtocol? = null
private var mQueue: MTLCommandQueueProtocol? = null
private var mLayer: CAMetalLayer? = null
@@ -7,7 +7,7 @@ import kotlin.experimental.ExperimentalNativeApi
// MARK: Metal bridge factory (skia-only)
// ==================
internal expect fun makeMetalBridge(backend: SDL3Backend): SkiaBridge?
internal expect fun makeMetalBridge(backend: Sdl3Backend): SkiaBridge?
actual fun rendererPreferredGpuMode(): GpuMode {
@OptIn(ExperimentalNativeApi::class)
@@ -10,7 +10,7 @@ import com.compose.sdl.renderer.skia.SkiaRenderBackend
actual delegates here when Skia is the selected renderer). Mirrors the
SDL3 module's createRenderBackend / rendererPreferredGpuMode in the same
package; exactly one renderer module is included per target. */
actual fun createRenderBackend(inSdl: SDL3Backend, inGpu: GpuMode): RenderBackend? {
actual fun createRenderBackend(inSdl: Sdl3Backend, inGpu: GpuMode): RenderBackend? {
val vResolved = if (inGpu is GpuMode.Auto) rendererPreferredGpuMode() else inGpu
return try {
SkiaRenderBackend(inSdl, vResolved)
@@ -4,13 +4,9 @@ import com.compose.sdl.*
import kotlinx.cinterop.*
import org.jetbrains.skia.BackendRenderTarget
import org.jetbrains.skia.Bitmap
import org.jetbrains.skia.Canvas
import org.jetbrains.skia.ColorAlphaType
import org.jetbrains.skia.ColorType
import org.jetbrains.skia.DirectContext
import org.jetbrains.skia.Image
import org.jetbrains.skia.ImageInfo
import org.jetbrains.skia.Surface
import org.jetbrains.skia.SurfaceColorFormat
import org.jetbrains.skia.SurfaceOrigin
@@ -28,7 +24,7 @@ import sdl3.SDL_GL_SwapWindow
Resize: tear down and rebuild the BackendRenderTarget + Surface; the
DirectContext is reused. The default GL framebuffer (id 0) is wrapped
directly; we don't manage an offscreen FBO. */
internal class SkiaGLBridge(private val backend: SDL3Backend) : SkiaBridge {
internal class SkiaGLBridge(private val backend: Sdl3Backend) : SkiaBridge {
private var mContext: DirectContext? = null
private var mRT: BackendRenderTarget? = null
private var mSurface: Surface? = null
@@ -40,7 +36,7 @@ internal class SkiaGLBridge(private val backend: SDL3Backend) : SkiaBridge {
A GL context is per-window but "current" is per-THREAD state, so with more
than one window open the last one to touch GL owns the thread. SDL makes a
context current once at creation (SDL3Backend.init) and nothing re-bound it
context current once at creation (Sdl3Backend.init) and nothing re-bound it
per frame, so window A issued its draw and swap against window B's context:
silent corruption while both live, and a hard crash (SIGSEGV in present)
the moment B is destroyed and the current context is left dangling.
@@ -25,7 +25,7 @@ import org.jetbrains.skia.Color as SkColor
elevation shadows ride behind it via skiaLeafDrawer + the SkiaBackedCanvas
manual-vendor. */
internal class SkiaRenderBackend(
private val sdl: SDL3Backend,
private val sdl: Sdl3Backend,
private val gpuMode: GpuMode,
) : RenderBackend {
@@ -18,7 +18,7 @@ import sdl3.*
/** Owns the CPU pixel buffer Skia draws into, plus the streaming SDL_Texture
used to push that buffer onto the window. All three (buffer, Skia surface,
SDL texture) get reallocated when the window resizes. */
internal class SkiaSurfaceBridge(private val backend: SDL3Backend) : SkiaBridge {
internal class SkiaSurfaceBridge(private val backend: Sdl3Backend) : SkiaBridge {
private var mWidth = 0
private var mHeight = 0
private var mPixels: CPointer<UByteVar>? = null
@@ -9,4 +9,4 @@ import com.compose.sdl.renderer.skia.SkiaBridge
// No Metal on Windows. The default Skia bridge is CPU raster (GpuMode.CpuRaster →
// SkiaSurfaceBridge), so no GPU-context bridge is provided here yet. A D3D/Vulkan
// bridge can be added later (Route 1a milestone 2).
internal actual fun makeMetalBridge(backend: SDL3Backend): SkiaBridge? = null
internal actual fun makeMetalBridge(backend: Sdl3Backend): SkiaBridge? = null
+10 -1
View File
@@ -45,6 +45,7 @@ kotlin {
dependencies {
val vComposeJvmVersion = libs.versions.compose.get()
val vComposeM3JvmVersion = libs.versions.composeMaterial3.get()
val vAdaptiveJvmVersion = libs.versions.composeMaterial3Adaptive.get()
// Official Maven coords for everything the shared UI touches; native
// configurations substitute them for the port modules automatically
@@ -64,13 +65,21 @@ kotlin {
implementation("org.jetbrains.compose.components:components-resources:${vComposeJvmVersion}")
implementation("org.jetbrains.compose.material3:material3:$vComposeM3JvmVersion")
implementation("org.jetbrains.compose.material3.adaptive:adaptive:$vAdaptiveJvmVersion")
implementation("org.jetbrains.compose.material3.adaptive:adaptive-layout:$vAdaptiveJvmVersion")
implementation("org.jetbrains.compose.material3.adaptive:adaptive-navigation:$vAdaptiveJvmVersion")
// adaptive api-exposes window-core (WindowSizeClass). Because `adaptive`
// is SUBSTITUTED on native configs, KGP's granular-metadata visibility
// check drops its transitives from the commonMain classpath - so the
// shared screen only sees WindowSizeClass if we declare it DIRECTLY.
implementation(libs.androidx.window.core)
// Common Material Symbols Utility
implementation(project(":utils:material-symbols"))
// nav3 + lifecycle: real KMP Maven artifacts on every target
implementation(libs.androidx.navigation3.runtime)
implementation("org.jetbrains.androidx.navigation3:navigation3-ui:1.2.0-alpha02")
implementation("org.jetbrains.androidx.navigation3:navigation3-ui:1.1.2")
implementation(libs.androidx.lifecycle.viewmodel.navigation3)
}
}
@@ -81,6 +81,7 @@ val Material3Screens: List<DemoScreen> = listOf(
DemoScreen("Pickers") { M3PickersScreen() },
DemoScreen("Carousel") { M3CarouselScreen() },
DemoScreen("M3Misc") { M3MiscScreen() },
DemoScreen("Adaptive") { AdaptiveScreen() },
)
val Navigation3Screens: List<DemoScreen> = listOf(
@@ -0,0 +1,241 @@
package screens
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ListItem
import androidx.compose.material3.ListItemDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
import androidx.compose.material3.adaptive.Posture
import androidx.compose.material3.adaptive.WindowAdaptiveInfo
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
import androidx.compose.material3.adaptive.currentWindowDpSize
import androidx.compose.material3.adaptive.layout.AnimatedPane
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole
import androidx.compose.material3.adaptive.layout.calculatePaneScaffoldDirective
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.window.core.layout.WindowSizeClass
import androidx.window.core.layout.WindowSizeClass.Companion.HEIGHT_DP_EXPANDED_LOWER_BOUND
import androidx.window.core.layout.WindowSizeClass.Companion.HEIGHT_DP_MEDIUM_LOWER_BOUND
import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_EXPANDED_LOWER_BOUND
import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_MEDIUM_LOWER_BOUND
import kotlinx.coroutines.launch
/**
Probe seam: whether [AdaptiveScreen] last laid out two panes or one. The native
`--adaptivetest` probe resizes the window and asserts this flips, which is the
only way to prove the fold reacts to a LIVE resize rather than just to the size
the window happened to open at. Not part of the demo UI.
*/
internal var gAdaptiveTwoPane: Boolean = false
private set
/**
material3-adaptive running on desktop native - resize the window and watch it fold.
Upstream `org.jetbrains.compose.material3.adaptive:*` publishes ios + macosArm64
only, so this screen doubles as the runtime proof that the vendored
`:compose:material3:adaptive:*` modules work on linux and mingw too. It exercises
three of the four modules: `adaptive` ([currentWindowAdaptiveInfo]),
`adaptive-layout` ([ListDetailPaneScaffold]) and `adaptive-navigation` (the
navigator that drives the fold).
**Why the directive is computed here instead of being left to default.**
[rememberListDetailPaneScaffoldNavigator] defaults its directive to the WINDOW
size class, but this screen does not get the whole window - the demo shell spends
190dp on the sidebar plus 48dp of padding. Defaulting would fold ~240dp too late:
the panes would still be side by side in a region already too cramped for them.
So the size class is computed from the width this screen actually gets
([BoxWithConstraints]), which is what a real pane-hosting app should do too. The
header prints both numbers so the difference is visible while resizing.
*/
@OptIn(ExperimentalMaterial3AdaptiveApi::class)
@Composable
fun AdaptiveScreen() {
val vItems = remember { List(24) { "Item ${it + 1}" } }
var vSelected by remember { mutableStateOf(vItems.first()) }
val vScope = rememberCoroutineScope()
val vWindowDpSize = currentWindowDpSize()
val vWindowClass = currentWindowAdaptiveInfo().windowSizeClass
Column(
Modifier.fillMaxWidth().padding(16.dp),
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
Text("material3-adaptive", style = MaterialTheme.typography.titleLarge)
BoxWithConstraints(Modifier.fillMaxWidth()) {
// The space THIS screen was handed, not the window. maxHeight is
// infinite here (the shell hosts every screen in a verticalScroll), so
// the pane height is derived from the window instead - see below.
val vPaneWidth = maxWidth
val vPaneHeight = (vWindowDpSize.height - 200.dp).coerceIn(260.dp, 760.dp)
val vPaneClass = sizeClassFor(vPaneWidth, vPaneHeight)
val vNavigator = rememberListDetailPaneScaffoldNavigator<Nothing>(
scaffoldDirective = calculatePaneScaffoldDirective(
WindowAdaptiveInfo(vPaneClass, Posture()),
),
)
val vTwoPane = vNavigator.scaffoldDirective.maxHorizontalPartitions > 1
SideEffect { gAdaptiveTwoPane = vTwoPane }
Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {
ReadoutCard(
vWindowLine = "window ${vWindowDpSize.width.value.toInt()}x" +
"${vWindowDpSize.height.value.toInt()}dp -> " +
"minWidth ${vWindowClass.minWidthDp}dp",
vPaneLine = "this screen ${vPaneWidth.value.toInt()}x" +
"${vPaneHeight.value.toInt()}dp -> " +
"minWidth ${vPaneClass.minWidthDp}dp",
vVerdict = if (vTwoPane) {
"Wide enough: list and detail sit side by side. " +
"Narrow the window to fold them."
} else {
"Folded: one pane at a time. Pick an item to open the " +
"detail, then Back. Widen the window to unfold."
},
)
ListDetailPaneScaffold(
modifier = Modifier.fillMaxWidth().height(vPaneHeight),
directive = vNavigator.scaffoldDirective,
value = vNavigator.scaffoldValue,
listPane = {
AnimatedPane {
Card(Modifier.fillMaxSize()) {
LazyColumn {
items(vItems) { vItem ->
val vIsSelected = vItem == vSelected
ListItem(
headlineContent = { Text(vItem) },
colors = if (vIsSelected) {
ListItemDefaults.colors(
containerColor =
MaterialTheme.colorScheme.secondaryContainer,
)
} else {
ListItemDefaults.colors()
},
modifier = Modifier.fillMaxWidth().clickable {
vSelected = vItem
vScope.launch {
vNavigator.navigateTo(
ListDetailPaneScaffoldRole.Detail,
)
}
},
)
}
}
}
}
},
detailPane = {
AnimatedPane {
Card(Modifier.fillMaxSize()) {
Column(
Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
Text(
vSelected,
style = MaterialTheme.typography.headlineSmall,
)
Text(
if (vTwoPane) {
"Detail pane, side by side with the list " +
"because there is room for both."
} else {
"Detail pane, filling the scaffold because " +
"there is only room for one."
},
style = MaterialTheme.typography.bodyMedium,
)
// Only reachable when folded - with both panes up
// there is nothing to go back to.
if (vNavigator.canNavigateBack()) {
OutlinedButton(
onClick = {
vScope.launch { vNavigator.navigateBack() }
},
) { Text("Back to list") }
}
}
}
}
},
)
}
}
}
}
/** The live size readout above the scaffold - the whole point of the screen is
watching these three lines change as the window is dragged. */
@Composable
private fun ReadoutCard(vWindowLine: String, vPaneLine: String, vVerdict: String) {
Card(
Modifier.fillMaxWidth(),
colors = CardDefaults.outlinedCardColors(),
border = BorderStroke(1.dp, MaterialTheme.colorScheme.outlineVariant),
) {
Column(
Modifier.padding(12.dp),
verticalArrangement = Arrangement.spacedBy(2.dp),
) {
Text(vWindowLine, style = MaterialTheme.typography.bodySmall)
Text(vPaneLine, style = MaterialTheme.typography.bodySmall)
Text(
vVerdict,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.primary,
)
}
}
}
/**
The [WindowSizeClass] for an arbitrary region.
window-core only offers this for the window itself; the breakpoint constants are
public, so applying them to a sub-region is just a table lookup.
*/
private fun sizeClassFor(inWidth: Dp, inHeight: Dp): WindowSizeClass {
val vMinWidth = when {
inWidth.value >= WIDTH_DP_EXPANDED_LOWER_BOUND -> WIDTH_DP_EXPANDED_LOWER_BOUND
inWidth.value >= WIDTH_DP_MEDIUM_LOWER_BOUND -> WIDTH_DP_MEDIUM_LOWER_BOUND
else -> 0
}
val vMinHeight = when {
inHeight.value >= HEIGHT_DP_EXPANDED_LOWER_BOUND -> HEIGHT_DP_EXPANDED_LOWER_BOUND
inHeight.value >= HEIGHT_DP_MEDIUM_LOWER_BOUND -> HEIGHT_DP_MEDIUM_LOWER_BOUND
else -> 0
}
return WindowSizeClass(vMinWidth, vMinHeight)
}
@@ -36,7 +36,7 @@ internal fun AnimationScreen() {
"animation.core",
"animate*AsState, AnimationSpec (tween / spring / repeatable / infiniteRepeatable), " +
"Easing (Linear, FastOutSlowIn, CubicBezier), rememberInfiniteTransition. " +
"All driven by the SDL3FrameClock via withFrameNanos.",
"All driven by the Sdl3FrameClock via withFrameNanos.",
)
// ============
@@ -31,7 +31,7 @@ internal fun GestureScreen() {
ScreenTitle(
"pointerInput + gesture DSL",
"Suspending Modifier.pointerInput { } with detectTapGestures / detectDragGestures " +
"on top. Awaits resume on the SDL3FrameClock; no per-event polling.",
"on top. Awaits resume on the Sdl3FrameClock; no per-event polling.",
)
// ============
+8
View File
@@ -74,6 +74,14 @@ fun main(args: Array<String>) {
}
// Verifies nativeComposeApp multi-window: two Windows render concurrently,
// one closes via state, the app keeps running on the survivor.
// Verifies material3-adaptive reacts to a LIVE resize: one window driven
// wide -> narrow -> wide, asserting the ListDetailPaneScaffold folds and
// unfolds. The --screen=Adaptive screenshots only cover the opening size.
if (args.any { it == "--adaptivetest" }) {
runAdaptiveTest()
return
}
if (args.any { it == "--multiwintest" }) {
runMultiWindowTest()
return
@@ -0,0 +1,91 @@
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.runtime.SideEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.compose.sdl.ComposeNativeWindow
import com.compose.sdl.nativeComposeWindow
import screens.AdaptiveScreen
import screens.gAdaptiveTwoPane
/**
`--adaptivetest`: proves material3-adaptive reacts to a LIVE window resize.
The `--screen=Adaptive --width=…` screenshots only ever prove the fold is right
for the size the window OPENED at - each run is a fresh process. This drives one
window through wide → narrow → wide with `setSize`, and asserts the scaffold
folds and unfolds along the way. That exercises the whole chain: SDL resize →
the owner's snapshot-backed containerSize → recomposition → `BoxWithConstraints`
re-measure → a new `PaneScaffoldDirective` on the navigator → a new scaffold value.
The screen is hosted in the same `verticalScroll` + padding wrapper the demo
shell uses for its content pane, so the constraints match the real thing
(notably the infinite max height).
*/
internal fun runAdaptiveTest() {
var vFrames = 0
var vFacade: ComposeNativeWindow? = null
var vWide: Boolean? = null
var vFolded: Boolean? = null
var vUnfolded: Boolean? = null
// Frames to settle between each resize - SDL delivers the size change as an
// event, so the new constraints only reach layout on a later frame.
val kSettle = 6
nativeComposeWindow(
title = "adaptive probe",
width = 1400,
height = 760,
onFrame = { _, _ ->
vFrames++
when (vFrames) {
kSettle -> {
vWide = gAdaptiveTwoPane
vFacade?.setSize(760, 760)
true
}
kSettle * 2 -> {
vFolded = gAdaptiveTwoPane
vFacade?.setSize(1400, 760)
true
}
kSettle * 3 -> {
vUnfolded = gAdaptiveTwoPane
val vPass = vWide == true && vFolded == false && vUnfolded == true
println("adaptivetest: wide=$vWide folded=$vFolded unfolded=$vUnfolded")
println(
if (vPass) {
"adaptivetest: PASS (scaffold folded on resize to 760dp " +
"and unfolded again at 1400dp)"
} else {
"adaptivetest: FAIL (expected wide=true folded=false " +
"unfolded=true)"
}
)
false
}
else -> true
}
},
) {
SideEffect { vFacade = window }
MaterialTheme(colorScheme = darkColorScheme()) {
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.background)
.verticalScroll(rememberScrollState())
.padding(24.dp),
) {
AdaptiveScreen()
}
}
}
}
@@ -15,6 +15,10 @@ import com.compose.sdl.GpuMode
--frames=N quiescence cap: capture at frame N even if
the screen never settles (default 300)
Probes (each opens its own window, prints a verdict and exits):
--nav3test --backtest --clicktest --scrolltest --multiwintest --soaktest
--adaptivetest material3-adaptive folds on a live resize
Names match the Screen registry entries (case-insensitive). */
internal data class CliArgs(
val gpu: GpuMode = GpuMode.Auto,
@@ -90,11 +90,13 @@ val vGenerateVersion = tasks.register("generateBridgeVersionResource") {
val vVersion = project.version.toString()
val vCompose = libs.versions.compose.get()
val vComposeMaterial3 = libs.versions.composeMaterial3.get()
val vComposeMaterial3Adaptive = libs.versions.composeMaterial3Adaptive.get()
val vComposeRuntime = libs.versions.composeRuntime.get()
val vOut = vVersionDir.get().file("com/bitsycore/compose/sdl/gradle/bridge-version.properties").asFile
inputs.property("version", vVersion)
inputs.property("compose", vCompose)
inputs.property("composeMaterial3", vComposeMaterial3)
inputs.property("composeMaterial3Adaptive", vComposeMaterial3Adaptive)
inputs.property("composeRuntime", vComposeRuntime)
outputs.dir(vVersionDir)
doLast {
@@ -103,6 +105,7 @@ val vGenerateVersion = tasks.register("generateBridgeVersionResource") {
"version=$vVersion\n" +
"compose=$vCompose\n" +
"composeMaterial3=$vComposeMaterial3\n" +
"composeMaterial3Adaptive=$vComposeMaterial3Adaptive\n" +
"composeRuntime=$vComposeRuntime\n"
)
}
@@ -278,7 +278,7 @@ internal object IconCodec {
}
/** An 8-byte little-endian [width][height] header + straight-alpha RGBA - the
format the runtime (WindowIcon.kt / SDL3Backend) reads. */
format the runtime (WindowIcon.kt / Sdl3Backend) reads. */
fun rgbaBlob(inW: Int, inH: Int, inRgba: ByteArray): ByteArray {
val vOut = ByteArray(8 + inRgba.size)
le32(vOut, 0, inW)
@@ -47,6 +47,17 @@ private val bridgeTable = mapOf(
"org.jetbrains.compose.animation:animation-graphics" to "com.bitsycore.compose.animation:animation-graphics",
"org.jetbrains.compose.material3:material3" to "com.bitsycore.compose.material3:material3",
"org.jetbrains.compose.material:material-ripple" to "com.bitsycore.compose.material:material-ripple",
// material3-adaptive. Upstream publishes ios + macosArm64 only - no linux,
// no mingw - so the four artifacts are vendored. Nothing in the sources
// blocked those targets; upstream simply did not enable them.
"org.jetbrains.compose.material3.adaptive:adaptive"
to "com.bitsycore.compose.material3.adaptive:adaptive",
"org.jetbrains.compose.material3.adaptive:adaptive-layout"
to "com.bitsycore.compose.material3.adaptive:adaptive-layout",
"org.jetbrains.compose.material3.adaptive:adaptive-navigation"
to "com.bitsycore.compose.material3.adaptive:adaptive-navigation",
"org.jetbrains.compose.material3.adaptive:adaptive-navigation3"
to "com.bitsycore.compose.material3.adaptive:adaptive-navigation3",
"org.jetbrains.compose.components:components-resources" to "com.bitsycore.compose.components:components-resources",
"org.jetbrains.androidx.navigation3:navigation3-ui" to "com.bitsycore.navigation3:navigation3-ui",
@@ -74,12 +85,14 @@ private val bridgeTable = mapOf(
"io.coil-kt.coil3:coil-network-core" to "com.bitsycore.coil3:coil-network-core",
"io.coil-kt.coil3:coil-network-ktor3" to "com.bitsycore.coil3:coil-network-ktor3",
// Pulse MVI. Upstream publishes com.bitsycore.lib:*; the port republishes
// under com.bitsycore.pulse:* so the two coordinates never collide.
"com.bitsycore.lib:pulse" to "com.bitsycore.pulse:pulse",
"com.bitsycore.lib:pulse-viewmodel" to "com.bitsycore.pulse:pulse-viewmodel",
"com.bitsycore.lib:pulse-savedstate" to "com.bitsycore.pulse:pulse-savedstate",
"com.bitsycore.lib:pulse-compose" to "com.bitsycore.pulse:pulse-compose",
// Pulse MVI. Upstream publishes com.bitsycore.lib:*. Pulse is itself a
// com.bitsycore library, so the port's republish is namespaced under THIS
// project - a bare com.bitsycore.pulse:* would read like an upstream
// coordinate and could collide with one later.
"com.bitsycore.lib:pulse" to "com.bitsycore.compose.desktop.native.pulse:pulse",
"com.bitsycore.lib:pulse-viewmodel" to "com.bitsycore.compose.desktop.native.pulse:pulse-viewmodel",
"com.bitsycore.lib:pulse-savedstate" to "com.bitsycore.compose.desktop.native.pulse:pulse-savedstate",
"com.bitsycore.lib:pulse-compose" to "com.bitsycore.compose.desktop.native.pulse:pulse-compose",
)
/** The K/N desktop targets the port serves; configuration names carry the token. */
@@ -132,6 +145,8 @@ open class ComposeDesktopNativeBridgeExtension(
val compose: String,
/** Official material3 version (versioned separately upstream). */
val composeMaterial3: String,
/** Official material3-adaptive version (its own release train again). */
val composeMaterial3Adaptive: String,
/** Official Compose runtime version (never substituted; serves every target). */
val composeRuntime: String,
)
@@ -189,6 +204,7 @@ private fun installBridge(project: Project) {
version,
bridgeProperty("compose"),
bridgeProperty("composeMaterial3"),
bridgeProperty("composeMaterial3Adaptive"),
bridgeProperty("composeRuntime"),
)
}
@@ -196,6 +212,8 @@ private fun installBridge(project: Project) {
extra["composeDesktopNative.version"] = version
extra["composeDesktopNative.compose"] = bridgeProperty("compose")
extra["composeDesktopNative.composeMaterial3"] = bridgeProperty("composeMaterial3")
extra["composeDesktopNative.composeMaterial3Adaptive"] =
bridgeProperty("composeMaterial3Adaptive")
extra["composeDesktopNative.composeRuntime"] = bridgeProperty("composeRuntime")
}
+22 -12
View File
@@ -24,7 +24,7 @@
# Toolchain
# Policy 2 (not something CMP dictates): latest release. Newer than the Kotlin
# CMP 1.12.0 is itself built with (2.3.20), which is fine - Kotlin/Native reads
# CMP 1.12.1 is itself built with (2.3.20), which is fine - Kotlin/Native reads
# older klibs, and the whole port + both sample apps compile and link clean on
# 2.4.20 with no klib API diff against 2.4.0.
kotlin = "2.4.20"
@@ -34,21 +34,26 @@ kotlin = "2.4.20"
#
# compose = ui / foundation / animation / material
# composeMaterial3 = material3, which rides its own train upstream:
# 1.12.0-alpha03 IS what CMP 1.12.0 ships
# 1.12.0-alpha03 IS what CMP 1.12.1 ships
# (Jetpack material3 1.5.0-alpha22)
# composeMaterial3Adaptive = material3-adaptive, its own train again
# (CMP 1.12.1 maps it to Jetpack adaptive 1.3.0-beta02)
# composeRuntime = the official runtime klibs, never substituted
#
# Consumed by the bridge plugin (stamped into bridge-version.properties and
# exposed to consumers) and by demo / apidemo / material-symbols.
compose = "1.12.0"
compose = "1.12.1"
composeMaterial3 = "1.12.0-alpha03"
composeRuntime = "1.12.0"
# material3-adaptive rides its own train too. Used ONLY for the apps' JVM parity
# leg - the native leg gets the vendored :compose:material3:adaptive:* modules.
composeMaterial3Adaptive = "1.3.0-rc01"
composeRuntime = "1.12.1"
# ============
# Skia
# CMP 1.12.0 pins skiko 0.150.1, so macOS/Linux use exactly that.
# CMP 1.12.1 pins skiko 0.150.1, so macOS/Linux use exactly that.
skiko = "0.150.1"
# The bitsycore skiko FORK for mingwX64 (skiko + Skia inside
# skiko-windows-x64.dll). Its `-mingw.N` base MUST stay equal to `skiko` above.
@@ -60,15 +65,19 @@ skikoMingw = "0.150.1-mingw.2"
androidxLifecycle = "2.11.0"
androidxCollection = "1.5.0"
# material3-adaptive api-exposes window-core. GOOGLE coordinates like the rest of
# the androidx stack here - both sets publish linux + mingw + macos for this one.
androidxWindow = "1.5.0"
androidxGraphicsShapes = "1.1.0"
# CMP ships org.jetbrains.androidx.navigationevent 1.1.0 == Jetpack 1.1.1; 1.1.2
# is the latest PATCH of that same minor, so it stays inside policy 1.
androidxNavigationEvent = "1.1.2"
# CMP ships org.jetbrains.androidx.navigation3 1.2.0-alpha02 == Jetpack
# 1.2.0-alpha04. Stay exactly there: it is a pre-release line, so alpha-to-alpha
# can move API under the vendored :navigation3:navigation3-ui.
navigation3Runtime = "1.2.0-alpha04"
# EXCEPTION to policy 1, deliberate: CMP 1.12.0 builds against savedstate 1.4.0,
# CMP 1.12.1 moved navigation3 BACKWARDS off the alpha line onto stable 1.1.7
# (redirectversions.toml; upstream re-checked navigation3 out of release/1.11).
# The vendored :navigation3:navigation3-ui is that same 1.1.7 source, so the
# runtime has to follow it down - a 1.2.0-alpha runtime no longer matches.
navigation3Runtime = "1.1.7"
# EXCEPTION to policy 1, deliberate: CMP 1.12.1 builds against savedstate 1.5.0-alpha01,
# and androidx.lifecycle 2.11.0 *requires* 1.4.0 - but only as a MINIMUM, so
# 1.5.0 resolves with no conflict. Taken on purpose to hand consumers the newer
# savedstate API; the delta is additive within the same major.
@@ -81,7 +90,7 @@ androidxSavedState = "1.5.0"
# (KOIN_REF / COIL_REF in scripts/compose-fork/compose.properties) - bump both.
koin = "4.2.2"
coil = "3.6.2"
coil = "3.6.3"
# ============
# Infrastructure (not in CMP - latest release, policy 2)
@@ -91,7 +100,7 @@ kotlinxDateTime = "0.8.0"
kotlinxSerialization = "1.11.0"
kotlinxIoOkio = "0.9.1"
okio = "3.18.2"
ktor = "3.5.2"
ktor = "3.6.0"
[libraries]
@@ -107,6 +116,7 @@ skiko = { module = "org.jetbrains.skiko:skiko", version.ref = "skiko" }
# every class on the path twice.
androidx-collection = { module = "androidx.collection:collection", version.ref = "androidxCollection" }
androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidxWindow" }
androidx-graphics-shapes = { module = "androidx.graphics:graphics-shapes", version.ref = "androidxGraphicsShapes" }
androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidxLifecycle" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "androidxLifecycle" }
@@ -116,8 +116,6 @@ final val androidx.navigation3.ui/androidx_navigation3_ui_NavDisplay_PopTransiti
final val androidx.navigation3.ui/androidx_navigation3_ui_NavDisplay_PredictivePopTransitionKey$stableprop // androidx.navigation3.ui/androidx_navigation3_ui_NavDisplay_PredictivePopTransitionKey$stableprop|#static{}androidx_navigation3_ui_NavDisplay_PredictivePopTransitionKey$stableprop[0]
final val androidx.navigation3.ui/androidx_navigation3_ui_NavDisplay_TransitionKey$stableprop // androidx.navigation3.ui/androidx_navigation3_ui_NavDisplay_TransitionKey$stableprop|#static{}androidx_navigation3_ui_NavDisplay_TransitionKey$stableprop[0]
final fun <#A: kotlin/Any> androidx.navigation3.scene/NavigationBackHandler(androidx.navigation3.scene/SceneState<#A>, androidx.navigationevent.compose/NavigationEventState<androidx.navigation3.scene/SceneInfo<#A>>?, kotlin/Function0<kotlin/Unit>?, kotlin/Function0<kotlin/Unit>, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.navigation3.scene/NavigationBackHandler|NavigationBackHandler(androidx.navigation3.scene.SceneState<0:0>;androidx.navigationevent.compose.NavigationEventState<androidx.navigation3.scene.SceneInfo<0:0>>?;kotlin.Function0<kotlin.Unit>?;kotlin.Function0<kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any>}[0]
final fun <#A: kotlin/Any> androidx.navigation3.scene/rememberNavigationEventState(androidx.navigation3.scene/SceneState<#A>, androidx.compose.runtime/Composer?, kotlin/Int): androidx.navigationevent.compose/NavigationEventState<androidx.navigation3.scene/SceneInfo<#A>> // androidx.navigation3.scene/rememberNavigationEventState|rememberNavigationEventState(androidx.navigation3.scene.SceneState<0:0>;androidx.compose.runtime.Composer?;kotlin.Int){0§<kotlin.Any>}[0]
final fun <#A: kotlin/Any> androidx.navigation3.scene/rememberSceneState(kotlin.collections/List<androidx.navigation3.runtime/NavEntry<#A>>, androidx.navigation3.scene/SceneStrategy<#A>, kotlin/Function0<kotlin/Unit>, androidx.compose.runtime/Composer?, kotlin/Int): androidx.navigation3.scene/SceneState<#A> // androidx.navigation3.scene/rememberSceneState|rememberSceneState(kotlin.collections.List<androidx.navigation3.runtime.NavEntry<0:0>>;androidx.navigation3.scene.SceneStrategy<0:0>;kotlin.Function0<kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int){0§<kotlin.Any>}[0]
final fun <#A: kotlin/Any> androidx.navigation3.scene/rememberSceneState(kotlin.collections/List<androidx.navigation3.runtime/NavEntry<#A>>, kotlin.collections/List<androidx.navigation3.scene/SceneStrategy<#A>>, kotlin.collections/List<androidx.navigation3.scene/SceneDecoratorStrategy<#A>>?, androidx.compose.animation/SharedTransitionScope?, kotlin/Function0<kotlin/Unit>, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): androidx.navigation3.scene/SceneState<#A> // androidx.navigation3.scene/rememberSceneState|rememberSceneState(kotlin.collections.List<androidx.navigation3.runtime.NavEntry<0:0>>;kotlin.collections.List<androidx.navigation3.scene.SceneStrategy<0:0>>;kotlin.collections.List<androidx.navigation3.scene.SceneDecoratorStrategy<0:0>>?;androidx.compose.animation.SharedTransitionScope?;kotlin.Function0<kotlin.Unit>;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any>}[0]
final fun <#A: kotlin/Any> androidx.navigation3.ui/NavDisplay(androidx.navigation3.scene/SceneState<#A>, androidx.navigationevent.compose/NavigationEventState<androidx.navigation3.scene/SceneInfo<#A>>, androidx.compose.ui/Modifier?, androidx.compose.ui/Alignment?, androidx.compose.animation/SizeTransform?, kotlin/Function1<androidx.compose.animation/AnimatedContentTransitionScope<androidx.navigation3.scene/Scene<#A>>, androidx.compose.animation/ContentTransform>?, kotlin/Function1<androidx.compose.animation/AnimatedContentTransitionScope<androidx.navigation3.scene/Scene<#A>>, androidx.compose.animation/ContentTransform>?, kotlin/Function2<androidx.compose.animation/AnimatedContentTransitionScope<androidx.navigation3.scene/Scene<#A>>, kotlin/Int, androidx.compose.animation/ContentTransform>?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // androidx.navigation3.ui/NavDisplay|NavDisplay(androidx.navigation3.scene.SceneState<0:0>;androidx.navigationevent.compose.NavigationEventState<androidx.navigation3.scene.SceneInfo<0:0>>;androidx.compose.ui.Modifier?;androidx.compose.ui.Alignment?;androidx.compose.animation.SizeTransform?;kotlin.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation3.scene.Scene<0:0>>,androidx.compose.animation.ContentTransform>?;kotlin.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation3.scene.Scene<0:0>>,androidx.compose.animation.ContentTransform>?;kotlin.Function2<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation3.scene.Scene<0:0>>,kotlin.Int,androidx.compose.animation.ContentTransform>?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){0§<kotlin.Any>}[0]
@@ -5,9 +5,7 @@ commonMain/kotlin/ -> src/vendor/common/kotlin/
# | commonMain/kotlin/androidx/navigation3/ListUtils.kt -> src/vendor/common/kotlin/androidx/navigation3/ListUtils.kt
# | commonMain/kotlin/androidx/navigation3/scene/BackStackAwareLifecycleNavEntryDecorator.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/BackStackAwareLifecycleNavEntryDecorator.kt
# | commonMain/kotlin/androidx/navigation3/scene/DialogScene.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/DialogScene.kt
# | commonMain/kotlin/androidx/navigation3/scene/NavigationEventHandler.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/NavigationEventHandler.kt
# | commonMain/kotlin/androidx/navigation3/scene/OverlayScene.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/OverlayScene.kt
# | commonMain/kotlin/androidx/navigation3/scene/RememberNavigationEventState.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/RememberNavigationEventState.kt
# | commonMain/kotlin/androidx/navigation3/scene/Scene.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/Scene.kt
# | commonMain/kotlin/androidx/navigation3/scene/SceneDecoratorStrategy.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/SceneDecoratorStrategy.kt
# | commonMain/kotlin/androidx/navigation3/scene/SceneInfo.kt -> src/vendor/common/kotlin/androidx/navigation3/scene/SceneInfo.kt
@@ -5,7 +5,7 @@
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.pulse:pulse-compose>
// Library unique name: <com.bitsycore.compose.desktop.native.pulse:pulse-compose>
open annotation class com.bitsycore.lib.pulse.scopes/PulseScopeDsl : kotlin/Annotation { // com.bitsycore.lib.pulse.scopes/PulseScopeDsl|null[0]
constructor <init>() // com.bitsycore.lib.pulse.scopes/PulseScopeDsl.<init>|<init>(){}[0]
}
@@ -5,7 +5,7 @@
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.pulse:pulse-savedstate>
// Library unique name: <com.bitsycore.compose.desktop.native.pulse:pulse-savedstate>
abstract class <#A: kotlin/Any, #B: kotlin/Any, #C: kotlin/Any> com.bitsycore.lib.pulse.savedstate/PulseSavedStateViewModel : com.bitsycore.lib.pulse.viewmodel/PulseViewModel<#A, #B, #C> { // com.bitsycore.lib.pulse.savedstate/PulseSavedStateViewModel|null[0]
constructor <init>(com.bitsycore.lib.pulse.container/ContainerContract<#A, #B, #C>, #A, androidx.lifecycle/SavedStateHandle, kotlinx.serialization/KSerializer<#A>, kotlin/String = ...) // com.bitsycore.lib.pulse.savedstate/PulseSavedStateViewModel.<init>|<init>(com.bitsycore.lib.pulse.container.ContainerContract<1:0,1:1,1:2>;1:0;androidx.lifecycle.SavedStateHandle;kotlinx.serialization.KSerializer<1:0>;kotlin.String){}[0]
}
@@ -5,7 +5,7 @@
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.pulse:pulse-viewmodel>
// Library unique name: <com.bitsycore.compose.desktop.native.pulse:pulse-viewmodel>
abstract class <#A: kotlin/Any, #B: kotlin/Any, #C: kotlin/Any> com.bitsycore.lib.pulse.viewmodel/PulseViewModel : androidx.lifecycle/ViewModel, com.bitsycore.lib.pulse.container/ContainerHost<#A, #B, #C> { // com.bitsycore.lib.pulse.viewmodel/PulseViewModel|null[0]
constructor <init>(com.bitsycore.lib.pulse.container/ContainerContract<#A, #B, #C>, #A, #A? = ...) // com.bitsycore.lib.pulse.viewmodel/PulseViewModel.<init>|<init>(com.bitsycore.lib.pulse.container.ContainerContract<1:0,1:1,1:2>;1:0;1:0?){}[0]
+1 -1
View File
@@ -5,7 +5,7 @@
// - Show manifest properties: true
// - Show declarations: true
// Library unique name: <com.bitsycore.pulse:pulse>
// Library unique name: <com.bitsycore.compose.desktop.native.pulse:pulse>
open annotation class com.bitsycore.lib.pulse.internal/ExperimentalPulse : kotlin/Annotation { // com.bitsycore.lib.pulse.internal/ExperimentalPulse|null[0]
constructor <init>() // com.bitsycore.lib.pulse.internal/ExperimentalPulse.<init>|<init>(){}[0]
}
+9 -8
View File
@@ -4,15 +4,16 @@
# JetBrains/compose-multiplatform-core -- pinned to the durable TAG (fetchable by name
# from any fresh clone, unlike a bare unreferenced SHA which upstream could GC).
# 2026-09-11: v1.12.0 STABLE. Both repos carry a clean `v1.12.0` tag and the
# matching artifacts are on Maven Central, so the native (vendored) side and the
# JVM parity leg are back in lockstep - no dev-build skew to document. The JVM
# forcing lives in gradle/libs.versions.toml (`compose`), which must stay equal
# to this ref's base version.
COMPOSE_CORE_REF=v1.12.0
# 2026-09-22: v1.12.1. Both repos carry a clean `v1.12.1` tag and the matching
# artifacts are on Maven Central, so the native (vendored) side and the JVM
# parity leg stay in lockstep - no dev-build skew to document. The JVM forcing
# lives in gradle/libs.versions.toml (`compose`), which must stay equal to this
# ref's base version. skiko is unchanged at 0.150.1, so the mingw fork still
# matches its Skia base.
COMPOSE_CORE_REF=v1.12.1
# JetBrains/compose-multiplatform (umbrella repo -- :components-resources runtime)
COMPOSE_REF=v1.12.0
COMPOSE_REF=v1.12.1
# InsertKoinIO/koin -- the DI layer. koin-core itself publishes mingwX64 + linux
# klibs and is consumed from Maven as-is; only the viewmodel / compose modules
@@ -22,7 +23,7 @@ KOIN_REF=4.2.2
# coil-kt/coil -- image loading. coil-core / coil / coil-svg / coil-network-*
# publish linux but NOT mingwX64; the compose layer publishes neither. The code
# is target-agnostic, so vendoring is mostly re-declaring the targets.
COIL_REF=3.6.2
COIL_REF=3.6.3
# bitsycore/pulse-mvi -- the MVI layer. Targets android / jvm / ios / js / wasm
# upstream, with NO macos / linux / mingw, so all four modules are vendored.
+4
View File
@@ -81,6 +81,10 @@ include(":compose:animation:animation-graphics")
include(":compose:foundation:foundation")
include(":compose:foundation:foundation-layout")
include(":compose:material3:material3")
include(":compose:material3:adaptive:adaptive")
include(":compose:material3:adaptive:adaptive-layout")
include(":compose:material3:adaptive:adaptive-navigation")
include(":compose:material3:adaptive:adaptive-navigation3")
include(":compose:material:material-ripple")
include(":compose:desktop:native:desktop-native-window")
include(":sdl:sdl-core")