package dev.inmo.micro_utils.pagination.utils import dev.inmo.micro_utils.pagination.* import kotlin.js.JsExport @JsExport fun Iterable.paginate(with: Pagination): PaginationResult { var i = 0 val result = mutableListOf() val lowerIndex = with.firstIndex val greatestIndex = with.lastIndex for (item in this) { when { i < lowerIndex || i > greatestIndex -> i++ else -> { result.add(item) i++ } } } return result.createPaginationResult(with, i.toLong()) } @JsExport fun List.paginate(with: Pagination): PaginationResult { return subList(with.firstIndex, with.lastIndex + 1).createPaginationResult( with, size.toLong() ) } @JsExport fun Set.paginate(with: Pagination): PaginationResult { return this.drop(with.firstIndex).take(with.size).createPaginationResult( with, size.toLong() ) }