/// <summary>
        /// Constructs a rendering of a status effects panel using data provided by view model data.
        /// </summary>
        /// <param name="data">The status data to use to fill the status effects panel.</param>
        /// <returns>A list of string containing the rendering of the status effects panel.</returns>
        public IReadOnlyList <string> Render()
        {
            var action = _viewModelController.GetActionViewData((Commands)_defaultsHandler.CommandFocusNumber,
                                                                _defaultsHandler.ActiveCategory,
                                                                _defaultsHandler.ActionFocusNumber - 1);

            _maxFocusNumber = action.StatusEffects.Count();

            var data = _viewModelController.GetStatusViewData((Commands)_defaultsHandler.CommandFocusNumber,
                                                              _defaultsHandler.ActiveCategory,
                                                              _defaultsHandler.ActionFocusNumber - 1,
                                                              FocusNumber - 1);

            var render = new List <string>();

            string navTriangle = "Tab ► ";
            int    spaces      = MaxWidth - data.Name.Length - navTriangle.Length - 3;

            render.Add("╔" + new string('═', MaxWidth - 2) + "╗");
            render.Add("║ " + data.Name + new string(' ', spaces) + navTriangle + "║");
            render.Add("║" + new string('─', MaxWidth - 2) + "║");

            int maxDataWidth = (MaxWidth - 7) / 2;

            render.AddRange(RenderDescription(data));

            var    damageData = RenderDamageData(data, maxDataWidth);
            var    bulkData   = RenderBulkData(data, maxDataWidth);
            int    maxCount   = (damageData.Count() > bulkData.Count()) ? damageData.Count() : bulkData.Count();
            string blankLine  = new string(' ', maxDataWidth);

            for (int i = 0; i < maxCount; i++)
            {
                if (bulkData.Count() - 1 < i)
                {
                    render.Add("║ " + damageData[i] + " │ " + blankLine + " ║");
                }
                else if (damageData.Count() - 1 < i)
                {
                    render.Add("║ " + blankLine + " │ " + bulkData[i] + " ║");
                }
                else
                {
                    render.Add("║ " + damageData[i] + " │ " + bulkData[i] + " ║");
                }
            }

            // Fill empty spaces
            int size        = render.Count();
            int emptySpaces = (MaxWidth - 3) / 2;

            for (int i = 0; i < MaxHeight - size - 1; i++)
            {
                render.Add("║" + new string(' ', emptySpaces) + "│" + new string(' ', emptySpaces) + "║");
            }

            render.Add("╚" + new string('═', MaxWidth - 2) + "╝");

            return(render);
        }