Make the whole items in advanced settings screen clickable, standarize paddings (#2314)

* Make sure the whole item in advanced settings screen triggers the toggle action

* Fix UI changes when setting `onChecked` actions to null.

* Fix padding in invite member list items

* Remove redundant `CheckableUserRow` alternatives.

* Use 4dp for padding instead

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
This commit is contained in:
Jorge Martin Espinosa 2024-01-30 12:39:04 +01:00 committed by GitHub
parent ede1dc0fab
commit 0f5038af8f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
68 changed files with 230 additions and 305 deletions

View file

@ -23,10 +23,11 @@ import androidx.compose.ui.tooling.preview.Preview
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
import io.element.android.libraries.matrix.ui.components.CheckableMatrixUserRow
import io.element.android.libraries.matrix.ui.components.CheckableUnresolvedUserRow
import io.element.android.libraries.matrix.ui.components.CheckableUserRow
import io.element.android.libraries.matrix.ui.components.CheckableUserRowData
import io.element.android.libraries.matrix.ui.components.aMatrixUser
import io.element.android.libraries.matrix.ui.model.getAvatarData
import io.element.android.libraries.matrix.ui.model.getBestName
import io.element.android.libraries.usersearch.api.UserSearchResult
@Composable
@ -36,23 +37,24 @@ fun SearchMultipleUsersResultItem(
onCheckedChange: (Boolean) -> Unit,
modifier: Modifier = Modifier,
) {
if (searchResult.isUnresolved) {
CheckableUnresolvedUserRow(
checked = isUserSelected,
modifier = modifier,
val data = if (searchResult.isUnresolved) {
CheckableUserRowData.Unresolved(
avatarData = searchResult.matrixUser.getAvatarData(AvatarSize.UserListItem),
id = searchResult.matrixUser.userId.value,
onCheckedChange = onCheckedChange,
)
} else {
CheckableMatrixUserRow(
checked = isUserSelected,
modifier = modifier,
matrixUser = searchResult.matrixUser,
avatarSize = AvatarSize.UserListItem,
onCheckedChange = onCheckedChange,
CheckableUserRowData.Resolved(
name = searchResult.matrixUser.getBestName(),
subtext = if (searchResult.matrixUser.displayName.isNullOrEmpty()) null else searchResult.matrixUser.userId.value,
avatarData = searchResult.matrixUser.getAvatarData(AvatarSize.UserListItem),
)
}
CheckableUserRow(
checked = isUserSelected,
modifier = modifier,
data = data,
onCheckedChange = onCheckedChange,
)
}
@Preview

View file

@ -66,8 +66,8 @@ fun AdvancedSettingsView(
},
trailingContent = ListItemContent.Switch(
checked = state.isRichTextEditorEnabled,
onChange = { state.eventSink(AdvancedSettingsEvents.SetRichTextEditorEnabled(it)) },
),
onClick = { state.eventSink(AdvancedSettingsEvents.SetRichTextEditorEnabled(!state.isRichTextEditorEnabled)) }
)
ListItem(
headlineContent = {
@ -78,8 +78,8 @@ fun AdvancedSettingsView(
},
trailingContent = ListItemContent.Switch(
checked = state.isDeveloperModeEnabled,
onChange = { state.eventSink(AdvancedSettingsEvents.SetDeveloperModeEnabled(it)) },
),
onClick = { state.eventSink(AdvancedSettingsEvents.SetDeveloperModeEnabled(!state.isDeveloperModeEnabled)) }
)
ListItem(
headlineContent = {
@ -90,8 +90,8 @@ fun AdvancedSettingsView(
},
trailingContent = ListItemContent.Switch(
checked = state.isSendPublicReadReceiptsEnabled,
onChange = { state.eventSink(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(it)) },
),
onClick = { state.eventSink(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(!state.isSendPublicReadReceiptsEnabled)) }
)
}

View file

@ -46,8 +46,8 @@ import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.TextButton
import io.element.android.libraries.designsystem.theme.components.TopAppBar
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.ui.components.CheckableUnresolvedUserRow
import io.element.android.libraries.matrix.ui.components.CheckableUserRow
import io.element.android.libraries.matrix.ui.components.CheckableUserRowData
import io.element.android.libraries.matrix.ui.components.SelectedUsersList
import io.element.android.libraries.matrix.ui.model.getAvatarData
import io.element.android.libraries.matrix.ui.model.getBestName
@ -186,18 +186,16 @@ private fun RoomInviteMembersSearchBar(
LazyColumn {
itemsIndexed(results) { index, invitableUser ->
if (invitableUser.isUnresolved && !invitableUser.isAlreadyInvited && !invitableUser.isAlreadyJoined) {
CheckableUnresolvedUserRow(
checked = invitableUser.isSelected,
val notInvitedOrJoined = !(invitableUser.isAlreadyInvited || invitableUser.isAlreadyJoined)
val isUnresolved = invitableUser.isUnresolved && notInvitedOrJoined
val enabled = isUnresolved || notInvitedOrJoined
val data = if (isUnresolved) {
CheckableUserRowData.Unresolved(
avatarData = invitableUser.matrixUser.getAvatarData(AvatarSize.UserListItem),
id = invitableUser.matrixUser.userId.value,
onCheckedChange = { onUserToggled(invitableUser.matrixUser) },
modifier = Modifier.fillMaxWidth()
)
} else {
CheckableUserRow(
checked = invitableUser.isSelected,
enabled = !invitableUser.isAlreadyInvited && !invitableUser.isAlreadyJoined,
CheckableUserRowData.Resolved(
avatarData = invitableUser.matrixUser.getAvatarData(AvatarSize.UserListItem),
name = invitableUser.matrixUser.getBestName(),
subtext = when {
@ -207,11 +205,16 @@ private fun RoomInviteMembersSearchBar(
// Otherwise show the ID, unless that's already used for their name
invitableUser.matrixUser.displayName.isNullOrEmpty().not() -> invitableUser.matrixUser.userId.value
else -> null
},
onCheckedChange = { onUserToggled(invitableUser.matrixUser) },
modifier = Modifier.fillMaxWidth()
}
)
}
CheckableUserRow(
checked = invitableUser.isSelected,
enabled = enabled,
data = data,
onCheckedChange = { onUserToggled(invitableUser.matrixUser) },
modifier = Modifier.fillMaxWidth()
)
if (index < results.lastIndex) {
HorizontalDivider()

View file

@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.CheckboxColors
import androidx.compose.material3.CheckboxDefaults
import androidx.compose.material3.minimumInteractiveComponentSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -57,7 +58,7 @@ fun Checkbox(
onCheckedChange(!checked)
}
},
modifier = modifier,
modifier = modifier.minimumInteractiveComponentSize(),
enabled = enabled,
colors = colors,
interactionSource = interactionSource,

View file

@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.RadioButtonColors
import androidx.compose.material3.RadioButtonDefaults
import androidx.compose.material3.minimumInteractiveComponentSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -48,7 +49,7 @@ fun RadioButton(
androidx.compose.material3.RadioButton(
selected = selected,
onClick = onClick,
modifier = modifier,
modifier = modifier.minimumInteractiveComponentSize(),
enabled = enabled,
colors = colors,
interactionSource = interactionSource,

View file

@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.SwitchColors
import androidx.compose.material3.SwitchDefaults
import androidx.compose.material3.minimumInteractiveComponentSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -52,7 +53,7 @@ fun Switch(
Material3Switch(
checked = checked,
onCheckedChange = onCheckedChange,
modifier = modifier,
modifier = modifier.minimumInteractiveComponentSize(),
enabled = enabled,
colors = colors,
interactionSource = interactionSource,

View file

@ -1,75 +0,0 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.matrix.ui.components
import androidx.compose.foundation.layout.Column
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.ui.model.getAvatarData
import io.element.android.libraries.matrix.ui.model.getBestName
@Composable
fun CheckableMatrixUserRow(
checked: Boolean,
matrixUser: MatrixUser,
onCheckedChange: (Boolean) -> Unit,
modifier: Modifier = Modifier,
avatarSize: AvatarSize = AvatarSize.UserListItem,
enabled: Boolean = true,
) = CheckableUserRow(
checked = checked,
avatarData = matrixUser.getAvatarData(avatarSize),
name = matrixUser.getBestName(),
subtext = if (matrixUser.displayName.isNullOrEmpty()) null else matrixUser.userId.value,
modifier = modifier,
onCheckedChange = onCheckedChange,
enabled = enabled,
)
@PreviewsDayNight
@Composable
internal fun CheckableMatrixUserRowPreview(@PreviewParameter(MatrixUserProvider::class) matrixUser: MatrixUser) = ElementPreview {
Column {
CheckableMatrixUserRow(
checked = true,
onCheckedChange = { },
matrixUser = matrixUser,
)
CheckableMatrixUserRow(
checked = false,
onCheckedChange = { },
matrixUser = matrixUser,
)
CheckableMatrixUserRow(
checked = true,
onCheckedChange = { },
matrixUser = matrixUser,
enabled = false,
)
CheckableMatrixUserRow(
checked = false,
onCheckedChange = { },
matrixUser = matrixUser,
enabled = false,
)
}
}

View file

@ -1,104 +0,0 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.matrix.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.theme.components.Checkbox
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
import io.element.android.libraries.matrix.ui.model.getAvatarData
@Composable
fun CheckableUnresolvedUserRow(
checked: Boolean,
onCheckedChange: (Boolean) -> Unit,
avatarData: AvatarData,
id: String,
modifier: Modifier = Modifier,
enabled: Boolean = true,
) {
Row(
modifier = modifier
.fillMaxWidth()
.clickable(role = Role.Checkbox, enabled = enabled) {
onCheckedChange(!checked)
},
verticalAlignment = Alignment.CenterVertically,
) {
UnresolvedUserRow(
modifier = Modifier.weight(1f),
avatarData = avatarData,
id = id,
)
Checkbox(
modifier = Modifier.padding(end = 16.dp),
checked = checked,
onCheckedChange = null,
enabled = enabled,
)
}
}
@Preview
@Composable
internal fun CheckableUnresolvedUserRowPreview() = ElementThemedPreview {
val matrixUser = aMatrixUser()
Column {
CheckableUnresolvedUserRow(
checked = false,
onCheckedChange = { },
avatarData = matrixUser.getAvatarData(AvatarSize.UserListItem),
id = matrixUser.userId.value,
)
HorizontalDivider()
CheckableUnresolvedUserRow(
checked = true,
onCheckedChange = { },
avatarData = matrixUser.getAvatarData(AvatarSize.UserListItem),
id = matrixUser.userId.value,
)
HorizontalDivider()
CheckableUnresolvedUserRow(
checked = false,
onCheckedChange = { },
avatarData = matrixUser.getAvatarData(AvatarSize.UserListItem),
id = matrixUser.userId.value,
enabled = false,
)
HorizontalDivider()
CheckableUnresolvedUserRow(
checked = true,
onCheckedChange = { },
avatarData = matrixUser.getAvatarData(AvatarSize.UserListItem),
id = matrixUser.userId.value,
enabled = false,
)
}
}

View file

@ -17,24 +17,29 @@
package io.element.android.libraries.matrix.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.theme.components.Checkbox
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
import io.element.android.libraries.matrix.ui.model.getAvatarData
@Composable
fun CheckableUserRow(
checked: Boolean,
onCheckedChange: (Boolean) -> Unit,
avatarData: AvatarData,
name: String,
subtext: String?,
data: CheckableUserRowData,
modifier: Modifier = Modifier,
enabled: Boolean = true,
) {
@ -46,19 +51,119 @@ fun CheckableUserRow(
},
verticalAlignment = Alignment.CenterVertically,
) {
UserRow(
modifier = Modifier.weight(1f),
avatarData = avatarData,
name = name,
subtext = subtext,
)
val rowModifier = Modifier.weight(1f)
when (data) {
is CheckableUserRowData.Resolved -> {
UserRow(
modifier = rowModifier,
avatarData = data.avatarData,
name = data.name,
subtext = data.subtext,
)
}
is CheckableUserRowData.Unresolved -> {
UnresolvedUserRow(
modifier = rowModifier,
avatarData = data.avatarData,
id = data.id,
)
}
}
Checkbox(
modifier = Modifier
.padding(end = 16.dp),
modifier = Modifier.padding(end = 4.dp),
checked = checked,
onCheckedChange = null,
enabled = enabled,
)
}
}
@Immutable
sealed interface CheckableUserRowData {
data class Resolved(
val avatarData: AvatarData,
val name: String,
val subtext: String?,
) : CheckableUserRowData
data class Unresolved(
val avatarData: AvatarData,
val id: String,
) : CheckableUserRowData
}
@Preview
@Composable
internal fun CheckableResolvedUserRowPreview() = ElementThemedPreview {
val matrixUser = aMatrixUser()
val data = CheckableUserRowData.Resolved(
avatarData = matrixUser.getAvatarData(AvatarSize.UserListItem),
name = matrixUser.displayName.orEmpty(),
subtext = matrixUser.userId.value,
)
Column {
CheckableUserRow(
checked = false,
onCheckedChange = { },
data = data,
)
HorizontalDivider()
CheckableUserRow(
checked = true,
onCheckedChange = { },
data = data,
)
HorizontalDivider()
CheckableUserRow(
checked = false,
onCheckedChange = { },
data = data,
enabled = false,
)
HorizontalDivider()
CheckableUserRow(
checked = true,
onCheckedChange = { },
data = data,
enabled = false,
)
}
}
@Preview
@Composable
internal fun CheckableUnresolvedUserRowPreview() = ElementThemedPreview {
val matrixUser = aMatrixUser()
val data = CheckableUserRowData.Unresolved(
avatarData = matrixUser.getAvatarData(AvatarSize.UserListItem),
id = matrixUser.userId.value,
)
Column {
CheckableUserRow(
checked = false,
onCheckedChange = { },
data = data,
)
HorizontalDivider()
CheckableUserRow(
checked = true,
onCheckedChange = { },
data = data,
)
HorizontalDivider()
CheckableUserRow(
checked = false,
onCheckedChange = { },
data = data,
enabled = false,
)
HorizontalDivider()
CheckableUserRow(
checked = true,
onCheckedChange = { },
data = data,
enabled = false,
)
}
}

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6638cb923a57c8ee4a577626bef41c87da3ad5081a6bda6b4a303f094be30bfd
size 23181
oid sha256:6e66e3395d8ce9b9b98ba21c99a82111f3e007e31d5845524f3c19284f478a8c
size 23232

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4ffb2f6bd00607dd9f84d9b9dd4014f4389d0a3dd73fea8881a867680c0aa47b
size 22301
oid sha256:9e0fee8d19a8522b34ec4ec3bbf8473284a01ec827aeb520f58b8df67079df53
size 22367

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:748900111b5b9cb1235f979d889098366ed66a88e8078224ec2780feac47a2e8
size 86365
oid sha256:0334ad25584ed508739fefb75a44d419d3904620e957c9ffa125985532d0bc10
size 86328

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2fc96ed56a48c2feaaa712ce57253678d0d79f834423aa5b41315df9213b4da9
size 26277
oid sha256:c3128ee234cf48f37fa0432f904d2e791614d20c82c16dc639edb849b42c4fe4
size 26348

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a09f0d8c68fb4af7dcd239f342ec2d68b3d3af4720e27277d4bfd6e37c15541e
size 25141
oid sha256:4ceb2fe1dd526d36f90efe2bdcc4e4c5d407709fee053937ff8e53b760f85e0a
size 25186

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f38cda30a54ee8b4c4f95e6303c9cca43b06fa0ce4c2d690c992b2037537453f
size 35986
oid sha256:1e55a3501da2a4217a245b7e6a9527ab5963a018dfc70aa2bce62c558f88f75b
size 36138

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:41896059efcfa8b424cd80cf93f233a263498222a8a555b6eb8cfa9a5f62d941
size 33347
oid sha256:4c5baa96c59c7e61f84be5e730c56a6f18b0f180fa4c2c7b9bd64e53b20d52b5
size 33392

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1aaf3d3282191d2e775ef8c8184ed7c56fdc34f8649e1ff8e7ad9da8b8cb4a9d
size 35806
oid sha256:d659a2a7be6a053aa8c4468f2e833687de20248a6b2fd9dcd4a5d47ea54df20c
size 35913

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7076ab247512b4b0c0e631d060e193af0f4d741e5819dcf891368b2b1f3cd890
size 35739
oid sha256:4ddd2c2a6bec2701d8ca8ae755d31713d5dbfcbbe30642f636f0a8ce22712996
size 35843

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5168d33c67566213cab7f71ee0fc71f151172dc8c5065e302249c6bd01cb751c
size 33507
oid sha256:6cacbc497b8211b3c18cec602e24ecca799c07790c1c6766b91c2c84556161f5
size 32322

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c264a1541965790ed5661a3a319e6d6a87e48cc85a95a3590d9595ad39deb760
size 36654
oid sha256:b8cee12ff95d1ccfce0f4445a8e32cea154d8f956cf05888129c23f3d9fe43d5
size 36865

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f65c369e8f8c9526910f375b1d4b7166d1025a143400c6d53f61f3ce6537d67f
size 49858
oid sha256:e08c52be5c9c77c5d3743522f4b2ac4d5dad5cebbaba11245202a9f0e2ca1ccb
size 50275

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e89d557862545f7468cefd88593d0995c813dc8871a92c94552ce26f9ae4651b
size 33066
oid sha256:c54ea0c5ffdb094bea1fe07208a5ed9683f7104ca9d7c85a452c5f0983aeff47
size 33119

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d0fa8bac7f79b1a4feb4b7e808afae0c6b897867539c234daa9faea1bf6daf6e
size 33021
oid sha256:bf6f825427bab3e344617e78971521a1cbbd2daaaf132334b8bd32335111c605
size 33075

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c8f2cc0a8cf7303aef994db2d23efb83b7a8a1c74af39dcef61ae3cfd3277c65
size 30350
oid sha256:144fe1c105acf228ddf28d29f141cff5eca275529e11e38877bdfc8c5a37065f
size 29042

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5dfc5747625a6743966a518dd693cd8c55899ca241005df8179167b1728c2589
size 32274
oid sha256:e7e8b50a6e456b812b0ae5a58442361d85051951979634f89148e09812c0bada
size 32312

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:19e89d8cab891198e62951c0b08ed1318a14347795a35b5e8d94f6358c9f1964
size 47052
oid sha256:3105639c450f6f867cf5592c2cc5c029f20d01c31273ac2eb7680d8d9548f1c0
size 47447

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:44096d9f97614b5e84cf5dd0d966f674b47b50da065daaaa4a70476b3ecdcf91
size 33908
oid sha256:8cea32585e950298058338f5a195ac4a4699f04aa60adb5d794da26dbe43a64f
size 33848

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:605ab2a5cc9b2b10c09908a2f9dd3629f1731742909936ae180c74855e32eed8
size 37695
oid sha256:96db0b988e47a0e3cbaae3982561053f4c7a68a3d0f475c2723619cfce8f891a
size 37959

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ccab888ebe0e5ed94f2cb00117e3d69a888ad656b985768dc08e7fddacdceee7
size 34011
oid sha256:c4b244008a0a0946605641e26ac1ee2b2ed0d689af8e45223458cd06d54970cf
size 33905

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1510614f000837b743b847e616f7e40e86a259846058c1c0ea7a41233392117b
size 41239
oid sha256:60dbf7ac48dc77b79f80c15ea811381ee5885e2c5f702e522e789f16672c694b
size 41164

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ccab888ebe0e5ed94f2cb00117e3d69a888ad656b985768dc08e7fddacdceee7
size 34011
oid sha256:c4b244008a0a0946605641e26ac1ee2b2ed0d689af8e45223458cd06d54970cf
size 33905

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1510614f000837b743b847e616f7e40e86a259846058c1c0ea7a41233392117b
size 41239
oid sha256:60dbf7ac48dc77b79f80c15ea811381ee5885e2c5f702e522e789f16672c694b
size 41164

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:44096d9f97614b5e84cf5dd0d966f674b47b50da065daaaa4a70476b3ecdcf91
size 33908
oid sha256:8cea32585e950298058338f5a195ac4a4699f04aa60adb5d794da26dbe43a64f
size 33848

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef6d0fe324b2f622732cfbda77b55bd5debaf058eadd278f820a23de7c164103
size 31553
oid sha256:ab4197e309e72fb1e486210ef92655b18814eb1f21e9cbcb1e6e60ec7fc8627a
size 31463

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4af656ee89190d8b818e2dfa1c260afca60c4b5f3e24ec6f4d30fe0cd2ed267d
size 34758
oid sha256:103e9412a0a04a5c98290ef51670fbcfaf64b6d76e62fcecf486cb777c4373fa
size 35088

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fddde23759a830f0e0ed9bab9d1754970ce2b2e8ffa78c02c458b090dbbb76aa
size 30719
oid sha256:41b7d2e99dc922af5990a87bea479cefa1da0a274e373d88b3505df0b13ff05a
size 30622

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c78c34bc3f0df68b9130263ac5d35ac1c8b6f98a0e9aa0316461b473653dedc5
size 36730
oid sha256:052a42e15095538d05231b73fd7f5259bd3782d1b280ef0726a0445a9dd719ad
size 36640

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fddde23759a830f0e0ed9bab9d1754970ce2b2e8ffa78c02c458b090dbbb76aa
size 30719
oid sha256:41b7d2e99dc922af5990a87bea479cefa1da0a274e373d88b3505df0b13ff05a
size 30622

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c78c34bc3f0df68b9130263ac5d35ac1c8b6f98a0e9aa0316461b473653dedc5
size 36730
oid sha256:052a42e15095538d05231b73fd7f5259bd3782d1b280ef0726a0445a9dd719ad
size 36640

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef6d0fe324b2f622732cfbda77b55bd5debaf058eadd278f820a23de7c164103
size 31553
oid sha256:ab4197e309e72fb1e486210ef92655b18814eb1f21e9cbcb1e6e60ec7fc8627a
size 31463

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3a3cb6371045e712f494857cd35268724936558550e7dc41344581fd2a1936c3
size 31012
oid sha256:1ed4d3d6c3148ea14e1680c9f7c3af86bc5158a3ffa8ce3f2b62283983bc91f4
size 31166

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ee41b24ea7b2ca8b7c9fa568c0a66537ec9d39c7fc80bf99bfda1592156ec174
size 29041
oid sha256:1a5a64aab614f944cef77887b0c9e848e4273d8e2acf0561aafd28a064767937
size 29319

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ffb71a4dbd1324963ead4b188986a6c90dc6755a5d49e520c5aa74d3cce00384
size 24290
oid sha256:ca0abf8c339aeb7ccaf6e6dd4482288bae180319dbf9f5c25b5ec65011c6838b
size 24211

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:132d77ede5c96774b958b79ec3143c99a66734b04659796351a7b127ab3e2243
size 22852
oid sha256:aa8dfdcdacf72109ab7b0944e3af0f7cbdd6ae2ad42429128f0885483baed011
size 22630

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2d91c6228c80d1d38217e557552e18e64494a94d284de8702d07cc3793150406
size 29177

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eeb5b50675e186318458d0900b2d3872ec52710df8e25ba7b633a4be7e13c8da
size 28196

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:35d63106802f7bce6ddc7ae56a2b206120e9eba1459169480a10bcc5a0d3f9e3
size 29334

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3e4c742ac4907f79f5830f2fed5fbacc4ae352e24fcf7e15b75f3f3d8ce85ab2
size 27151

View file

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ffaad9291e2a8bb3168b08365faac8417a77dbe1e39e94cd4f1d7dfb12ef7e4
size 54838

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3dd3995ea7bdf218f55d2883fade50c29558d2ed2faca318c8d18a0eb7f06a34
size 116197
oid sha256:85ead49e9a818ddc9b337e8386b78d80dcb1723e8f77cb8fe4ce5278680eb6a9
size 116251