private void Update()
    {
        switch (currentViewMode)
        {
        case ViewMode.View:

            if (t < 1)
            {
                t += Time.deltaTime * animationSpeed;
                float shift = animationCurve.Evaluate(t);

                canvasGroup.alpha = Mathf.Lerp(1, 0, shift);

                selectedItem.Rect.sizeDelta = Vector2.Lerp(startRectSize, pageSize, shift);
                Vector2 pageAnchorPosition = new Vector2(pageSize.x / 2, -pageSize.y / 2);
                selectedItem.Rect.anchoredPosition = Vector2.Lerp(startAnchorPosition, pageAnchorPosition, shift);
            }

            break;

        case ViewMode.Preview:

            if (animated)
            {
                if (t < 1)
                {
                    t += Time.deltaTime * animationSpeed;
                    float shift = animationCurve.Evaluate(t);

                    canvasGroup.alpha = Mathf.Lerp(0, 1, shift);

                    selectedItem.Rect.sizeDelta = Vector2.Lerp(startRectSize, defaultSize, shift);

                    selectedItem.Rect.anchoredPosition = Vector2.Lerp(startAnchorPosition, viewRectAnchor, shift);
                    selectedItem.Rect.localRotation    = Quaternion.Lerp(startRotation, Quaternion.identity, shift);
                    selectedItem.Rect.localScale       = Vector3.Lerp(startScale, Vector3.one, shift);
                }
                else
                {
                    selectedItem.transform.SetParent(content, true);
                    selectedItem.ExitViewMode();

                    canvasGroup.interactable = true;
                    selectedItem             = null;
                    animated = false;
                }
            }
            else
            {
                if (scrollT < 1)
                {
                    scrollT += Time.deltaTime * scrollSpeed;
                    scrollRect.horizontalScrollbar.value = Mathf.Lerp(startScroll, scrollStep * currentPage, animationCurve.Evaluate(scrollT));
                }
                else
                {
                    scrollRect.horizontalScrollbar.interactable = true;
                }
            }
            break;
        }
    }