private async Task GenerateTargetCanvasControlsAsync(IWeb targetWeb, IPage targetPage, MappingProviderOutput mappingOutput, Guid taskId) { // Prepare global tokens var globalTokens = await PrepareGlobalTokensAsync(targetWeb).ConfigureAwait(false); // Get the list of components available in the current site var componentsToAdd = await GetClientSideComponentsAsync(targetPage).ConfigureAwait(false); int sectionOrder = 0; foreach (var section in mappingOutput.TargetPage.Sections) { section.Order = sectionOrder; targetPage.AddSection(section.CanvasTemplate, sectionOrder); var targetSection = targetPage.Sections[sectionOrder]; sectionOrder++; int columnOrder = 0; int controlOrder = 0; foreach (var column in section.Columns) { var targetColumn = targetSection.Columns[columnOrder]; columnOrder++; controlOrder++; foreach (var control in column.Controls) { GenerateTargetCanvasControl(targetPage, componentsToAdd, controlOrder, targetColumn, control, globalTokens, taskId); } } } }