Skip to content

Commit

Permalink
Release to main 200.5.0 (#535)
Browse files Browse the repository at this point in the history
* enable the publication of artifacts which include the build number in the version.

* bump version

* add lambda to authenticator

* add util methods

* add lambda to DialogAuthenticator

* cherry pick to v.next (#103)

* use launchCustomTabs in OAuthUserSignInActivity

* fix issue with pressing cancel button

* Merge pull request #104 from Esri/sorenoid/update-auth-readme

use updated name of the auth dependency in README

* reinstate onWindowFocusChanged in OAuthUserSignInActivity

* use didLaunch logic in OAuthAuthenticator for lambda scenario as well

* rm context receivers

* remove ontopresumedactivitychanged

* Trigger onFacilityChanged along with the levelChanged when selectedLevelId is programmatically updated (#111)

* reorganize OAuthAuthenticator

* update readme

* Don't suggest singleInstance

* add doc to method

* eof newline

* move composable to activity scope

* mv viewmodel definition to class level

* mv Authenticator definition to setContent block

* pass vm as argument to auth app

* fix readme numbering

* add note about redirect uri

* update doc for new param

* simplify side effect

* Address pr comments

* rename Extensions file

* rework OAuthAuthenticator to move launcher

* update readme

* Deletes WebView's session if  `preferPrivateWebBrowserSession` is enabled  (#119)

* added geo composable map

* Update gradle

* Delete SceneComposable.kt

* Revert "Delete SceneComposable.kt"

This reverts commit 5f9b41ee2ba73ca97f4c937f079239a791ae4d68.

* upgrades to match the API's gradle versions so we can easily include the API as a composite build. Also clears some false warnings in gradle files

* renamed to module geo-compose

* fixes for displaying FloorFilter facilitySelector when Sites are not present in the map (#153)

* Create t9nmanifest.txt (#167)

* removed module and microapp (#208)

* Update gradle.properties (#211)

* Update build.gradle.kts (#212)

* updates client id and redirect Uri (#216)

* Take out build numbers for publishing (#219)

* update dependency section of readme for 200.3.0 (#220)

* Improve WebView Display (#213)

* Update gradle.properties (#238)

* Update dependency versions (#235)

* kdoc project to doc the released toolkit components. (#284)

* kdoc project to doc the released toolkit components.

* add dependencies on the dependencies of the released projects.

* Update kdoc/build.gradle.kts

Co-authored-by: Erick Lopez Solis <[email protected]>

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>

* Add version to API ref (#314)

* Feature branches/geo compose (#355)

* Implements setting and modifying a map/layers (#136)

* changes to display a map

* remove unnecessary line

* add viewmodel to the micro app

* Revert "add viewmodel to the micro app"

This reverts commit cfc6b0b39aff5cb79d5ef191e6cdd5634415925f.

* address code review feedback

* remove unused imports

* add overlay support (#143)

* add overlay support

* add doc

* remove the fillmaxsize modifier

* remove MapState

* add viewpointChangedLambda (#159)

* add viewpointChangedLambda

* address code review feedback

* Support LocationDisplay (#160)

* add location display micro app

* add location permissions

* add support for location display

* screen to start/stop a location display

* fix typo

* show error message if location display fails to start

* add AppBar and auto pan mode options

* fix type of key

* improve doc

* add readme

* adjust screen shot size

* adjust screen shot size

* set MapView properties in the update callback

* use by remember for mutable state

* set error message when LDS fails to start when toggling switch

* fix doc references to composable Map

* Compose Map InteractionOptions (#163)

* Rename - Compose MapView (#165)

* Compose MapView: Geometry editor (#170)

* Compose MapView: SelectionProperties (#173)

* add support for WrapAroundMode (#176)

* Compose MapView:  ViewLabelProperties (#174)

* add implementation for gesture events (#172)

* add implementation for gesture events

* update SDK dependency
add Events exposed on GeoView

* address code review comment

* address code review comments

* refactor mapView.viewpointChanged

* Compose Map - graphics overlay (#166)

* moved GraphicsOverlaysUpdater (#183)

* added grid & backgroundGrid impl (#192)

* Draw Status (#186)

* Geometry editor micro-app (#178)

* added invoke (#197)

* Update MapView doc pattern (#191)

* add support for attribution text (#187)

* add support for attribution text

* combine attribution bar properties/events in a state object

* refactor mapview parameter list

* update collect lambda

* Update doc

* update doc

* Add spatialreference changed callback (#193)

* invoke currentOnInteractingChanged with initial value of isInteracting

* add callback to mapview

* rm initial value calls

* change ?.let calls to ?.invoke

* move parameter above onInteractingChanged

* move launch statement above onInteracitngChanged

* MapView Rotation & Scale (#195)

* Add inset support (#182)

* add mapview inset app

* add app to settings.gradle

* WIP

* update formatting

* address code review comments

* update setViewInset values

* add readme

* Update README.md

* add doc

* address code review feedback

* rename mapinsets to insets

* rename mapinsets

* update doc

* address code review comments

* Add mapview proxy (#190)

* create MapViewOperator class

* add param to MapView composable

* add locationToScreen and doc

* more doc

* refactor MapView composable to remove unnecessary code

* move mapoperator mapview setting to own disposable effect

* don't use synchronize for operations

* Eof newline

* make MapViewOperator derive from a new GeoViewOperator

* eof newline

* return null if nan from locationToScreen

* add copyrights

* fix doc

* fix doc

* rename operator to proxy

* rm overlay param again

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/GeoViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapView.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Apply doc fixes from code review

Co-authored-by: Puneet Prakash <[email protected]>

* mv param below geometry editor

* fix doc line length

* fix param doc

* fix param doc

---------

Co-authored-by: Gunther Heppner <[email protected]>
Co-authored-by: Puneet Prakash <[email protected]>

* update the copyright to the apache License (#203)

* add support for onNavigationChanged (#199)

* add support for onNavigationChanged

* add doc

* MapView TimeExtent (#194)

* Support for setting Viewpoint on MapView (#202)

* support for ViewpointOperation - initial commit

* MapViewpointOperation - prototyping

* implement await() on MapViewpointOperation, remove onCompleted callbacks

* renaming

* add execute extension for remaining operations

* rename Bounding to SetBoundingGeometry

* add set bookmark

* add remaining operations to when statement

* make execute an abstract fun on MapViewpointOperation

* Add set viewpoint app

* fix typo

* add dependency to microapp on geocompose

* add simple app to set viewpoint with different options

* add progress indicator to demonstrate await pattern

* extract bookmark to remembered val

* make abstract fun an extension fun instead

* add doc

* add readme to microapp

* eof newline

* fix readme title

* rever locationdisplayapp changes

* update screenshot

* update readme wording

* use a simple list instead of reflection

* add doc to MainScreen

* add dash to project app name

* naming and doc changes

* mv onViewpointChanged parameter

* change dfeautl animate duration to 0.25

* update microapp module namw

---------

Co-authored-by: Hudson Miears <[email protected]>

* Refactor mapview insets app (#206)

* update all since tags in geo-compose module (#227)

* Geo-compose: add identify methods and microapp (#223)

* add methods to geoviewproxy

* rename identifyLayer and identifyGraphicsOverlay to identify as overloads

* add prototype app

* fix recursive bug

* refactor app to separate subcomponents

* make one source of truth for geoview in geoviewproxy

* make one source of truth for geoview in geoviewproxy

* mv business logic to view model class

* update doc

* add doc to microapp

* add top bar

* add readme and screenshot

* adjust readme description

* adjust string resources and error messages

* modify identify method to be cancellable and consolidate logic

* adjust bottom sheet to only expand to half screen height and move map viewpoint

* rename EventDetails -> IdentifyDetails

* nullGEoViewErrorMessage no longer uses a getter

* rework caching of mapview in proxy to match previous implementation

* change doc DIPS -> Dp

* fix tolerance parameter types -> Dp

* use nullable maximumResults to match swift

* sanitize max results

* rm yield

* add doc enhancements

* extract maximum results fun

* clamp 0 values for maximumResults

* rm throws doc

* adjust insets on bottom sheet state change

* rm insets behavior

* fix doc references

* fix doc 200.4.0

* update screenshot

* rename className prop

* make details height a const

* Rename MapView-related microapps to have MapView prefix (#226)

* Rename MapView-related microapps to have MapView prefix

* Rename all other instances with mapview prefix

* rename names in readmes

* rename files

* rename test directories

* add onUnitsPerDipChanged callback lambda (#232)

* Add exportImage fun to GeoViewProxy (#233)

* Add exportImage fun to GeoViewProxy

* update doc

* update doc

* add isWrapAroundEnabled property to GeoViewProxy (#231)

* add isWrapAroundEnabled property to GeoViewProxy

* update @since

* add doc

* Geo-compose: add basic SceneView function (#230)

* add SceneView function

* eof newline

* fix doc and copyright

* don't use fully qualified sceneview

* added compose BOM (#237)

* add ViewPointState (#234)

* add ViewPointState

* address code review feedback

* update doc

* Hud10837/layer view state (#228)

* add methods to geoviewproxy

* rename identifyLayer and identifyGraphicsOverlay to identify as overloads

* add prototype app

* fix recursive bug

* refactor app to separate subcomponents

* make one source of truth for geoview in geoviewproxy

* make one source of truth for geoview in geoviewproxy

* mv business logic to view model class

* update doc

* add doc to microapp

* add top bar

* add readme and screenshot

* adjust readme description

* adjust string resources and error messages

* modify identify method to be cancellable and consolidate logic

* adjust bottom sheet to only expand to half screen height and move map viewpoint

* rename EventDetails -> IdentifyDetails

* nullGEoViewErrorMessage no longer uses a getter

* rework caching of mapview in proxy to match previous implementation

* change doc DIPS -> Dp

* fix tolerance parameter types -> Dp

* use nullable maximumResults to match swift

* sanitize max results

* rm yield

* add doc enhancements

* extract maximum results fun

* clamp 0 values for maximumResults

* rm throws doc

* adjust insets on bottom sheet state change

* add layerviewstatechanged callback

* add getLayerViewState

* move getLayerViewState

* mv param position and fix identify mainscreen

* SceneView: add sceneview gesture events (#241)

* add SceneView function

* eof newline

* fix doc and copyright

* add gesture events

* fix param doc"

* SceneView: create SceneViewProxy (#246)

* create initial SceneViewProxy class

* add disposal logic to proxy class

* add sceneViewProxy to SceneView

* add copyright

* SceneView: graphics overlays (#245)

* extract graphicsoverlayupdater

* eof newline

* SceneView: add scene viewpoint operation (#240)

* create SceneViewpointOperation

* add operation to sceneview

* add all operations for sceneview

* add doc

* eof newline

* eof newline

* Don't use named params on viewpoint updater

* use kotlinx cancellation exception

* add copyright

* use duration in viewpoint operations

* doc

* rename durationSeconds and fix microapp

* Update feature branch with v.next (#243)

* add navigationchanged to sceneview (#248)

* SceneView: add ViewLabelProperties (#249)

* add viewlabelproperties to sceneview'

* fix doc

---------

Co-authored-by: Gunther Heppner <[email protected]>

* SceneView: attribution (#247)

* mv AttributionStateHandler function to AttributionState.kt

* add attributionState param to SceneView

* add @since tag

---------

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt (#253)

Co-authored-by: Gunther Heppner <[email protected]>

* shared the ViewpointChangedState with SceneView (#261)

* SceneView TimeExtent (#260)

* shared the ViewpointChangedState with SceneView

* review update

* merge with the feature branch

* SceneView spatial reference changed (#258)

* add spatial ref changed support

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

* shared the ViewpointChangedState with SceneView

---------

Co-authored-by: Puneet Prakash <[email protected]>

* shared the ViewpointChangedState with SceneView (#257)

* add layerViewStateChanged to SceneView (#262)

* The view property needs to be assigned in ViewProxy class (#264)

* add cameraController oaram to sceneview (#265)

* add onDrawStatusChanged to SceneView (#266)

* add FieldOfView (#270)

* SceneView: add sunLighting and sunTime (#275)

* add sunLighting and sunTime

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

---------

Co-authored-by: Puneet Prakash <[email protected]>

* SceneView current viewpoint camera (#256)

* add getCurrentViewpointCamera in proxy

* expose the currentViewpoint property

* impls current view camera

* adds a space for lambda

* merged with feature branch.

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

---------

Co-authored-by: Puneet Prakash <[email protected]>

* add atmosphereEffect (#278)

* Add funs for screen coordinate conversion (#272)

* Add funs for screen coordinate conversion

* update doc

* update doc for SceneView Suntime and SunLighting (#282)

* SceneView: AnalysisOverlayCollection (#269)

* create AnalysisOverlayCollection

* mv factory for graphics overlay collection

* add analysis to scene view

* eof newlines

* add doc

* Fix doc that mentions graphics overlays

Co-authored-by: Puneet Prakash <[email protected]>

* mv factory function to SceneView file

* address doc comments

* mv updater to SceneView file

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

---------

Co-authored-by: Puneet Prakash <[email protected]>

* Add space effects on the scene view (#281)

* add space effects on scene view

* update the comment

* SceneView: ambient light color (#279)

* add sceneview ambientLightColor param

* fix doc

* rm full stop

* SceneView: add manual rendering funs to SceneViewProxy (#280)

* add manual rendering funs to SceneViewProxy

* Fix doc

* fix doc

* SceneView: ImageOverlays (#274)

* add ImageOverlayCollection and property

* mv factory function to SceneView file

* fix doc comments

* mv updater to sceneview.kt

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

* use data object for Cleared event

* use data object for cleared even tin AnalysisOverlayCollection

* use data object for cleared event in GraphicsOverlayCollection

---------

Co-authored-by: Puneet Prakash <[email protected]>

* SceneView: lighting options microapp (#286)

* add sceneview ambientLightColor param

* add space effects on scene view

* update the comment

* fix doc

* create lighting options microapp base

* set up dropdown menu

* add sun time options

* add lighting mode options

* add Ambient light color options

* add atmosphere effect options

* add space effect options

* change viewpoint and fix sun time picker

* clean up code

* use sliders instead of textfields for rgb colors

* add doc

* add readme and screenshot

* eof newline

* add doc to components

* add missing imports

* Add doc DropdownMenuAlertDialog

* add missing copyright headers

* add doc RgbaSlider

* add remaining doc

* Update microapps/SceneViewLightingOptionsApp/README.md

Co-authored-by: Gunther Heppner <[email protected]>

---------

Co-authored-by: Changan Shi <[email protected]>
Co-authored-by: Gunther Heppner <[email protected]>

* bumping sdk to 4122 (#300)

Co-authored-by: Soren Roth <[email protected]>

* add maven publishing to geo-compose (#301)

Co-authored-by: Soren Roth <[email protected]>

* Scene view camera controller app (#288)

* init implementation for camera controller

* add gitignore

* adds comments and remove view model.

* update the doc and png image

* update the comment

* add the extra space line

* update the screenshot

* review update

* update the 2023 comment

* update the comment

* review update

* v next merge to geo compose (#303)

* change name of Licesne file in preparation for migration to Esri

* revert change to license file name

* remove extra license file

* Update README.md images (#102)

* holder commit

* Update README.md

update link

* upload screenshot image

* add images to the micro app

* Update README.md

* Update README.md

* use updated name of the auth dependency in README

* Create t9nmanifest.txt (#167)

* removed module and microapp (#208)

* Update gradle.properties (#211)

* Update build.gradle.kts (#212)

* updates client id and redirect Uri (#216)

* Take out build numbers for publishing (#219)

* update dependency section of readme for 200.3.0 (#220)

* Improve WebView Display (#213)

* Update gradle.properties (#238)

* Update dependency versions (#235)

* kdoc project to doc the released toolkit components. (#284)

* kdoc project to doc the released toolkit components.

* add dependencies on the dependencies of the released projects.

* Update kdoc/build.gradle.kts

Co-authored-by: Erick Lopez Solis <[email protected]>

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>

* add kdoc project!

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Puneet Prakash <[email protected]>
Co-authored-by: Rama Chintapalli <[email protected]>
Co-authored-by: Shubham Sharma <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>
Co-authored-by: Gunther Heppner <[email protected]>
Co-authored-by: hud10837 <[email protected]>

* Micro app - sceneview viewpoint navigation (#291)

* add micro app

* update doc

* add readme, screenshot. Remove use of spinner

* update readme

* update doc

* update readme

* update screenshot

* update image,
add new location
remove unused imports

* Geo-Compose: Add module README (#294)

* add readme and screenshot to geo-compose module

* use table for screenshot

* reduce screenshot size

* reduce screenshot size

* reduce screenshot size

* increase screenshot size

* reduce screenshot size

* Deprecate composable-map (#293)

* changes for authentication and compass app

* update floorfilter micro app

* deprecate composable map

* update deprecated annotation

* add deprecation annotation to public components

* update template-app to use geo-compose module

* remove unused import
reformat code

* Add missing doc to geo-compose classes (#307)

* added attribution bar changes (#309)

* Geo-compose: Remove ViewpointChangedEvent (#310)

* modify mapview with new params

* modify sceneview with new params

* delete viewpointchangedstate

* Geo-compose: Remove ViewpointOperations (#316)

* rm MapViewpointOperation

* rm SceneViewpointOperation

* add mapviewproxy methods

* add sceneviewproxy methods

* update mapview set viewpoint app

* refactor sceneview setviewpointapp

* refactor mapview setviewpointapp to match structure of sceneview app

* update readmes

* rm progress indicator from sceneview app

* address pr comments

* address pr comments

* Compose doc improvements (#315)

* Add @Stable annotation #319

* Update SceneViewCameraController app to use SceneViewProxy  (#325)

* Update SceneViewCameraController app to use SceneViewProxy setViewPointCameraAnimated function

* update floorFilterApp

* Merge v.next into feature-branches/geo-compose (#327)

* change name of Licesne file in preparation for migration to Esri

* revert change to license file name

* remove extra license file

* Update README.md images (#102)

* holder commit

* Update README.md

update link

* upload screenshot image

* add images to the micro app

* Update README.md

* Update README.md

* use updated name of the auth dependency in README

* Create t9nmanifest.txt (#167)

* removed module and microapp (#208)

* Update gradle.properties (#211)

* Update build.gradle.kts (#212)

* updates client id and redirect Uri (#216)

* Take out build numbers for publishing (#219)

* update dependency section of readme for 200.3.0 (#220)

* Improve WebView Display (#213)

* Update gradle.properties (#238)

* Update dependency versions (#235)

* kdoc project to doc the released toolkit components. (#284)

* kdoc project to doc the released toolkit components.

* add dependencies on the dependencies of the released projects.

* Update kdoc/build.gradle.kts

Co-authored-by: Erick Lopez Solis <[email protected]>

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>

* Add version to API ref (#314)

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Rama Chintapalli <[email protected]>
Co-authored-by: Shubham Sharma <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>
Co-authored-by: Gunther Heppner <[email protected]>
Co-authored-by: hud10837 <[email protected]>

* Revisit GraphicsOverlayCollection, AnalysisOverlayCollection and ImageOverlayCollection (#320)

* Remove GraphicsOverlaysCollection and its usage
Add parameter to MapView to take graphicsOverlays as List

* update mapView and SceneView to use arrays for image overlays and analysis overlays
update micro app

* update geometry editor micro app

* remove all graphics overlays, rather than just clear graphics

* Update param type to List

* remove comma

* update doc

* update micro app

* remember emptylist()

* use it instead of mapView

* use it instead of sceneView

* use it instead of sceneView

* use it instead of sceneView

---------

Co-authored-by: Gunther Heppner <[email protected]>

* modify compass microapp to use mapViewProxy for viewpoints (#337)

* Composable MapView/SceneView: remember default parameters (#330)

* add remember to default parameters in mapview

* add remember to default parameters in sceneview

* add circular progress indicator to sceneview setviewpoint microapp

* fix lighting options app

* use defaults for sceneview

* add mapviewdefaults

* add doc

* Update map and scene parameters to be non-nullable (#331)

* SceneView: analysis overlay microapp (#306)

* add readme and screenshot to geo-compose module

* create microapp module

* add prototype version

* clean up implementation

* add readme

* update screenshot

* revert screenshot for GeoCompose

* update GraphicOverlays and AnalysisOverlay to use latest implementation

* update ReadMe

* fix typo

* add description doc for MainScreen()

---------

Co-authored-by: Puneet Prakash <[email protected]>

* Composable GeoViews: Viewpoint Persistence (#343)

* prototype persistence enum

* move viewpoint related code to separate function

* ensure persistence type changes are monitored

* persist camera for sceneview

* initialize sceneview with default matrix

* add doc

* always set persisted viewpoint even when null

* use when statement

* mv visible area changed invocation

* rename viewpoint persistence

* permit nullable persisted camera on sceneview

* Rename viewpoint persistence and make it sealed class with overwritten equals and hashcode. This is needed in case we want to add some property to the class later on.

* simplify getting current viewpoint and setting to persisted viewpoint

* normalize point on save

* only normalize viewpoint if sr is pannable or geographic'
git push

* use mapviewdefaults for default viewpoint persistence value

* use normalized geometry as point or polygon depending on viewpoint type

* persist non normalized viewpoint if normalized viewpoint is null

* rename value from restore in sceneview

* add explanatory comments

* refactor extension fun mapview.getviewpointbypersistence

* Add comments

* fix template app still using viewpoint operation

* use expression syntax

* add viewpoint persistence doc

* mv parameter higher

* rm cast to polygon for bounding geometry on restoration

* factor out normalize function

* use early return style for readability'

* rename viewpointtopersist -> normalizedviewpoint

* use expression syntax for hashcode and equals

* convert tryNormalizeViewpoint to extension fun on Viewpoint

---------

Co-authored-by: Puneet Prakash <[email protected]>
Co-authored-by: Gunther Heppner <[email protected]>
Co-authored-by: Shubham Sharma <[email protected]>
Co-authored-by: Changan Shi <[email protected]>
Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Rama Chintapalli <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>

* merge feature branches/forms -> v.next (#360)

* only show date in field when the element's includeTime is false.

* feedback and other gradle workarounds

* DateTimePicker validation and state update (#78)

* hoisted states upto DateTimePickerState and removed visible behavior
* added DateTime class

* conflict resolution fix

* DateTimePicker landscape layout (#83)

* consume core

* print stack trace when core throws a sigbus

* triage core issues

* print stack trace when core throws a sigbus

* don't change supprting text colors under any circumstances.

* run test from json data, not from service data

* update to latest core build

* FormTextField description focus fix (#87)

* add data. avoid expression names

* avoid expression names

* Form content clipping fix (#89)

* added measure and placement constraints for the bottomsheetscaffold
* removed transparent top bar :(

* remove preview that con no longer be doen without public serialization support. fix some things that broke through merges

remove serialization dependency

* add some remembers. not sure how to remember a State instance on a state object across pause/resume

* add saver for DateTimePickerState

* add saver for DateTimePickerState

* remove logging

* date time fixes wip

* date time calcs all working correctly

* remove print statements

* doc, remove more print statements

* better doc

* eol at eof

* update textfield tests to use core API

* remove excess remembrance. refactor a bit for PR feedback.

* naming changes

* eol at eof

* work around lack of recompose of the yearremove input for remembering the date time picker state. add a call to dateTimePickerState.setSelection so that even though the state object is remembered, the selection is re-set on recompose.

* remove input for remembering the date time picker state. add a call to dateTimePickerState.setSelection so that even though the state object is remembered, the selection is re-set on recompose.

* fix issue with DateTimePicker state saver

* address basic issue of enabling the OK button in a way that abides the min and max datetimes

* fix min and max comparisons

* Update DateTimePicker.kt (#113)

* init copy

* fixed compilation errors

* Featureforms micro-app update to cache portalitems (#107)

* Working fetching portals from remote

* added icons for portal access type

* added room database

* working room database for portal cache

* moved first fetch into viewmodel

* refactored repository-domain structure

* updated content visibility once loaded

* working update

* revert unchanged files

* fixed thumbnail loading

* added comments

* updated fetching portalitems based on their itemid from local cache

* added new public webmap and added enabled state to refresh dropdown menu

* PR feedback

* FeatureformsApp : add thumbnails cache (#110)

* added thumbnail caching

* updated access info from thumbnails to text

* removed itemrepository and moved responsibility into PortalItemRepository

* added comments

* moved coil dependency to root level

* Update PortalItemRepository.kt

* added mutex to local cache map

* fix return@withContext usage

* remove commented out code

* pick up latest SDK with mutable elements in the FeatureForm

* moved imports

* fixed timepicker bugs

* added copyright

* move TimePickerState into the PickerContent. Remove call to datePicker.setSelection. Remove now and today state object methods.

* remove unused code

* fix up last commit -- from the wrong source on my machine!

* subtract the offset to represent fake picker UTC, don't add it

* picker dates is utc plus offset (not minus!). get the date millis after the addition so the timezone doesn't affect the times derived from the  millis.

* fix now freeze (#123)

* remove call to set date picker set selection, no longer needed.

* remove double counting

* wip with included build

* value, editable, and required events working for text fields.

* dontuse a coroutine use a LaunchedEffect

* respect isRequired in TextFields!

* required events support

* note

* doc

* date time expression support

* doc

* add circular progress indicator

* state flow combine

* only evaluate expressions based on user edits to text fields, not due to changes from the evaluation of expressions.

* text form changes to support use of combine

* date time form element input type changes to support use of combine

* date time form element input type changes to support use of combine

* rollback versioning changes

* roll back unrelated code change

* remove redundant statefulness

* follow up to events API changes

* Forms combo box implementation (#127)

* init prototype

* added bottomsheet for combobox

* Update FormTextFieldState.kt

* refactored basefieldstate

* updated basetextfield

* moved combobox to use basetextfield and updated basetextfield

* added description

* changed combobox bottomsheet to dialog

* added clear icon

* added no value validation and row

* optimized imports

* added comments and copyright

* Update FormElements.kt

* updated basefieldstate to work with expressions

* added more comments

* combobox expressions update

* Update ComboBoxFieldState.kt

* fixed text field validation

* using codedvalues from api

* updated validation for textfield

* changed basefieldstate to be a simple class

* update string resource

* add remembersaveable to comboboxdialog

* fix conflict resolution error

* numeric text field support.

* fix conflict resolution error.

* remember to evaluate expressions

* Form field states remember saveable (#131)

* init refactor

* textareainput show done button even if field is empty

* introduced classes to wrap common parameters

* Update FormElements.kt

* working remembersaveable

* added remembersaveable outside lazycolumn

* added id for formfieldelement

* optimized imports

* undo changes

* optimized more imports

* updated field element to not remember datetimefieldstate

* updated unique id calc for fieldformelement

* mark comboboxfieldstate as stable

* add domain, fieldType to BaseFieldProperties.

* tests for numeric text box

* self review

* change identifyLayer to identifyLayers (#137)

* move fieldType and domain down to FormTextFieldState. get range from the feature table.

* just use number keyboard for integers so negative numbers can be typed by the user.

* revert settings.gradle changes

* Forms combo box required validation (#134)

* added required expression support
* added validation on "clear"

* hoist up the fieldType so the TextField is just handed a keyboard type.

* migrated to use standardbottomsheet instead of a scaffold (#135)

* updated sdk build to 4019 (#139)

* use numeric keyboard in ComboBoxDialog filter when fieldType is numeric.

* filter out layers without forms in results of identify

* simplify logic

* Forms: DateTimeFieldState refactor (#133)

* init refactor

* textareainput show done button even if field is empty

* introduced classes to wrap common parameters

* Update FormElements.kt

* working remembersaveable

* added remembersaveable outside lazycolumn

* added id for formfieldelement

* optimized imports

* undo changes

* optimized more imports

* updated field element to not remember datetimefieldstate

* migrated DateTimeFieldState to use BaseFieldState

* added saver to DateTimeFieldState

* update doc

* switch input support

* address feedback

* drop the first isFocused StateFlow emission in the FormTextFieldState init block.

* fall back to combo when the initial value doesn't match the on or off coded value.

* self review

* rewrite validation for FormTextFields

* Forms : Refactor `ComboBoxFieldState` into `CodedValueFieldState` (#146)

* refactor comboboxfieldstate into codedvaluefieldstate

* Update CodedValueFieldState.kt

* refactored list of codedvalues to be list of strings

* changed comboboxdialog to show codedvalue.name

* Forms : Updated `ComboboxField` to display `CodedValue.name` (#148)

* updated comboboxfield to display codedvalue.name

* optimized imports

* SwitchFieldState inherits from CodedValueFieldState

* support error validation state in FormTextFieldState.Saver, rememember

* clean up, add runtime checks, comments.

* further isolate error messaging and validation

* updated basetextfield label overflow and added preview (#150)

* Forms : introduce `RadioButtonInput` (#149)

* init radiobutton field type impl

* added no value row handing

* added default color support for radio button

* refactor comboboxfieldstate into codedvaluefieldstate

* Update CodedValueFieldState.kt

* refactored list of codedvalues to be list of strings

* radiobuttonfieldstate subclasses codedvaluefieldstate

* updated merge conflicts

* fixed fallback behavior

* extracted params from RadioButtonField to support preview

* PR feedback

* conflict resolution

* fix collateral merge build breaker

* present the latest emitted value for a text field, regardless of editability.

* allow switch to change when text field is tapped. remember if the switch is falling back to a combo.

* provide the Switch through the trailingIcon of the OutlinedTextField

* remove unnecessary open modifier

* add try-catch to featureFormDefinition check (#155)

* drop first emitted value from properties.value in favor of the initial value. This preserves edits on config change even if the field is no longer editable.

* Forms : Fix orientation changes for Dialogs (#156)

* added custom dialog type

* updated dialog for ComboBoxField

* updated dialog name

* added doc

* add dialog request callback to switch fallback

* Forms: `DateTimeField` changes (#161)

* moved to BaseFieldState

* added required validation

* optimized expr eval ui (#169)

* `Forms`: DateTimePicker defaults (#168)

* moved to BaseFieldState

* added required validation

* updated default datetimepicker logic

* Update MapScreen.kt (#171)

* removed FormElement dependency from FieldElement (#175)

* consume update value (#162)

* provide a StateFlow for the formattedValue property

* update to 4036 SDK

* remove release signing logic

* Use updateValue to set the attribute value.

* Cast the value to the appropriate type before calling updateValue.

* fix fallback logic. accept Instant as a supported type for a  FieldType of type DateTime.

* make the input type of radio a String and base logic around the name of the coded value.

* use name instead of code as the value for all elements which use a CodedValueFieldState.

* log a warning when applying edits fails

* change name of formattedFlow. show a toast when edits cannot be applied

---------

Co-authored-by: Soren Roth <[email protected]>

* update to rtc 4043 (#180)

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Group Elements Support (#179)

* optimized state creation (#181)

* update to build 4046 (#185)

* use datetime raw value (#184)

* expect a formatted value to be UTC

* make BaseFieldState generic

* make DateTimeFieldState vary with Instant?

make DateTimeField work with Instant, not Long.

* only support date time text field value changes that clear the text.

* PR review suggestions

* fuse usage of formattedValue and value into one type safe generic function

---------

Co-authored-by: Soren Roth <[email protected]>

* novaluelabel selection fix (#188)

* searchable items map list screen (#189)

* make maps searchable by title or item id

* hoist search text to the map list view model

* filter field consistency between horizontal and vertical layout. rounded corners.

---------

Co-authored-by: Soren Roth <[email protected]>

* bump sdk to 4056 (#196)

Co-authored-by: Soren Roth <[email protected]>

* Forms: DatePickerDialog scaling (#198)

* fix ff tests (#201)

* update tests for type safe value flow

* remove unnecessary modifier

---------

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Micro-app add enterprise login (#204)

* `Forms` : Microapp SideSheet support (#207)

* make values focusable (and copyable) when not editable (#200)

* make values focusable (and copyable) when isEditable = false.

* organize color defaults for BaseTextField

---------

Co-authored-by: Soren Roth <[email protected]>

* Forms: Add ComboBox tests (#141)

* `Forms` : GroupElements fixes (#210)

* `Forms` microapp : Add network credential store (#215)

* `Forms`: GroupElement tests (#214)

* `forms:` extract commit transaction to microapp (#209)

* extract commit support from public toolkit featureform component.

* move commitEdits into MapViewModel

---------

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Microapp add login url recent history (#222)

* `Forms`: Combo Box Dialog sizing (#225)

* `Forms`: Microapp optimizations (#239)

* removed refresh action

* added parallel item loading

* removed redundant code

* introduced AsyncImage and removed dependency on coil

* updated asyncimage params

* removed thumbnail loading from portal item repository and from the database

* added comments

* removed coroutinescope dependency for portal item repo

* added remember for imageloader

* Update PortalItemRepository.kt

* `Forms`: Common base state (#252)

* added FormElementState

* updated state reading

* updated saver type

* refactored and removed feature form state (#250)

* validation via the SDK (#267)

* expect a formatted value to be UTC

* make BaseFieldState generic

* make DateTimeFieldState vary with Instant?

make DateTimeField work with Instant, not Long.

* first pass at consuming core validation errors

* factor out Validation States to a common file

* remove merge detritus

* update SDK.

* cleanup

* remove unused import. simplify syntax.

---------

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Refactored Dialog Mechanism (#254)

* `Forms`: Iterable collection of states (#263)

* fix renamed method calls (#271)

* fix test compilation errors (#273)

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Refactor Validation (#276)

* `Forms`: Fix failing tests (#283)

* `Forms:` date time UI tests (#277)

* date time picker interrogation

* fix test compilation errors

* date time tests

* comments

* remove debugging code

---------

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Refactored state flow based Impl into compose state based (#287)

* `Forms` : Added discardEdits API and UI (#295)

* `Forms`: Submit Form Validation (#292)

* bumping sdk to 4122 (#299)

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Select Feature (#298)

* merge v next (#302)

* Update dependency versions (#235)

* kdoc project to doc the released toolkit components. (#284)

* kdoc project to doc the released toolkit components.

* add dependencies on the dependencies of the released projects.

* Update kdoc/build.gradle.kts

Co-authored-by: Erick Lopez Solis <[email protected]>

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>

* add back compose navigation and use compose bom in ff app

---------

Co-authored-by: hud10837 <[email protected]>
Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>

* fix up versions.

* make FormElementState internal (#304)

* `Forms`: Update readme  (#305)

* `Forms` : Update disabled fields style (#308)

* incorporate breaking API change GroupElement.formElements -> GroupElement.elements (#311)

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Attachments API (#313)

* added mock api

* Update AttachmentFormElement.kt

* added check for creating bitmaps

* updated with latest api design

* Update evaluation expression loading animation (#322)

* reverted to outlinedtextfield (#323)

* `Forms` Fork date picker (#321)

* attachment UI functional prototype (#317)

* basic attachment element view

* AttachmentDetails view

* static design complete

* use passed in modifier for top level card

* ship it

* add a choose file button. add cloud icon

* add editable state to header

* rename file

* share interaction source between thumnail and details

* remove unused code

* set thumbnail image aspect ratio to 1.0f

* code review UI changes

* minor style sizing

* remove hardcoded prototype composable call

---------

Co-authored-by: Soren Roth <[email protected]>

* Add version to API ref (#314) (#328)

Co-authored-by: Shubham Sharma <[email protected]>

* `Forms` : Consume latest sdk (#324)

* feature form recomposition when a new Feature is selected (#326)

* support changing selected feature without showin discard edits dialog

* add dialog when selecting new Feature.

* remove comment

* feedback

---------

Co-authored-by: Soren Roth <[email protected]>

* remove experimental softwarekeyboardcontroller (#335)

* `Forms`: Consume `validationErrors` stateflow (#338)

* pick up SDK 4159 (#340)

Co-authored-by: Soren Roth <[email protected]>

* `Forms`: Add basic theming support (#339)

* updated tests and removed clear icon for combo fields (#342)

* make Attachment prototypes internal for release. (#344)

Co-authored-by: Soren Roth <[email protected]>

* `Forms` : Read only fields re-design (#346)

* `Forms`: bump sdk to 4167 (#347)

* `Forms` : Revert map state (#348)

* `Forms` api backwards compatibility validation (#345)

* add api file and bcv support

* ignore ComposableSingleton classes

* update api file

* add todo

---------

Co-authored-by: Soren Roth <[email protected]>

* create an internal subpackage containing all non public packages. (#350)

Co-authored-by: Soren Roth <[email protected]>

* replace clear button on required date time fields (#351)

* replace clear button from required date time fields with date time picker dialog button

* just use the edit calendar icon.

---------

Co-authored-by: Soren Roth <[email protected]>

* `Forms` : add radio and switch tests (#352)

* added radio and switch tests

* added comments

* remove old view model test from app project.

* update since version of the public FeatureForm composable method.

* add copyrights

* remove kapt from featureforms app

* move ksp plugin to end of list

* Create README.md

* Add files via upload

* Update README.md

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Kaushik Meesala <[email protected]>
Co-authored-by: Kaushik Meesala <[email protected]>
Co-authored-by: hud10837 <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>
Co-authored-by: Puneet Prakash <[email protected]>
Co-authored-by: Shubham Sharma <[email protected]>

* don't normalize viewpoints before persisting (#357)

* Implements setting and modifying a map/layers (#136)

* changes to display a map

* remove unnecessary line

* add viewmodel to the micro app

* Revert "add viewmodel to the micro app"

This reverts commit cfc6b0b39aff5cb79d5ef191e6cdd5634415925f.

* address code review feedback

* remove unused imports

* add overlay support (#143)

* add overlay support

* add doc

* remove the fillmaxsize modifier

* remove MapState

* add viewpointChangedLambda (#159)

* add viewpointChangedLambda

* address code review feedback

* Support LocationDisplay (#160)

* add location display micro app

* add location permissions

* add support for location display

* screen to start/stop a location display

* fix typo

* show error message if location display fails to start

* add AppBar and auto pan mode options

* fix type of key

* improve doc

* add readme

* adjust screen shot size

* adjust screen shot size

* set MapView properties in the update callback

* use by remember for mutable state

* set error message when LDS fails to start when toggling switch

* fix doc references to composable Map

* Compose Map InteractionOptions (#163)

* Rename - Compose MapView (#165)

* Compose MapView: Geometry editor (#170)

* Compose MapView: SelectionProperties (#173)

* add support for WrapAroundMode (#176)

* Compose MapView:  ViewLabelProperties (#174)

* add implementation for gesture events (#172)

* add implementation for gesture events

* update SDK dependency
add Events exposed on GeoView

* address code review comment

* address code review comments

* refactor mapView.viewpointChanged

* Compose Map - graphics overlay (#166)

* moved GraphicsOverlaysUpdater (#183)

* added grid & backgroundGrid impl (#192)

* Draw Status (#186)

* Geometry editor micro-app (#178)

* added invoke (#197)

* Update MapView doc pattern (#191)

* add support for attribution text (#187)

* add support for attribution text

* combine attribution bar properties/events in a state object

* refactor mapview parameter list

* update collect lambda

* Update doc

* update doc

* Add spatialreference changed callback (#193)

* invoke currentOnInteractingChanged with initial value of isInteracting

* add callback to mapview

* rm initial value calls

* change ?.let calls to ?.invoke

* move parameter above onInteractingChanged

* move launch statement above onInteracitngChanged

* MapView Rotation & Scale (#195)

* Add inset support (#182)

* add mapview inset app

* add app to settings.gradle

* WIP

* update formatting

* address code review comments

* update setViewInset values

* add readme

* Update README.md

* add doc

* address code review feedback

* rename mapinsets to insets

* rename mapinsets

* update doc

* address code review comments

* Add mapview proxy (#190)

* create MapViewOperator class

* add param to MapView composable

* add locationToScreen and doc

* more doc

* refactor MapView composable to remove unnecessary code

* move mapoperator mapview setting to own disposable effect

* don't use synchronize for operations

* Eof newline

* make MapViewOperator derive from a new GeoViewOperator

* eof newline

* return null if nan from locationToScreen

* add copyrights

* fix doc

* fix doc

* rename operator to proxy

* rm overlay param again

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/GeoViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapView.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/MapViewProxy.kt

Co-authored-by: Gunther Heppner <[email protected]>

* Apply doc fixes from code review

Co-authored-by: Puneet Prakash <[email protected]>

* mv param below geometry editor

* fix doc line length

* fix param doc

* fix param doc

---------

Co-authored-by: Gunther Heppner <[email protected]>
Co-authored-by: Puneet Prakash <[email protected]>

* update the copyright to the apache License (#203)

* add support for onNavigationChanged (#199)

* add support for onNavigationChanged

* add doc

* MapView TimeExtent (#194)

* Support for setting Viewpoint on MapView (#202)

* support for ViewpointOperation - initial commit

* MapViewpointOperation - prototyping

* implement await() on MapViewpointOperation, remove onCompleted callbacks

* renaming

* add execute extension for remaining operations

* rename Bounding to SetBoundingGeometry

* add set bookmark

* add remaining operations to when statement

* make execute an abstract fun on MapViewpointOperation

* Add set viewpoint app

* fix typo

* add dependency to microapp on geocompose

* add simple app to set viewpoint with different options

* add progress indicator to demonstrate await pattern

* extract bookmark to remembered val

* make abstract fun an extension fun instead

* add doc

* add readme to microapp

* eof newline

* fix readme title

* rever locationdisplayapp changes

* update screenshot

* update readme wording

* use a simple list instead of reflection

* add doc to MainScreen

* add dash to project app name

* naming and doc changes

* mv onViewpointChanged parameter

* change dfeautl animate duration to 0.25

* update microapp module namw

---------

Co-authored-by: Hudson Miears <[email protected]>

* Refactor mapview insets app (#206)

* update all since tags in geo-compose module (#227)

* Geo-compose: add identify methods and microapp (#223)

* add methods to geoviewproxy

* rename identifyLayer and identifyGraphicsOverlay to identify as overloads

* add prototype app

* fix recursive bug

* refactor app to separate subcomponents

* make one source of truth for geoview in geoviewproxy

* make one source of truth for geoview in geoviewproxy

* mv business logic to view model class

* update doc

* add doc to microapp

* add top bar

* add readme and screenshot

* adjust readme description

* adjust string resources and error messages

* modify identify method to be cancellable and consolidate logic

* adjust bottom sheet to only expand to half screen height and move map viewpoint

* rename EventDetails -> IdentifyDetails

* nullGEoViewErrorMessage no longer uses a getter

* rework caching of mapview in proxy to match previous implementation

* change doc DIPS -> Dp

* fix tolerance parameter types -> Dp

* use nullable maximumResults to match swift

* sanitize max results

* rm yield

* add doc enhancements

* extract maximum results fun

* clamp 0 values for maximumResults

* rm throws doc

* adjust insets on bottom sheet state change

* rm insets behavior

* fix doc references

* fix doc 200.4.0

* update screenshot

* rename className prop

* make details height a const

* Rename MapView-related microapps to have MapView prefix (#226)

* Rename MapView-related microapps to have MapView prefix

* Rename all other instances with mapview prefix

* rename names in readmes

* rename files

* rename test directories

* add onUnitsPerDipChanged callback lambda (#232)

* Add exportImage fun to GeoViewProxy (#233)

* Add exportImage fun to GeoViewProxy

* update doc

* update doc

* add isWrapAroundEnabled property to GeoViewProxy (#231)

* add isWrapAroundEnabled property to GeoViewProxy

* update @since

* add doc

* Geo-compose: add basic SceneView function (#230)

* add SceneView function

* eof newline

* fix doc and copyright

* don't use fully qualified sceneview

* added compose BOM (#237)

* add ViewPointState (#234)

* add ViewPointState

* address code review feedback

* update doc

* Hud10837/layer view state (#228)

* add methods to geoviewproxy

* rename identifyLayer and identifyGraphicsOverlay to identify as overloads

* add prototype app

* fix recursive bug

* refactor app to separate subcomponents

* make one source of truth for geoview in geoviewproxy

* make one source of truth for geoview in geoviewproxy

* mv business logic to view model class

* update doc

* add doc to microapp

* add top bar

* add readme and screenshot

* adjust readme description

* adjust string resources and error messages

* modify identify method to be cancellable and consolidate logic

* adjust bottom sheet to only expand to half screen height and move map viewpoint

* rename EventDetails -> IdentifyDetails

* nullGEoViewErrorMessage no longer uses a getter

* rework caching of mapview in proxy to match previous implementation

* change doc DIPS -> Dp

* fix tolerance parameter types -> Dp

* use nullable maximumResults to match swift

* sanitize max results

* rm yield

* add doc enhancements

* extract maximum results fun

* clamp 0 values for maximumResults

* rm throws doc

* adjust insets on bottom sheet state change

* add layerviewstatechanged callback

* add getLayerViewState

* move getLayerViewState

* mv param position and fix identify mainscreen

* SceneView: add sceneview gesture events (#241)

* add SceneView function

* eof newline

* fix doc and copyright

* add gesture events

* fix param doc"

* SceneView: create SceneViewProxy (#246)

* create initial SceneViewProxy class

* add disposal logic to proxy class

* add sceneViewProxy to SceneView

* add copyright

* SceneView: graphics overlays (#245)

* extract graphicsoverlayupdater

* eof newline

* SceneView: add scene viewpoint operation (#240)

* create SceneViewpointOperation

* add operation to sceneview

* add all operations for sceneview

* add doc

* eof newline

* eof newline

* Don't use named params on viewpoint updater

* use kotlinx cancellation exception

* add copyright

* use duration in viewpoint operations

* doc

* rename durationSeconds and fix microapp

* Update feature branch with v.next (#243)

* add navigationchanged to sceneview (#248)

* SceneView: add ViewLabelProperties (#249)

* add viewlabelproperties to sceneview'

* fix doc

---------

Co-authored-by: Gunther Heppner <[email protected]>

* SceneView: attribution (#247)

* mv AttributionStateHandler function to AttributionState.kt

* add attributionState param to SceneView

* add @since tag

---------

Co-authored-by: Gunther Heppner <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt (#253)

Co-authored-by: Gunther Heppner <[email protected]>

* shared the ViewpointChangedState with SceneView (#261)

* SceneView TimeExtent (#260)

* shared the ViewpointChangedState with SceneView

* review update

* merge with the feature branch

* SceneView spatial reference changed (#258)

* add spatial ref changed support

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

* shared the ViewpointChangedState with SceneView

---------

Co-authored-by: Puneet Prakash <[email protected]>

* shared the ViewpointChangedState with SceneView (#257)

* add layerViewStateChanged to SceneView (#262)

* The view property needs to be assigned in ViewProxy class (#264)

* add cameraController oaram to sceneview (#265)

* add onDrawStatusChanged to SceneView (#266)

* add FieldOfView (#270)

* SceneView: add sunLighting and sunTime (#275)

* add sunLighting and sunTime

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

---------

Co-authored-by: Puneet Prakash <[email protected]>

* SceneView current viewpoint camera (#256)

* add getCurrentViewpointCamera in proxy

* expose the currentViewpoint property

* impls current view camera

* adds a space for lambda

* merged with feature branch.

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

---------

Co-authored-by: Puneet Prakash <[email protected]>

* add atmosphereEffect (#278)

* Add funs for screen coordinate conversion (#272)

* Add funs for screen coordinate conversion

* update doc

* update doc for SceneView Suntime and SunLighting (#282)

* SceneView: AnalysisOverlayCollection (#269)

* create AnalysisOverlayCollection

* mv factory for graphics overlay collection

* add analysis to scene view

* eof newlines

* add doc

* Fix doc that mentions graphics overlays

Co-authored-by: Puneet Prakash <[email protected]>

* mv factory function to SceneView file

* address doc comments

* mv updater to SceneView file

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

---------

Co-authored-by: Puneet Prakash <[email protected]>

* Add space effects on the scene view (#281)

* add space effects on scene view

* update the comment

* SceneView: ambient light color (#279)

* add sceneview ambientLightColor param

* fix doc

* rm full stop

* SceneView: add manual rendering funs to SceneViewProxy (#280)

* add manual rendering funs to SceneViewProxy

* Fix doc

* fix doc

* SceneView: ImageOverlays (#274)

* add ImageOverlayCollection and property

* mv factory function to SceneView file

* fix doc comments

* mv updater to sceneview.kt

* Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

Co-authored-by: Puneet Prakash <[email protected]>

* use data object for Cleared event

* use data object for cleared even tin AnalysisOverlayCollection

* use data object for cleared event in GraphicsOverlayCollection

---------

Co-authored-by: Puneet Prakash <[email protected]>

* SceneView: lighting options microapp (#286)

* add sceneview ambientLightColor param

* add space effects on scene view

* update the comment

* fix doc

* create lighting options microapp base

* set up dropdown menu

* add sun time options

* add lighting mode options

* add Ambient light color options

* add atmosphere effect options

* add space effect options

* change viewpoint and fix sun time picker

* clean up code

* use sliders instead of textfields for rgb colors

* add doc

* add readme and screenshot

* eof newline

* add doc to components

* add missing imports

* Add doc DropdownMenuAlertDialog

* add missing copyright headers

* add doc RgbaSlider

* add remaining doc

* Update microapps/SceneViewLightingOptionsApp/README.md

Co-authored-by: Gunther Heppner <[email protected]>

---------

Co-authored-by: Changan Shi <[email protected]>
Co-authored-by: Gunther Heppner <[email protected]>

* bumping sdk to 4122 (#300)

Co-authored-by: Soren Roth <[email protected]>

* add maven publishing to geo-compose (#301)

Co-authored-by: Soren Roth <[email protected]>

* Scene view camera controller app (#288)

* init implementation for camera controller

* add gitignore

* adds comments and remove view model.

* update the doc and png image

* update the comment

* add the extra space line

* update the screenshot

* review update

* update the 2023 comment

* update the comment

* review update

* v next merge to geo compose (#303)

* change name of Licesne file in preparation for migration to Esri

* revert change to license file name

* remove extra license file

* Update README.md images (#102)

* holder commit

* Update README.md

update link

* upload screenshot image

* add images to the micro app

* Update README.md

* Update README.md

* use updated name of the auth dependency in README

* Create t9nmanifest.txt (#167)

* removed module and microapp (#208)

* Update gradle.properties (#211)

* Update build.gradle.kts (#212)

* updates client id and redirect Uri (#216)

* Take out build numbers for publishing (#219)

* update dependency section of readme for 200.3.0 (#220)

* Improve WebView Display (#213)

* Update gradle.properties (#238)

* Update dependency versions (#235)

* kdoc project to doc the released toolkit components. (#284)

* kdoc project to doc the released toolkit components.

* add dependencies on the dependencies of the released projects.

* Update kdoc/build.gradle.kts

Co-authored-by: Erick Lopez Solis <[email protected]>

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>

* add kdoc project!

---------

Co-authored-by: Soren Roth <[email protected]>
Co-authored-by: Puneet Prakash <[email protected]>
Co-authored-by: Rama Chintapalli <[email protected]>
Co-authored-by: Shubham Sharma <[email protected]>
Co-authored-by: Erick Lopez Solis <[email protected]>
Co-authored-by: Gunther Heppne…
  • Loading branch information
15 people authored Aug 1, 2024
1 parent 7ad544f commit 0e54056
Show file tree
Hide file tree
Showing 457 changed files with 20,301 additions and 4,280 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
.externalNativeBuild
build/

# test artifacts
connectedTestReports/

# Local configuration file (sdk path, etc)
/local.properties
.gradle
Expand Down
23 changes: 23 additions & 0 deletions PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!-- PRs should provide sufficient context on the changes, either by linking to the associated issue and/or by providing a summary. Also provide a link to the design if it's appropriate. -->

Related to issue: #

<!-- link to design, if applicable -->

### Description:



### Summary of changes:

-

### Pre-merge Checklist

<!-- Tick one box for each section -->
- a [vTest](https://runtime-kotlin.esri.com/view/all/job/vtest/job/toolkit/) Job for this PR has been run
- [ ] link:
- Unit and/or integration tests have been added to exercise this PR's logic, and the tests are passing:
- [ ] Yes
- [ ] No

33 changes: 29 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ The ArcGIS Maps SDK for Kotlin Toolkit contains components that will simplify yo
* **[Authenticator](toolkit/authentication)** - Displays a user interface when network and ArcGIS authentication challenges occur.
* **[Compass](toolkit/compass)** - Shows a compass direction when the map is rotated. Auto-hides when the map points north.
* **[FeatureForms](toolkit/featureforms)** - Provides a UI for editing feature attributes.
* **[GeoView-Compose](toolkit/geoview-compose)** - Compose wrappers for the MapView and SceneView.
* **[FloorFilter](toolkit/indoors)** - Allows filtering of floor plan data in a geo view by a site, a facility in the site, or a floor in the facility.
* **[GeoView-Compose](toolkit/geoview-compose)** - Compose wrappers for the MapView and SceneView.
* **[Callout](toolkit/geoview-compose#display-a-callout)** - Draws a callout on the GeoView to display Composable content.
* **[Popup](toolkit/popup)** - View field values of features in a layer using the Popup API.

## API Reference

Expand Down Expand Up @@ -41,10 +43,12 @@ repositories {
The *ArcGIS Maps SDK for Kotlin Toolkit* is released with a "bill of materials" (`BOM`). The releasable BOM is versioned and represents a set of versions of the toolkit components which are compatible with one another. You may specify dependencies as follows

```
implementation(platform("com.esri:arcgis-maps-kotlin-toolkit-bom:200.4.0"))
implementation(platform("com.esri:arcgis-maps-kotlin-toolkit-bom:200.5.0"))
implementation("com.esri:arcgis-maps-kotlin-toolkit-authentication")
implementation("com.esri:arcgis-maps-kotlin-toolkit-compass")
implementation("com.esri:arcgis-maps-kotlin-toolkit-geoview-compose")
implementation("com.esri:arcgis-maps-kotlin-toolkit-indoors")
implementation("com.esri:arcgis-maps-kotlin-toolkit-popup")
```

The template and TemplateApp modules are for bootstrapping new modules.
Expand All @@ -62,11 +66,14 @@ Esri welcomes contributions from anyone and everyone. Please see our [guidelines
### Creating a New Toolkit Component

A new toolkit component can be added to this project by running the bash script at the top level
`./new-component-starter.sh -n NameOfNewComponent"`
`./new-component-starter.sh`

This will create a new library module for the new component, and a new app module which depends on the library.
This script will prompt for you to input a name for the new component and ask if you want to create a new app module for it.
Capitalization isn't necessary, but it won't capitalize anything but the first letter if none is specified.

A new microapp can be added by running the bash script `./new-microapp-starter.sh`.
This script will prompt for you to input a name for the new microapp.

This script requires bash 4.0 or higher.

### About this Repo
Expand Down Expand Up @@ -94,6 +101,24 @@ The template and TemplateApp modules are for bootstrapping new modules.

Please see the [package structure](doc/general/developer_setup.md#package-structure) documentation for more details.

### Testing

#### Running Local Tests

In order to run *local* (non-instrumented) tests of all modules and get an aggregated test report, run the following at the root folder of the project:
```
./gradlew testAggregatedReport --continue
```
The test report for local tests can be located under `arcgis-maps-sdk-kotlin-toolkit/build/reports`.

#### Running Connected Tests

In order to run *connected* (instrumented) tests of all modules and get the test reports in a centralized folder, run the following at the root folder of the project:
```
./gradlew connectedDebugAndroidTest --continue
```
The test reports for connected tests can be located under `arcgis-maps-sdk-kotlin-toolkit/connectedTestReports`.

## Licensing

Copyright 2019-2022 Esri
Expand Down
39 changes: 39 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ plugins {
alias(libs.plugins.hilt) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.dokka) apply false
alias(libs.plugins.gmazzo.test.aggregation)
}

buildscript {
Expand All @@ -38,3 +39,41 @@ buildscript {
classpath(libs.dokka.versioning)
}
}

// Path to the centralized folder in root directory where test reports for connected tests end up
val connectedTestReportsPath by extra("${rootDir}/connectedTestReports")

/**
* Configures the [gmazzo test aggregation plugin](https://github.com/gmazzo/gradle-android-test-aggregation-plugin)
* with all local tests to be aggregated into a single test report.
* Note: This works only for local tests, not for connected tests.
* To run aggregated local tests, run the following at the root folder of the project:
* ```
* ./gradlew testAggregatedReport --continue
* ```
* Test report to be found under `arcgis-maps-sdk-kotlin-toolkit/build/reports`.
*/
testAggregation {
getModulesExcept(
"bom",
"kdoc",
"microapps-lib",
"template",
"template-app",
"composable-map").forEach {
this.modules.include(project(":$it"))
}
}

/**
* Returns all modules in this project, except the ones specified by [modulesToExclude].
*/
fun getModulesExcept(vararg modulesToExclude: String): List<String> =
with(File("$rootDir/settings.gradle.kts")) {
readLines()
.filter { it.startsWith("include") }
.map {
it.removePrefix("include(\":").removeSuffix("\")")
}
.filter { !modulesToExclude.contains(it) } // exclude specified modules
}
3 changes: 1 addition & 2 deletions doc/general/developer_setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ Requirements:

and an internet connection to download dependencies expressed in gradle.

For production use, an API Key or valid ArcGIS Identity is required to use the ArcGIS Maps SDK for Kotlin, which is a dependency of all toolkit components.
Sign up for an ArcGIS developer account [here](https://developers.arcgis.com/sign-up).
For production use, [API Key authentication](https://developers.arcgis.com/documentation/security-and-authentication/api-key-authentication/) or [user authentication](https://developers.arcgis.com/documentation/security-and-authentication/user-authentication/) is required to access the ArcGIS location services provided by the ArcGIS Maps SDK for Kotlin toolkit components. Sign up for an ArcGIS account [here](https://developers.arcgis.com/kotlin/get-started/#1-sign-up-for-an-account).

### Get Started

Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ artifactoryUsername=""
artifactoryPassword=""
# these numbers will define the artifact version on artifactory
# and are overridden by the jenkins command line in the daily build
versionNumber=200.4.0
versionNumber=200.5.0
buildNumber=0000-snapshot
#set this flag to `true` to ignore the build number when publishing. This
# will publish an artifact with a build number like "..:200.2.0" as opposed to "...:200.2.0-3963
ignoreBuildNumber=true
# these versions define the dependency of the ArcGIS Maps SDK for Kotlin dependency
# and are generally not overridden at the command line unless a special build is requested.
sdkVersionNumber=200.4.0
sdkVersionNumber=200.5.0
sdkBuildNumber=
48 changes: 29 additions & 19 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
[versions]
androidGradlePlugin = "8.2.0"
androidXBrowser = "1.7.0"
activityCompose = "1.8.2"
androidGradlePlugin = "8.3.2"
androidXBrowser = "1.8.0"
coilBOM = "2.5.0"
composeBOM = "2023.10.01"
androidxComposeCompiler = "1.5.6"
androidxCore = "1.12.0"
composeBOM = "2024.04.01"
androidxComposeCompiler = "1.5.12"
androidxCore = "1.13.0"
androidxEspresso = "3.5.1"
androidxHiltNavigationCompose = "1.0.0"
androidxLifecycle = "2.6.2"
androidxMaterialIcons = "1.4.3"
androidxHiltNavigationCompose = "1.2.0"
androidxLifecycle = "2.7.0"
androidxMaterialIcons = "1.6.6"
androidxTestExt = "1.1.5"
androidxWindow = "1.2.0"
binaryCompatibilityValidator = "0.14.0"
compileSdk = "34"
compose-navigation = "2.7.5"
dokka = "1.9.10"
hilt = "2.48"
hiltExt = "1.0.0"
compose-navigation = "2.7.7"
dokka = "1.9.20"
hilt = "2.49"
hiltExt = "1.2.0"
junit = "4.13.2"
kotlin = "1.9.21"
ksp = "1.9.21-1.0.16"
kotlin = "1.9.23"
ksp = "1.9.23-1.0.20"
media3Exoplayer = "1.3.1"
minSdk = "26"
kotlinxCoroutinesTest = "1.7.3"
kotlinxSerializationJson = "1.5.1"
room = "2.6.0"
truth = "1.1.4"
kotlinxCoroutinesTest = "1.8.0"
kotlinxSerializationJson = "1.6.3"
mockkAndroid = "1.13.10"
room = "2.6.1"
truth = "1.4.2"
uiautomator = "2.3.0"

[libraries]
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose"}
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose"}
androidx-browser = { group = "androidx.browser", name = "browser", version.ref = "androidXBrowser"}
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBOM" }
Expand All @@ -47,8 +51,12 @@ androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecyc
androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose"}
androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose"}
androidx-material-icons = { group = "androidx.compose.material", name = "material-icons-extended", version.ref = "androidxMaterialIcons"}
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3Exoplayer" }
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3Exoplayer" }
androidx-media3-exoplayer-dash = { module = "androidx.media3:media3-exoplayer-dash", version.ref = "media3Exoplayer" }
androidx-test-ext = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidxTestExt" }
androidx-test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "androidxEspresso" }
androidx-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "uiautomator" }
androidx-window = { group = "androidx.window", name = "window", version.ref = "androidxWindow" }
androidx-window-core = { group = "androidx.window", name = "window-core", version.ref = "androidxWindow" }
coil-bom = { group = "io.coil-kt", name = "coil-bom", version.ref = "coilBOM" }
Expand All @@ -64,6 +72,7 @@ kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", vers
kotlinx-serialization-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core", version.ref = "kotlinxSerializationJson" }
kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutinesTest" }
mockk-android = { module = "io.mockk:mockk-android", version.ref = "mockkAndroid" }
room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" }
room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
room-ext = { group = "androidx.room", name = "room-ktx", version.ref = "room" }
Expand All @@ -80,6 +89,7 @@ kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
gradle-secrets = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version = "2.0.1"}
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
gmazzo-test-aggregation = { id = "io.github.gmazzo.test.aggregation.results", version = "2.2.0" }

[bundles]
core = [
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
17 changes: 9 additions & 8 deletions gradlew
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
Expand Down Expand Up @@ -144,15 +145,15 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
Expand Down Expand Up @@ -201,11 +202,11 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.

set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
Expand Down
Loading

0 comments on commit 0e54056

Please sign in to comment.