diff --git a/src/lib/cleanString.ts b/src/lib/cleanString.ts
new file mode 100644
index 0000000..05dc2ae
--- /dev/null
+++ b/src/lib/cleanString.ts
@@ -0,0 +1,9 @@
+/** remove emojis and whitespace */
+export function cleanString(string: string): string {
+ return string
+ .replace(
+ /[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2580-\u27BF]|\uD83E[\uDD10-\uDDFF]| /g,
+ ''
+ )
+ .trim()
+}
diff --git a/src/lib/data/items.ts b/src/lib/data/items.ts
index ac906a4..2a33b34 100644
--- a/src/lib/data/items.ts
+++ b/src/lib/data/items.ts
@@ -1,3 +1,4 @@
+import { cleanString } from '$lib/cleanString'
import { db } from '$lib/firebase'
import { calculateKcalPer100FromItems } from '$lib/kcal'
import { getStorage, setStorage } from '$lib/localStorage'
@@ -213,3 +214,40 @@ export interface Portion {
// }
// return items;
// }
+
+export enum ItemSortModes {
+ updatedAt = 'Recently Updated',
+ createdAt = 'Creation Time',
+ label = 'Label',
+ brand = 'Brand',
+ recentItems = 'Recent Items',
+}
+
+export function getSortedItems(mode: ItemSortModes) {
+ const $items = get(items)
+ const collator = new Intl.Collator()
+ console.log('sorting by ...' + mode)
+ switch (mode) {
+ case ItemSortModes.updatedAt:
+ return $items.sort((a, b) => (b.updatedAt || 0) - (a.updatedAt || 0))
+ case ItemSortModes.createdAt:
+ return $items.sort((a, b) => (b.createdAt || 0) - (a.createdAt || 0))
+ case ItemSortModes.label:
+ return $items.sort(({ label: a }, { label: b }) => {
+ const cleanA = cleanString(a)
+ const cleanB = cleanString(b)
+ return collator.compare(cleanA, cleanB)
+ })
+ case ItemSortModes.brand:
+ return $items.sort(({ brand: a }, { brand: b }) => {
+ const cleanA = cleanString(a)
+ const cleanB = cleanString(b)
+ return collator.compare(cleanA, cleanB)
+ })
+ case ItemSortModes.recentItems:
+ return get(recentItems)
+ default:
+ console.warn('No sort mode for ' + mode)
+ return $items
+ }
+}
diff --git a/src/lib/views/ItemDrawer/SavedItems.svelte b/src/lib/views/ItemDrawer/SavedItems.svelte
index 46ea0b0..13b954f 100644
--- a/src/lib/views/ItemDrawer/SavedItems.svelte
+++ b/src/lib/views/ItemDrawer/SavedItems.svelte
@@ -1,7 +1,12 @@
{#if !showQuickSnacks}
@@ -57,25 +35,7 @@
Search
{#if !search}
-
+
{/if}
{#if sortedItems}