@umbraco/playwright-testhelpers 17.0.4 → 17.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/helpers/ContentRenderUiHelper.d.ts +2 -0
- package/dist/lib/helpers/ContentRenderUiHelper.js +5 -0
- package/dist/lib/helpers/ContentRenderUiHelper.js.map +1 -1
- package/dist/lib/helpers/ContentUiHelper.d.ts +5 -0
- package/dist/lib/helpers/ContentUiHelper.js +22 -0
- package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
- package/dist/lib/helpers/DataTypeApiHelper.d.ts +2 -0
- package/dist/lib/helpers/DataTypeApiHelper.js +19 -0
- package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
- package/dist/lib/helpers/DataTypeUiHelper.d.ts +2 -0
- package/dist/lib/helpers/DataTypeUiHelper.js +7 -0
- package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -1
- package/dist/lib/helpers/TemplateApiHelper.d.ts +1 -0
- package/dist/lib/helpers/TemplateApiHelper.js +5 -0
- package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTypeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/DataTypeApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {\n CheckboxListDataTypeBuilder,\n DatePickerDataTypeBuilder,\n BlockListDataTypeBuilder,\n DropdownDataTypeBuilder,\n ContentPickerDataTypeBuilder,\n BlockGridDataTypeBuilder,\n ImageCropperDataTypeBuilder,\n AliasHelper,\n MediaPickerDataTypeBuilder,\n RadioboxDataTypeBuilder,\n TextAreaDataTypeBuilder,\n TextStringDataTypeBuilder,\n TrueFalseDataTypeBuilder,\n EmailAddressDataTypeBuilder,\n CodeEditorDataTypeBuilder,\n MarkdownEditorDataTypeBuilder,\n DecimalDataTypeBuilder,\n MultipleTextStringDataTypeBuilder,\n SliderDataTypeBuilder,\n ListViewDataTypeBuilder,\n TiptapDataTypeBuilder,\n TinyMCEDataTypeBuilder,\n ApprovedColorDataTypeBuilder,\n UploadFieldDataTypeBuilder,\n LabelDataTypeBuilder,\n MultiUrlPickerDataTypeBuilder,\n NumericDataTypeBuilder,\n TagsDataTypeBuilder,\n MultiNodeTreePickerDataTypeBuilder,\n DateTimeWithTimeZonePickerDataTypeBuilder\n} from \"@umbraco/json-models-builders\";\n\nexport class DataTypeApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);\n return await response.json();\n }\n\n async create(name: string, editorAlias: string, editorUiAlias: string, values: { alias: string; value: string; }[], parentId?: string, id?: string) {\n const dataType = {\n \"name\": name,\n \"editorAlias\": editorAlias,\n \"editorUiAlias\": editorUiAlias,\n \"values\": values,\n \"id\": id,\n \"parent\": parentId ? {\"id\": parentId} : null\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType);\n // Returns the id of the created dataType\n return response.headers().location.split(\"v1/data-type/\").pop();\n }\n\n async update(id: string, dataType) {\n const updateDataType = {\n \"name\": dataType.name,\n \"editorAlias\": dataType.editorAlias,\n \"editorUiAlias\": dataType.editorUiAlias,\n \"values\": dataType.values,\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id, updateDataType);\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);\n return response.status() === 200;\n }\n\n async getItems(ids: string[]) {\n let idArray = 'id=' + ids[0];\n let i: number;\n\n for (i = 1; i < ids.length; ++i) {\n idArray += '&id=' + ids[i];\n }\n\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/item?' + idArray);\n return await response.json();\n }\n\n async getByName(name: string) {\n const rootDataTypes = await this.getAllAtRoot();\n const jsonDataTypes = await rootDataTypes.json();\n\n for (const dataType of jsonDataTypes.items) {\n if (dataType.name === name) {\n return this.get(dataType.id);\n } else if (dataType.isContainer || dataType.hasChildren) {\n const result = await this.recurseChildren(name, dataType.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootDataTypes = await this.getAllAtRoot();\n const jsonDataTypes = await rootDataTypes.json();\n\n for (const dataType of jsonDataTypes.items) {\n if (dataType.name === name) {\n if (dataType.isFolder) {\n return await this.recurseDeleteChildren(dataType);\n }\n return await this.delete(dataType.id);\n } else if (dataType.hasChildren) {\n await this.recurseChildren(name, dataType.id, true);\n\n }\n }\n return null;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async moveToFolder(dataTypeId: string, folderId: string) {\n const folderIdBody = {\n \"target\": {id: folderId}\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/move', folderIdBody);\n }\n\n async copyToFolder(dataTypeId: string, folderId: string) {\n const folderIdBody = {\n \"target\": {id: folderId}\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/copy', folderIdBody);\n // Returns the id of the copied dataType\n return response.headers().location.split(\"v1/data-type/\").pop();\n }\n\n // FOLDER\n async getFolder(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);\n return await response.json();\n }\n\n async createFolder(name: string, parentId?: string, id?: string) {\n const folderData = {\n \"name\": name,\n \"id\": id,\n \"parent\": parentId ? {\"id\": parentId} : null\n };\n\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder', folderData);\n // Returns the id of the created dataTypeFolder\n return response.headers().location.split(\"v1/data-type/folder/\").pop();\n }\n\n async renameFolder(id: string, name: string) {\n const folderData = {\n \"name\": name,\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id, folderData);\n }\n\n async deleteFolder(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);\n }\n\n async doesFolderExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);\n return response.status() === 200;\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/children?parentId=' + id + '&skip=0&take=100&foldersOnly=false');\n const items = await response.json();\n return items.items;\n }\n\n private async recurseDeleteChildren(dataFolder) {\n if (!dataFolder.hasChildren) {\n return await this.deleteFolder(dataFolder.id);\n }\n const items = await this.getChildren(dataFolder.id);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child);\n } else if (child.isFolder) {\n await this.deleteFolder(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.deleteFolder(dataFolder.id);\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n if (child.isFolder) {\n return await this.getFolder(child.id);\n }\n return await this.get(child.id);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.id);\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n async save(dataType) {\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType)\n return response.headers().location.split(\"v1/data-type/\").pop();\n }\n\n async createDefaultDateTimeDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DatePickerDataTypeBuilder()\n .withName(name)\n .build();\n return await this.save(dataType);\n }\n\n async createCheckboxListDataType(name: string, options: string[] = []) {\n await this.ensureNameNotExists(name);\n\n const dataType = new CheckboxListDataTypeBuilder()\n .withName(name)\n .withItems(options)\n .build();\n return await this.save(dataType);\n }\n\n async createContentPickerDataTypeWithStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .withStartNodeId(startNodeId)\n .build();\n return await this.save(dataType);\n }\n\n async createContentPickerDataTypeWithShowOpenButton(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .withShowOpenButton(true)\n .build();\n return await this.save(dataType);\n }\n\n async createContentPickerDataTypeWithIgnoreUserStartNodes(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .withStartNodeId(startNodeId)\n .withIgnoreUserStartNodes(true)\n .build();\n return await this.save(dataType);\n }\n \n async createDateTimeDataTypeWithDateFormat(name: string, dateFormat: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DatePickerDataTypeBuilder()\n .withName(name)\n .withFormat(dateFormat)\n .build();\n return await this.save(dataType);\n }\n\n async createDropdownDataType(name: string, isMultiple: boolean, options: string[]) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DropdownDataTypeBuilder()\n .withName(name)\n .withMultiple(isMultiple)\n .withItems(options)\n .build();\n return await this.save(dataType);\n }\n\n // BlockListEditor\n async createEmptyBlockListDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithTwoBlocks(name: string, firstContentElementTypeId: string, secondContentElementTypeId: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(firstContentElementTypeId)\n .done()\n .addBlock()\n .withContentElementTypeKey(secondContentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithABlock(name: string, contentElementTypeId: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithContentAndSettingsElementType(name: string, contentElementTypeId: string, settingsElementTypeId: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withSettingsElementTypeKey(settingsElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithMinAndMaxAmount(name: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .build();\n \n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithSingleBlockMode(name: string, enabled: boolean) {\n await this.ensureNameNotExists(name);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withSingleBlockMode(enabled)\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithLiveEditingMode(name: string, enabled: boolean) {\n await this.ensureNameNotExists(name);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withLiveEditing(enabled)\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithInlineEditingMode(name: string, enabled: boolean) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withInlineEditingAsDefault(enabled)\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithPropertyEditorWidth(name: string, width: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withMaxPropertyWidth(width)\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListWithBlockWithEditorAppearance(name: string, elementTypeId: string, label: string = '', overlaySize: string = 'small') {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(elementTypeId)\n .withLabel(label)\n .withEditorSize(overlaySize)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListWithBlockWithCatalogueAppearance(name: string, elementTypeId: string, backgroundColor: string = '', iconColor: string = '', customStylesheet: string = '') {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(elementTypeId)\n .withBackgroundColor(backgroundColor)\n .withIconColor(iconColor)\n .withStylesheet(customStylesheet)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListWithBlockWithHideContentEditor(name: string, elementTypeId: string, hideContentEditor: boolean) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(elementTypeId)\n .withHideContentEditor(hideContentEditor)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async isSingleBlockModeEnabledForBlockList(blockListName: string, enabled: boolean) {\n const blockList = await this.getByName(blockListName);\n const singleBlockModeValue = blockList.values.find(value => value.alias === 'useSingleBlockMode');\n return singleBlockModeValue?.value === enabled;\n }\n\n async isInlineEditingModeEnabledForBlockList(blockListName: string, enabled: boolean) {\n const blockList = await this.getByName(blockListName);\n const inlineEditingModeValue = blockList.values.find(value => value.alias === 'useInlineEditingAsDefault');\n return inlineEditingModeValue?.value === enabled;\n }\n \n // Block Grid\n async createEmptyBlockGrid(blockGridName: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlock(blockGridName: string, contentElementTypeId: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockInAGroup(blockGridName: string, contentElementTypeId: string, groupName: string ) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlockGroup()\n .withName(groupName)\n .done()\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withGroupName(groupName)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithMinAndMaxAmount(blockGridName: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithLiveEditingMode(blockGridName: string, enabled: boolean) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withLiveEditing(enabled)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithPropertyEditorWidth(blockGridName: string, width: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withMaxPropertyWidth(width)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithCreateButtonLabel(blockGridName: string, label: string = '') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withCreateLabel(label)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithGridColumns(blockGridName: string, columns: number = 12) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withGridColumns(columns)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithLayoutStylesheet(blockGridName: string, stylesheetName: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withLayoutStylesheet('/wwwroot/css/' + stylesheetName)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlock(blockGridName: string, contentElementTypeId: string, areaAlias: string = 'area', createButtonLabel :string = '', columnSpan: number = 6, rowSpan: number = 1, minAllowed: number = 0, maxAllowed: number = 2) {\n await this.ensureNameNotExists(blockGridName);\n \n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .addArea()\n .withAlias(areaAlias)\n .withCreateLabel(createButtonLabel)\n .withColumnSpan(columnSpan)\n .withRowSpan(rowSpan)\n .withMinAllowed(minAllowed)\n .withMaxAllowed(maxAllowed)\n .done()\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlockWithAllowInAreas(blockGridName: string, contentElementTypeId: string, areaAlias: string = 'area', allowInAreas = false, createButtonLabel :string = 'CreateLabel', columnSpan: number = 6, rowSpan: number = 1, minAllowed: number = 0, maxAllowed: number = 2) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .withAllowInAreas(allowInAreas)\n .addArea()\n .withAlias(areaAlias)\n .withCreateLabel(createButtonLabel)\n .withColumnSpan(columnSpan)\n .withRowSpan(rowSpan)\n .withMinAllowed(minAllowed)\n .withMaxAllowed(maxAllowed)\n .done()\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlockWithAllowInAreasAndASecondBlock(blockGridName: string, contentElementTypeId: string, secondContentElementTypeId: string, areaAlias: string = 'area', allowInAreas = false, createButtonLabel: string = 'CreateLabel', columnSpan: number = 6, rowSpan: number = 1, minAllowed: number = 0, maxAllowed: number = 2, secondBlockAllowAtRoot: boolean = true, secondBlockAllowInAreas: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .withAllowInAreas(allowInAreas)\n .addArea()\n .withAlias(areaAlias)\n .withCreateLabel(createButtonLabel)\n .withColumnSpan(columnSpan)\n .withRowSpan(rowSpan)\n .withMinAllowed(minAllowed)\n .withMaxAllowed(maxAllowed)\n .done()\n .done()\n .addBlock()\n .withContentElementTypeKey(secondContentElementTypeId)\n .withAllowAtRoot(secondBlockAllowAtRoot)\n .withAllowInAreas(secondBlockAllowInAreas)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlockWithACreateLabel(blockGridName: string, contentElementTypeId: string, createButtonLabel: string = '', areaAlias: string = 'area') {\n return await this.createBlockGridWithAnAreaInABlockWithAllowInAreas(blockGridName, contentElementTypeId, areaAlias, true, createButtonLabel);\n }\n\n async createBlockGridWithAnAreaInABlockWithColumnSpanAndRowSpan(blockGridName: string, contentElementTypeId: string, columnSpan: number = 6, rowSpan: number = 1, areaAlias: string = 'area', createButtonLabel: string = 'CreateLabel') {\n return await this.createBlockGridWithAnAreaInABlockWithAllowInAreas(blockGridName, contentElementTypeId, areaAlias, true, createButtonLabel, columnSpan, rowSpan);\n }\n\n async createBlockGridWithAnAreaInABlockWithMinAndMaxAllowed(blockGridName: string, contentElementTypeId: string, secondContentElementTypeId: string, minAllowed: number = 0, maxAllowed: number = 2, areaAlias: string = 'area', createButtonLabel: string = 'CreateLabel') {\n return await this.createBlockGridWithAnAreaInABlockWithAllowInAreasAndASecondBlock(blockGridName, contentElementTypeId, secondContentElementTypeId, areaAlias, true, createButtonLabel, 6, 1, minAllowed, maxAllowed);\n }\n\n async createBlockGridWithAdvancedSettingsInBlock(blockGridName: string, contentElementTypeId: string, customViewPath: string = '', customStylesheetPath: string = '', overlaySize: string = 'small', inlineEditing: boolean = false, hideContentEditor: boolean = false) {\n await this.ensureNameNotExists(blockGridName);\n const encodedViewPath = await this.api.stylesheet.encodeStylesheetPath(customViewPath);\n const encodedStylesheetPath = await this.api.stylesheet.encodeStylesheetPath(customStylesheetPath);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withView(encodedViewPath)\n .withStylesheet(encodedStylesheetPath)\n .withEditorSize(overlaySize)\n .withInlineEditing(inlineEditing)\n .withHideContentEditor(hideContentEditor)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithCatalogueAppearanceInBlock(blockGridName: string, contentElementTypeId: string, backgroundColor: string = '', iconColor: string = '', thumbnail: string = '') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withBackgroundColor(backgroundColor)\n .withIconColor(iconColor)\n .withThumbnail(thumbnail)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithContentAndSettingsElementType(blockGridName: string, contentElementTypeId: string, settingsElementTypeId: string, allowAtRoot: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withSettingsElementTypeKey(settingsElementTypeId)\n .withAllowAtRoot(allowAtRoot)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithLabel(blockGridName: string, contentElementTypeId: string, label: string, allowAtRoot: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withLabel(label)\n .withAllowAtRoot(allowAtRoot)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithPermissions(blockGridName: string, contentElementTypeId: string, toAllowInRoot: boolean = false, toAllowInAreas: boolean = false) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(toAllowInRoot)\n .withAllowInAreas(toAllowInAreas)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithSizeOptions(blockGridName: string, contentElementTypeId: string, columnSpans: number = 0, minRowSpan: number = 0, maxRowSpan: number = 12) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .addColumnSpanOptions(columnSpans)\n .withMinRowSpan(minRowSpan)\n .withMaxRowSpan(maxRowSpan)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockWithInlineEditingModeAndABlockWithAnArea(blockGridName: string, firstBlockElementTypeId: string, inlineEditing: boolean, secondBlockElementTypeId: string, areaAlias: string = 'area') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(firstBlockElementTypeId)\n .withInlineEditing(inlineEditing)\n .withAllowInAreas(true)\n .done()\n .addBlock()\n .withContentElementTypeKey(secondBlockElementTypeId)\n .withAllowAtRoot(true)\n .addArea()\n .withAlias(areaAlias)\n .withColumnSpan(12)\n .withRowSpan(1)\n .addSpecifiedAllowance()\n .withElementTypeKey(firstBlockElementTypeId)\n .done()\n .done()\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async getBlockGridAreaKeyFromBlock(blockGridName: string, elementTypeKey: string, areaAlias: string) {\n const blockGrid = await this.getByName(blockGridName);\n const blocksValue = blockGrid.values.find(value => value.alias === 'blocks');\n\n const block = blocksValue.value.find(block => block.contentElementTypeKey === elementTypeKey);\n const area = block.areas.find(area => area.alias === areaAlias);\n return area.key;\n }\n\n async doesBlockEditorContainBlocksWithContentTypeIds(blockEditorName: string, elementTypeIds: string[]) {\n if (!elementTypeIds || elementTypeIds.length === 0) {\n return false;\n }\n\n const blockEditor = await this.getByName(blockEditorName);\n const blocksValue = blockEditor.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n\n const contentElementTypeKeys = blocksValue.value.map(block => block.contentElementTypeKey);\n return elementTypeIds.every(id => contentElementTypeKeys.includes(id));\n }\n\n async doesBlockEditorContainBlocksWithSettingsTypeIds(blockEditorName: string, elementTypeIds: string[]) {\n if (!elementTypeIds || elementTypeIds.length === 0) {\n return false;\n }\n\n const blockEditor = await this.getByName(blockEditorName);\n const blocksValue = blockEditor.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n\n const settingsElementTypeKeys = blocksValue.value.map(block => block.settingsElementTypeKey);\n return elementTypeIds.every(id => settingsElementTypeKeys.includes(id));\n }\n\n async isLiveEditingModeEnabledForBlockEditor(blockEditorName: string, enabled: boolean) {\n const blockEditor = await this.getByName(blockEditorName);\n const liveEditingModeValue = blockEditor.values.find(value => value.alias === 'useLiveEditing');\n return liveEditingModeValue?.value === enabled;\n }\n\n async doesMaxPropertyContainWidthForBlockEditor(blockEditorName: string, width: string) {\n const blockEditor = await this.getByName(blockEditorName);\n const maxPropertyWidthValue = blockEditor.values.find(value => value.alias === 'maxPropertyWidth');\n return maxPropertyWidthValue?.value === width;\n }\n\n async doesBlockEditorBlockContainLabel(blockName: string, elementTypeKey: string, label: string) {\n const block = await this.getBlockWithContentElementTypeId(blockName, elementTypeKey);\n return block.label === label;\n }\n\n async doesBlockGridGroupContainCorrectBlocks(blockGridName: string, groupName: string, elementTypeIds: string[]) {\n if (!elementTypeIds || elementTypeIds.length === 0) {\n return false;\n }\n\n const blockEditor = await this.getByName(blockGridName);\n // We need to get the GroupKey, so we can use it to find the blocks that use the Key.\n const blockGroupsValue = blockEditor.values.find(value => value.alias === 'blockGroups');\n if (!blockGroupsValue || blockGroupsValue.value.length === 0) {\n return false;\n }\n\n const blockGroupKey = blockGroupsValue.value.find(blockGroup => blockGroup.name === groupName).key;\n const blocksValue = blockEditor.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n\n const blocksWithGroupKey = blocksValue.value.filter(block => block.groupKey === blockGroupKey);\n return elementTypeIds.every(id =>\n blocksWithGroupKey.some(block => block.contentElementTypeKey === id)\n );\n }\n\n async doesBlockGridContainCreateButtonLabel(blockGridName: string, label: string) {\n const blockEditor = await this.getByName(blockGridName);\n const createLabelValue = blockEditor.values.find(value => value.alias === 'createLabel');\n return createLabelValue?.value === label;\n }\n\n async doesBlockGridContainGridColumns(blockGridName: string, columns: number) {\n const blockEditor = await this.getByName(blockGridName);\n const gridColumnsValue = blockEditor.values.find(value => value.alias === 'gridColumns');\n return gridColumnsValue?.value === columns;\n }\n\n async doesBlockEditorBlockHaveAllowInRootEnabled(blockGridName: string, elementTypeKey: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.allowAtRoot;\n }\n\n async doesBlockEditorBlockHaveAllowInAreasEnabled(blockGridName: string, elementTypeKey: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.allowInAreas;\n }\n\n async doesBlockEditorBlockContainColumnSpanOptions(blockGridName: string, elementTypeKey: string, expectedColumnSpans: number[]) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n\n // If the block does not have any columnSpanOptions, and we are not expecting any, return true\n if (block.columnSpanOptions.length === 0 && expectedColumnSpans.length === 0) {\n return true;\n }\n\n const columnSpans = block.columnSpanOptions.map(option => option.columnSpan);\n return expectedColumnSpans.every(span => columnSpans.includes(span)) && columnSpans.every(span => expectedColumnSpans.includes(span));\n }\n\n async doesBlockEditorBlockContainRowSpanOptions(blockGridName: string, elementTypeKey: string, minRowSpan: number, maxRowSpan: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.rowMinSpan === minRowSpan && block.rowMaxSpan === maxRowSpan;\n }\n\n async doesBlockEditorBlockContainAreaGridColumns(blockGridName: string, elementTypeKey: string, areaGridColumns: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areaGridColumns === areaGridColumns;\n }\n\n async doesBlockEditorBlockContainAreaWithAlias(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area') {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.alias === areaAlias);\n }\n \n async doesBlockEditorBlockContainAreaCount(blockGridName: string, elementTypeKey: string, areaCount: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.length === areaCount;\n }\n\n async doesBlockEditorBlockContainAreaWithCreateButtonLabel(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area', createButtonLabel: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.createLabel === createButtonLabel && area.alias === areaAlias);\n }\n\n async doesBlockEditorBlockContainAreaWithMinAllowed(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area', minAllowed: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.minAllowed === minAllowed && area.alias === areaAlias);\n }\n\n async doesBlockEditorBlockContainAreaWithMaxAllowed(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area', maxAllowed: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.maxAllowed === maxAllowed && area.alias === areaAlias);\n }\n\n async doesBlockEditorBlockContainStylesheet(blockGridName: string, elementTypeKey: string, stylesheetPath: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n const encodedSecondStylesheetPath = await this.api.stylesheet.encodeStylesheetPath(stylesheetPath);\n return block.stylesheet[0] === encodedSecondStylesheetPath;\n }\n\n async doesBlockEditorBlockContainOverlaySize(blockGridName: string, elementTypeKey: string, overlaySize: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.editorSize === overlaySize;\n }\n\n async doesBlockEditorBlockContainInlineEditing(blockGridName: string, elementTypeKey: string, inlineEditing: boolean) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.inlineEditing === inlineEditing;\n }\n\n async doesBlockEditorBlockContainHideContentEditor(blockGridName: string, elementTypeKey: string, hideContentEditor: boolean) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.hideContentEditor === hideContentEditor;\n }\n\n async doesBlockEditorBlockContainBackgroundColor(blockGridName: string, elementTypeKey: string, backgroundColor: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.backgroundColor === backgroundColor;\n }\n\n async doesBlockEditorBlockContainIconColor(blockGridName: string, elementTypeKey: string, iconColor: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.iconColor === iconColor;\n }\n\n async doesBlockEditorBlockContainThumbnail(blockGridName: string, elementTypeKey: string, thumbnail: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.thumbnail === thumbnail;\n }\n \n async getBlockWithContentElementTypeId(blockGridName: string, contentElementTypeKey: string) {\n const blockEditor = await this.getByName(blockGridName);\n const blocks = blockEditor.values.find(value => value.alias === 'blocks');\n return blocks.value.find(block => block.contentElementTypeKey === contentElementTypeKey);\n }\n\n async createImageCropperDataTypeWithOneCrop(name: string, cropLabel: string, cropWidth: number, cropHeight: number) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ImageCropperDataTypeBuilder()\n .withName(name)\n .addCrop()\n .withLabel(cropLabel)\n .withAlias(AliasHelper.toAlias(cropLabel))\n .withHeight(cropHeight)\n .withWidth(cropWidth)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n\n async createMediaPickerDataTypeWithStartNodeId(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withStartNodeId(startNodeId)\n .withIgnoreUserStartNodes(false)\n .build();\n\n return await this.save(dataType);\n }\n\n async createRadioboxDataType(name: string, options: string[] = []) {\n await this.ensureNameNotExists(name);\n\n const dataType = new RadioboxDataTypeBuilder()\n .withName(name)\n .withItems(options)\n .build();\n \n return await this.save(dataType);\n }\n\n async createImageMediaPickerDataType(name: string, minValue = 0, maxValue = 1, enableLocalFocalPoint = false, ignoreUserStartNodes = false) {\n await this.ensureNameNotExists(name);\n const mediaType = await this.api.mediaType.getByName('Image');\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withFilter(mediaType.id)\n .withMultiple(false)\n .withMinValue(minValue)\n .withMaxValue(maxValue)\n .withEnableLocalFocalPoint(enableLocalFocalPoint)\n .withIgnoreUserStartNodes(ignoreUserStartNodes)\n .build();\n\n return await this.save(dataType);\n }\n\n async createImageMediaPickerDataTypeWithStartNodeId(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n const mediaType = await this.api.mediaType.getByName('Image');\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withFilter(mediaType.id)\n .withStartNodeId(startNodeId)\n .build();\n\n return await this.save(dataType);\n }\n \n async createImageMediaPickerDataTypeWithCrop(name: string, label: string, width: number, height: number) {\n await this.ensureNameNotExists(name);\n const mediaType = await this.api.mediaType.getByName('Image');\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withFilter(mediaType.id)\n .addCrop()\n .withLabel(label)\n .withAlias(AliasHelper.toAlias(label))\n .withHeight(height)\n .withWidth(width)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n\n async createTextareaDataType(name: string, maxChars: number = 0, rows: number = 0, minHeight: number = 0, maxHeight: number = 0) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TextAreaDataTypeBuilder()\n .withName(name)\n .withMaxChars(maxChars)\n .withRows(rows)\n .withMinHeight(minHeight)\n .withMaxHeight(maxHeight)\n .build();\n\n return await this.save(dataType);\n }\n\n async createTextstringDataType(name: string, maxChars: number = 0) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TextStringDataTypeBuilder()\n .withName(name)\n .withMaxChars(maxChars)\n .build();\n\n return await this.save(dataType);\n }\n \n async createTrueFalseDataTypeWithInitialState(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .withIsDefault(true)\n .build();\n\n return await this.save(dataType);\n }\n\n async createTrueFalseDataTypeWithLabelOn(name: string, labelOn: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .withShowLabels(true)\n .withLabelOn(labelOn)\n .build();\n\n return await this.save(dataType);\n }\n\n async createTrueFalseDataTypeWithLabelOff(name: string, labelOff: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .withShowLabels(true)\n .withLabelOff(labelOff)\n .build();\n\n return await this.save(dataType);\n }\n\n async createEmailAddressDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new EmailAddressDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createCodeEditorDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new CodeEditorDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createMarkdownEditorDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MarkdownEditorDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDecimalDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DecimalDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createMultipleTextStringDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MultipleTextStringDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createSliderDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new SliderDataTypeBuilder()\n .withName(name)\n .withMaxValue(100)\n .withStep(1)\n .build();\n\n return await this.save(dataType);\n }\n\n // List View - Content data type\n async createListViewContentDataType(name: string = 'List View - Content Test') {\n await this.ensureNameNotExists(name);\n\n const dataType = new ListViewDataTypeBuilder()\n .withName(name)\n .withPageSize(100)\n .addLayout()\n .withName('List')\n .withIcon('icon-list')\n .withCollectionView('Umb.CollectionView.Document.Table')\n .done()\n .addLayout()\n .withName('Grid')\n .withIcon('icon-grid')\n .withCollectionView('Umb.CollectionView.Document.Grid')\n .done()\n .addColumnDisplayedProperty()\n .withAlias('updateDate')\n .withHeader('Last edited')\n .withIsSystem(true)\n .done()\n .addColumnDisplayedProperty()\n .withAlias('creator')\n .withHeader('Updated by')\n .withIsSystem(true)\n .done()\n .build();\n return await this.save(dataType);\n }\n\n async createListViewContentDataTypeWithLayoutAndPageSize(name: string = 'List View - Content Test', layoutAlias: string = 'Umb.CollectionView.Document.Table', layoutName: string = 'List', pageSize: number = 100 ) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ListViewDataTypeBuilder()\n .withName(name)\n .withPageSize(pageSize)\n .withOrderDirection('asc')\n .addLayout()\n .withName(layoutName)\n .withIcon('icon-list')\n .withCollectionView(layoutAlias)\n .done()\n .addColumnDisplayedProperty()\n .withAlias('updateDate')\n .withHeader('Last edited')\n .withIsSystem(true)\n .done()\n .addColumnDisplayedProperty()\n .withAlias('creator')\n .withHeader('Updated by')\n .withIsSystem(true)\n .done()\n .build();\n return await this.save(dataType);\n }\n\n async createListViewContentDataTypeWithAllPermissions(name: string = 'List View - Content Test') {\n await this.ensureNameNotExists(name);\n\n const dataType = new ListViewDataTypeBuilder()\n .withName(name)\n .withPageSize(100)\n .addLayout()\n .withName('List')\n .withIcon('icon-list')\n .withCollectionView('Umb.CollectionView.Document.Table')\n .done()\n .addLayout()\n .withName('Grid')\n .withIcon('icon-grid')\n .withCollectionView('Umb.CollectionView.Document.Grid')\n .done()\n .addColumnDisplayedProperty()\n .withAlias('updateDate')\n .withHeader('Last edited')\n .done()\n .addColumnDisplayedProperty()\n .withAlias('creator')\n .withHeader('Updated by')\n .done()\n .addBulkActionPermissions()\n .withAllowBulkCopy(true)\n .withAllowBulkDelete(true)\n .withAllowBulkMove(true)\n .withAllowBulkPublish(true)\n .withAllowBulkUnPublish(true)\n .done()\n .build();\n return await this.save(dataType);\n }\n \n // List View - Media data type\n async updateListViewMediaDataType(alias: string, newValue: any) {\n const listViewMediaData = await this.getByName('List View - Media');\n const valueData = listViewMediaData.values.find(value => value.alias === alias);\n if (valueData) {\n valueData.value = newValue;\n } else {\n listViewMediaData.values.push({\n \"alias\": alias,\n \"value\": newValue\n });\n }\n return await this.update(listViewMediaData.id, listViewMediaData);\n }\n\n async createDefaultTiptapDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .build();\n \n return await this.save(dataType);\n }\n \n async createTipTapDataTypeWithABlock(name: string, contentElementTypeKey: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeKey)\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockPicker(true)\n .done()\n .done()\n .addExtension()\n .withBlock(true)\n .done()\n .build();\n \n return await this.save(dataType);\n };\n\n async createApprovedColorDataTypeWithOneItem(name: string, itemLabel: string, itemValue: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ApprovedColorDataTypeBuilder()\n .withName(name)\n .withUseLabel(true)\n .addItem()\n .withLabel(itemLabel)\n .withValue(itemValue)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n\n async getTiptapExtensionsCount(tipTapName: string) {\n const tipTapData = await this.getByName(tipTapName);\n const extensionsValue = tipTapData.values.find(value => value.alias === 'extensions');\n return extensionsValue?.value.length;\n }\n\n async getTiptapToolbarGroupInRowCount(tipTapName: string, rowIndex: number = 0) {\n const tipTapData = await this.getByName(tipTapName);\n const toolbarValue = tipTapData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value[rowIndex].length;\n }\n\n async getTiptapToolbarGroupValueInRow(tipTapName: string, groupIndex: number, rowIndex: number = 0) {\n const tipTapData = await this.getByName(tipTapName);\n const toolbarValue = tipTapData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value[rowIndex][groupIndex];\n }\n\n async getTiptapToolbarRowCount(tipTapName: string) {\n const tipTapData = await this.getByName(tipTapName);\n const toolbarValue = tipTapData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value.length;\n }\n\n async createDefaultTinyMCEDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TinyMCEDataTypeBuilder()\n .withName(name)\n .addToolbar()\n .withStyles(true)\n .withBold(true)\n .withItalic(true)\n .withAlignLeft(true)\n .withAlignCenter(true)\n .withAlignRight(true)\n .withBulList(true)\n .withNumList(true)\n .withOutdent(true)\n .withIndent(true)\n .withSourceCode(true)\n .withLink(true)\n .withUmbEmbedDialog(true)\n .withUmbMediaPicker(true)\n .done()\n .withEditorMode('Classic')\n .withMaxImageSize(500)\n .build();\n\n return await this.save(dataType);\n }\n\n async getTinyMCEToolbarItemsCount(tinyMCEName: string) {\n const tinyMCEData = await this.getByName(tinyMCEName);\n const toolbarValue = tinyMCEData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value.length;\n }\n\n async doesTinyMCEToolbarItemsMatchCount(tinyMCEName: string, count: number) {\n const tinyMCEData = await this.getByName(tinyMCEName);\n const toolbarValue = tinyMCEData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value.length === count;\n }\n\n async doesTinyMCEToolbarHaveItems(tinyMCEName: string, items: string[]) {\n const tinyMCEData = await this.getByName(tinyMCEName);\n const toolbarValue = tinyMCEData.values.find(value => value.alias === 'toolbar');\n if (!toolbarValue || toolbarValue.value.length === 0) {\n return false;\n }\n return items.every(item => toolbarValue.value.includes(item));\n }\n\n async createTiptapDataTypeWithTwoToolbarRows(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addToolbarRow()\n .addToolbarGroup()\n .withHeading1(true)\n .withHeading2(true)\n .withHeading3(true)\n .done()\n .addToolbarGroup()\n .withBold(true)\n .withItalic(true)\n .done()\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockquote(true)\n .withBulletList(true)\n .done()\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createTinyMCEDataTypeWithStylesheet(name: string, stylesheetPath: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TinyMCEDataTypeBuilder()\n .withName(name)\n .addStylesheet(stylesheetPath)\n .addToolbar()\n .withBold(true)\n .withItalic(true)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n \n async createBlockGridWithABlockAndAllowAtRoot(blockGridName: string, contentElementTypeId: string, allowAtRoot: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(allowAtRoot)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockAndMinAndMaxAmount(blockGridName: string, contentElementTypeId: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockAndCreateButtonLabel(blockGridName: string, contentElementTypeId: string, label: string = '') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withCreateLabel(label)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockAndGridColumns(blockGridName: string, contentElementTypeId: string, gridColumns: number) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withGridColumns(gridColumns)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockListWithABlockAndMinAndMaxAmount(blockListName: string, contentElementTypeId: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(blockListName);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(blockListName)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithLabel(blockListName: string, contentElementTypeId: string, label: string) {\n await this.ensureNameNotExists(blockListName);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(blockListName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withLabel(label)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async doesBlockGridContainLayoutStylesheet(blockGridName: string, stylesheetName: string) {\n const blockEditor = await this.getByName(blockGridName);\n const layoutStylesheetValue = blockEditor.values.find(value => value.alias === 'layoutStylesheet');\n return layoutStylesheetValue?.value === '/wwwroot/css/' + stylesheetName;\n }\n \n async createRichTextEditorWithABlock(richTextEditorName: string, contentElementTypeId: string) {\n await this.ensureNameNotExists(richTextEditorName);\n\n const richTextEditor = new TiptapDataTypeBuilder()\n .withName(richTextEditorName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .addExtension()\n .withBlock(true)\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockPicker(true)\n .done()\n .done()\n .build();\n\n return await this.save(richTextEditor);\n }\n\n async createRichTextEditorWithABlockWithBlockSettings(richTextEditorName: string, contentElementTypeId: string, label: string = \"\", backgroundColor: string = \"\", iconColor: string = \"\", thumbnail: string = \"\", editorSize: string = \"\", settingsElementTypeId: string = \"\", displayInline: boolean = false) {\n await this.ensureNameNotExists(richTextEditorName);\n\n const richTextEditor = new TiptapDataTypeBuilder()\n .withName(richTextEditorName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withLabel(label)\n .withEditorSize(editorSize)\n .withSettingsElementTypeKey(settingsElementTypeId)\n .withBackgroundColor(backgroundColor)\n .withIconColor(iconColor)\n .withThumbnail(thumbnail)\n .withDisplayInline(displayInline)\n .done()\n .addExtension()\n .withBlock(true)\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockPicker(true)\n .done()\n .done()\n .build();\n\n return await this.save(richTextEditor);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingEditorSize(richTextEditorName: string, contentElementTypeId: string, editorSize: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", \"\", editorSize);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingLabel(richTextEditorName: string, contentElementTypeId: string, label: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, label);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingBackgroundColor(richTextEditorName: string, contentElementTypeId: string, backgroundColor: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", backgroundColor);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingIconColor(richTextEditorName: string, contentElementTypeId: string, iconColor: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", iconColor);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingThumbnail(richTextEditorName: string, contentElementTypeId: string, thumbnail: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", thumbnail);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingSettingsElementTypeKey(richTextEditorName: string, contentElementTypeId: string, settingsElementTypeId: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", \"\", \"\", settingsElementTypeId);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingDisplayInline(richTextEditorName: string, contentElementTypeId: string, displayInline: boolean) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", \"\", \"\", \"\", displayInline);\n }\n\n async doesDataTypeHaveValue(dataTypeName: string, alias: string, value?: any, dataTypeData?) {\n const dataType = dataTypeData || await this.getByName(dataTypeName);\n const valueData = dataType.values.find(item => item.alias === alias);\n if (!valueData) {\n return false;\n }\n if (Array.isArray(valueData?.value) && Array.isArray(value)) {\n return value.every(item => valueData.value.includes(item));\n }\n return valueData?.value === value;\n }\n\n async doesApprovedColorHaveColor(dataTypeName: string, color: string) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'items');\n return valueData?.value.find(item => item.value === color);\n }\n\n async createUploadDataType(name: string, fileExtensions: string[] = []) {\n await this.ensureNameNotExists(name);\n\n const dataType = new UploadFieldDataTypeBuilder()\n .withName(name)\n .withFileExtensions(fileExtensions)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultApprovedColorDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ApprovedColorDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultContentPickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultDropdownDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DropdownDataTypeBuilder()\n .withName(name)\n .build();\n return await this.save(dataType);\n }\n\n async createDefaultLabelDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new LabelDataTypeBuilder()\n .withName(name)\n .build();\n return await this.save(dataType);\n }\n\n async createDefaultMediaPickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async doesMediaPickerHaveMinAndMaxAmount(dataTypeName: string, min: number, max: number) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'validationLimit');\n return valueData?.value.max === max && valueData?.value.min === min;\n }\n\n async doesDataTypeHaveCrops(dataTypeName: string, cropLabel: string, cropAlias: string, cropWidth: number, cropHeight: number) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'crops');\n return valueData?.value.find(item => item.label === cropLabel && item.alias === cropAlias && item.width === cropWidth && item.height === cropHeight);\n }\n\n async doesRTEHaveDimensions(dataTypeName: string, width: number, height: number) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'dimensions');\n return valueData?.value.width === width && valueData?.value.height === height;\n }\n\n async doesTiptapExtensionsItemsMatchCount(tiptapName: string, count: number) {\n const tiptapData = await this.getByName(tiptapName);\n const extensionsValue = tiptapData.values.find(value => value.alias === 'extensions');\n return extensionsValue?.value.length === count;\n }\n\n async doesTiptapExtensionsHaveItems(tiptapName: string, items: string[]) {\n const tiptapData = await this.getByName(tiptapName);\n const extensionsValue = tiptapData.values.find(value => value.alias === 'extensions');\n if (!extensionsValue || extensionsValue.value.length === 0) {\n return false;\n }\n return items.every(item => extensionsValue.value.includes(item));\n }\n\n async doesTiptapToolbarHaveItems(tiptapName: string, items) {\n const tiptapData = await this.getByName(tiptapName);\n const toolbarValue = tiptapData.values.find(value => value.alias === 'toolbar');\n if (!toolbarValue || toolbarValue.value.length === 0) {\n return false;\n }\n return JSON.stringify(toolbarValue.value) === JSON.stringify(items);\n }\n\n async doesRTEContainBlocks(dataTypeName: string, elementTypeIds: string[]) {\n const dataTypeData = await this.getByName(dataTypeName);\n const blocksValue = dataTypeData.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n const contentElementTypeKeys = blocksValue.value.map(block => block.contentElementTypeKey);\n return elementTypeIds.every(id => contentElementTypeKeys.includes(id));\n }\n\n async createDefaultImageCropperDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ImageCropperDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async doesListViewHaveProperty(dataTypeName: string, header: string, alias: string, isSystem: any = true) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'includeProperties');\n if (!valueData || valueData.value.length === 0) {\n return false;\n }\n return valueData?.value.find(item => item.header === header && item.alias === alias && item.isSystem === isSystem);\n }\n\n async doesListViewHaveLayout(dataTypeName: string, name: string, icon: string, collectionView: string) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'layouts');\n if (!valueData || valueData.value.length === 0) {\n return false;\n }\n return valueData?.value.find(item => item.name === name && item.icon === icon && item.collectionView === collectionView);\n }\n\n async createDefaultMultiUrlPickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MultiUrlPickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultNumericDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new NumericDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultTagsDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TagsDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultTrueFalseDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createBlockListDataTypeWithInlineEditingModeAndABlock(blockListName: string, contentElementTypeId: string, inlineEditing: boolean = true) {\n await this.ensureNameNotExists(blockListName);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(blockListName)\n .withInlineEditingAsDefault(inlineEditing)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockGridWithABlockWithInlineEditingMode(blockGridName: string, contentElementTypeId: string, inlineEditing: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withInlineEditing(inlineEditing)\n .withAllowAtRoot(true)\n .withAllowInAreas(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createTiptapDataTypeWithWordCountStatusbar(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addExtension()\n .withWordCount(true)\n .done()\n .addStatusbar()\n .withWordCount(true)\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createTiptapDataTypeWithElementPathStatusbar(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addStatusbar()\n .withElementPath(true)\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createTiptapDataTypeWithStyleSelect(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addToolbarRow()\n .addToolbarGroup()\n .withStyleSelect(true)\n .done()\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createMultiNodeTreePickerDataTypeWithAllowedTypes(name: string, allowedTypeIds: string, startNodeType: string = 'content') {\n await this.ensureNameNotExists(name);\n\n const dataType = new MultiNodeTreePickerDataTypeBuilder()\n .withName(name)\n .withFilterIds(allowedTypeIds)\n .addStartNode()\n .withType(startNodeType)\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createDefaultDateTimeWithTimeZonePickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DateTimeWithTimeZonePickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async doesDateTimeWithTimeZoneHaveMode(dataTypeName: string, mode: string) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'timeZones');\n return valueData?.value.mode === mode;\n }\n\n async doesDateTimeWithTimeZoneHaveTimeZones(dataTypeName: string, timeZones: string[]) {\n const dataTypeData = await this.getByName(dataTypeName);\n const timeZonesData = dataTypeData.values.find(item => item.alias === 'timeZones');\n if (!timeZonesData || !timeZonesData.value) {\n return false;\n }\n const existingZones = timeZonesData.value.timeZones;\n return timeZones.every(timeZone => existingZones.includes(timeZone));\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"DataTypeApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/DataTypeApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {\n CheckboxListDataTypeBuilder,\n DatePickerDataTypeBuilder,\n BlockListDataTypeBuilder,\n DropdownDataTypeBuilder,\n ContentPickerDataTypeBuilder,\n BlockGridDataTypeBuilder,\n ImageCropperDataTypeBuilder,\n AliasHelper,\n MediaPickerDataTypeBuilder,\n RadioboxDataTypeBuilder,\n TextAreaDataTypeBuilder,\n TextStringDataTypeBuilder,\n TrueFalseDataTypeBuilder,\n EmailAddressDataTypeBuilder,\n CodeEditorDataTypeBuilder,\n MarkdownEditorDataTypeBuilder,\n DecimalDataTypeBuilder,\n MultipleTextStringDataTypeBuilder,\n SliderDataTypeBuilder,\n ListViewDataTypeBuilder,\n TiptapDataTypeBuilder,\n TinyMCEDataTypeBuilder,\n ApprovedColorDataTypeBuilder,\n UploadFieldDataTypeBuilder,\n LabelDataTypeBuilder,\n MultiUrlPickerDataTypeBuilder,\n NumericDataTypeBuilder,\n TagsDataTypeBuilder,\n MultiNodeTreePickerDataTypeBuilder,\n DateTimeWithTimeZonePickerDataTypeBuilder, EntityDataPickerDataTypeBuilder\n} from \"@umbraco/json-models-builders\";\n\nexport class DataTypeApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);\n return await response.json();\n }\n\n async create(name: string, editorAlias: string, editorUiAlias: string, values: { alias: string; value: string; }[], parentId?: string, id?: string) {\n const dataType = {\n \"name\": name,\n \"editorAlias\": editorAlias,\n \"editorUiAlias\": editorUiAlias,\n \"values\": values,\n \"id\": id,\n \"parent\": parentId ? {\"id\": parentId} : null\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType);\n // Returns the id of the created dataType\n return response.headers().location.split(\"v1/data-type/\").pop();\n }\n\n async update(id: string, dataType) {\n const updateDataType = {\n \"name\": dataType.name,\n \"editorAlias\": dataType.editorAlias,\n \"editorUiAlias\": dataType.editorUiAlias,\n \"values\": dataType.values,\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id, updateDataType);\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/root?skip=0&take=10000&foldersOnly=false');\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + id);\n return response.status() === 200;\n }\n\n async getItems(ids: string[]) {\n let idArray = 'id=' + ids[0];\n let i: number;\n\n for (i = 1; i < ids.length; ++i) {\n idArray += '&id=' + ids[i];\n }\n\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/item?' + idArray);\n return await response.json();\n }\n\n async getByName(name: string) {\n const rootDataTypes = await this.getAllAtRoot();\n const jsonDataTypes = await rootDataTypes.json();\n\n for (const dataType of jsonDataTypes.items) {\n if (dataType.name === name) {\n return this.get(dataType.id);\n } else if (dataType.isContainer || dataType.hasChildren) {\n const result = await this.recurseChildren(name, dataType.id, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootDataTypes = await this.getAllAtRoot();\n const jsonDataTypes = await rootDataTypes.json();\n\n for (const dataType of jsonDataTypes.items) {\n if (dataType.name === name) {\n if (dataType.isFolder) {\n return await this.recurseDeleteChildren(dataType);\n }\n return await this.delete(dataType.id);\n } else if (dataType.hasChildren) {\n await this.recurseChildren(name, dataType.id, true);\n\n }\n }\n return null;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async moveToFolder(dataTypeId: string, folderId: string) {\n const folderIdBody = {\n \"target\": {id: folderId}\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/move', folderIdBody);\n }\n\n async copyToFolder(dataTypeId: string, folderId: string) {\n const folderIdBody = {\n \"target\": {id: folderId}\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/' + dataTypeId + '/copy', folderIdBody);\n // Returns the id of the copied dataType\n return response.headers().location.split(\"v1/data-type/\").pop();\n }\n\n // FOLDER\n async getFolder(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);\n return await response.json();\n }\n\n async createFolder(name: string, parentId?: string, id?: string) {\n const folderData = {\n \"name\": name,\n \"id\": id,\n \"parent\": parentId ? {\"id\": parentId} : null\n };\n\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder', folderData);\n // Returns the id of the created dataTypeFolder\n return response.headers().location.split(\"v1/data-type/folder/\").pop();\n }\n\n async renameFolder(id: string, name: string) {\n const folderData = {\n \"name\": name,\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id, folderData);\n }\n\n async deleteFolder(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);\n }\n\n async doesFolderExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/data-type/folder/' + id);\n return response.status() === 200;\n }\n\n async getChildren(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/data-type/children?parentId=' + id + '&skip=0&take=100&foldersOnly=false');\n const items = await response.json();\n return items.items;\n }\n\n private async recurseDeleteChildren(dataFolder) {\n if (!dataFolder.hasChildren) {\n return await this.deleteFolder(dataFolder.id);\n }\n const items = await this.getChildren(dataFolder.id);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child);\n } else if (child.isFolder) {\n await this.deleteFolder(child.id);\n } else {\n await this.delete(child.id);\n }\n }\n return await this.deleteFolder(dataFolder.id);\n }\n\n private async recurseChildren(name: string, id: string, toDelete: boolean) {\n const items = await this.getChildren(id);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n if (child.isFolder) {\n return await this.getFolder(child.id);\n }\n return await this.get(child.id);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.id);\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.id, toDelete);\n }\n }\n return false;\n }\n\n async save(dataType) {\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/data-type', dataType)\n return response.headers().location.split(\"v1/data-type/\").pop();\n }\n\n async createDefaultDateTimeDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DatePickerDataTypeBuilder()\n .withName(name)\n .build();\n return await this.save(dataType);\n }\n\n async createCheckboxListDataType(name: string, options: string[] = []) {\n await this.ensureNameNotExists(name);\n\n const dataType = new CheckboxListDataTypeBuilder()\n .withName(name)\n .withItems(options)\n .build();\n return await this.save(dataType);\n }\n\n async createContentPickerDataTypeWithStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .withStartNodeId(startNodeId)\n .build();\n return await this.save(dataType);\n }\n\n async createContentPickerDataTypeWithShowOpenButton(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .withShowOpenButton(true)\n .build();\n return await this.save(dataType);\n }\n\n async createContentPickerDataTypeWithIgnoreUserStartNodes(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .withStartNodeId(startNodeId)\n .withIgnoreUserStartNodes(true)\n .build();\n return await this.save(dataType);\n }\n \n async createDateTimeDataTypeWithDateFormat(name: string, dateFormat: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DatePickerDataTypeBuilder()\n .withName(name)\n .withFormat(dateFormat)\n .build();\n return await this.save(dataType);\n }\n\n async createDropdownDataType(name: string, isMultiple: boolean, options: string[]) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DropdownDataTypeBuilder()\n .withName(name)\n .withMultiple(isMultiple)\n .withItems(options)\n .build();\n return await this.save(dataType);\n }\n\n // BlockListEditor\n async createEmptyBlockListDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithTwoBlocks(name: string, firstContentElementTypeId: string, secondContentElementTypeId: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(firstContentElementTypeId)\n .done()\n .addBlock()\n .withContentElementTypeKey(secondContentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithABlock(name: string, contentElementTypeId: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithContentAndSettingsElementType(name: string, contentElementTypeId: string, settingsElementTypeId: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withSettingsElementTypeKey(settingsElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithMinAndMaxAmount(name: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .build();\n \n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithSingleBlockMode(name: string, enabled: boolean) {\n await this.ensureNameNotExists(name);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withSingleBlockMode(enabled)\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithLiveEditingMode(name: string, enabled: boolean) {\n await this.ensureNameNotExists(name);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withLiveEditing(enabled)\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithInlineEditingMode(name: string, enabled: boolean) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withInlineEditingAsDefault(enabled)\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListDataTypeWithPropertyEditorWidth(name: string, width: string) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .withMaxPropertyWidth(width)\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListWithBlockWithEditorAppearance(name: string, elementTypeId: string, label: string = '', overlaySize: string = 'small') {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(elementTypeId)\n .withLabel(label)\n .withEditorSize(overlaySize)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListWithBlockWithCatalogueAppearance(name: string, elementTypeId: string, backgroundColor: string = '', iconColor: string = '', customStylesheet: string = '') {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(elementTypeId)\n .withBackgroundColor(backgroundColor)\n .withIconColor(iconColor)\n .withStylesheet(customStylesheet)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async createBlockListWithBlockWithHideContentEditor(name: string, elementTypeId: string, hideContentEditor: boolean) {\n await this.ensureNameNotExists(name);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(elementTypeId)\n .withHideContentEditor(hideContentEditor)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async isSingleBlockModeEnabledForBlockList(blockListName: string, enabled: boolean) {\n const blockList = await this.getByName(blockListName);\n const singleBlockModeValue = blockList.values.find(value => value.alias === 'useSingleBlockMode');\n return singleBlockModeValue?.value === enabled;\n }\n\n async isInlineEditingModeEnabledForBlockList(blockListName: string, enabled: boolean) {\n const blockList = await this.getByName(blockListName);\n const inlineEditingModeValue = blockList.values.find(value => value.alias === 'useInlineEditingAsDefault');\n return inlineEditingModeValue?.value === enabled;\n }\n \n // Block Grid\n async createEmptyBlockGrid(blockGridName: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlock(blockGridName: string, contentElementTypeId: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockInAGroup(blockGridName: string, contentElementTypeId: string, groupName: string ) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlockGroup()\n .withName(groupName)\n .done()\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withGroupName(groupName)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithMinAndMaxAmount(blockGridName: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithLiveEditingMode(blockGridName: string, enabled: boolean) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withLiveEditing(enabled)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithPropertyEditorWidth(blockGridName: string, width: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withMaxPropertyWidth(width)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithCreateButtonLabel(blockGridName: string, label: string = '') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withCreateLabel(label)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithGridColumns(blockGridName: string, columns: number = 12) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withGridColumns(columns)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithLayoutStylesheet(blockGridName: string, stylesheetName: string) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withLayoutStylesheet('/wwwroot/css/' + stylesheetName)\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlock(blockGridName: string, contentElementTypeId: string, areaAlias: string = 'area', createButtonLabel :string = '', columnSpan: number = 6, rowSpan: number = 1, minAllowed: number = 0, maxAllowed: number = 2) {\n await this.ensureNameNotExists(blockGridName);\n \n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .addArea()\n .withAlias(areaAlias)\n .withCreateLabel(createButtonLabel)\n .withColumnSpan(columnSpan)\n .withRowSpan(rowSpan)\n .withMinAllowed(minAllowed)\n .withMaxAllowed(maxAllowed)\n .done()\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlockWithAllowInAreas(blockGridName: string, contentElementTypeId: string, areaAlias: string = 'area', allowInAreas = false, createButtonLabel :string = 'CreateLabel', columnSpan: number = 6, rowSpan: number = 1, minAllowed: number = 0, maxAllowed: number = 2) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .withAllowInAreas(allowInAreas)\n .addArea()\n .withAlias(areaAlias)\n .withCreateLabel(createButtonLabel)\n .withColumnSpan(columnSpan)\n .withRowSpan(rowSpan)\n .withMinAllowed(minAllowed)\n .withMaxAllowed(maxAllowed)\n .done()\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlockWithAllowInAreasAndASecondBlock(blockGridName: string, contentElementTypeId: string, secondContentElementTypeId: string, areaAlias: string = 'area', allowInAreas = false, createButtonLabel: string = 'CreateLabel', columnSpan: number = 6, rowSpan: number = 1, minAllowed: number = 0, maxAllowed: number = 2, secondBlockAllowAtRoot: boolean = true, secondBlockAllowInAreas: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .withAllowInAreas(allowInAreas)\n .addArea()\n .withAlias(areaAlias)\n .withCreateLabel(createButtonLabel)\n .withColumnSpan(columnSpan)\n .withRowSpan(rowSpan)\n .withMinAllowed(minAllowed)\n .withMaxAllowed(maxAllowed)\n .done()\n .done()\n .addBlock()\n .withContentElementTypeKey(secondContentElementTypeId)\n .withAllowAtRoot(secondBlockAllowAtRoot)\n .withAllowInAreas(secondBlockAllowInAreas)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithAnAreaInABlockWithACreateLabel(blockGridName: string, contentElementTypeId: string, createButtonLabel: string = '', areaAlias: string = 'area') {\n return await this.createBlockGridWithAnAreaInABlockWithAllowInAreas(blockGridName, contentElementTypeId, areaAlias, true, createButtonLabel);\n }\n\n async createBlockGridWithAnAreaInABlockWithColumnSpanAndRowSpan(blockGridName: string, contentElementTypeId: string, columnSpan: number = 6, rowSpan: number = 1, areaAlias: string = 'area', createButtonLabel: string = 'CreateLabel') {\n return await this.createBlockGridWithAnAreaInABlockWithAllowInAreas(blockGridName, contentElementTypeId, areaAlias, true, createButtonLabel, columnSpan, rowSpan);\n }\n\n async createBlockGridWithAnAreaInABlockWithMinAndMaxAllowed(blockGridName: string, contentElementTypeId: string, secondContentElementTypeId: string, minAllowed: number = 0, maxAllowed: number = 2, areaAlias: string = 'area', createButtonLabel: string = 'CreateLabel') {\n return await this.createBlockGridWithAnAreaInABlockWithAllowInAreasAndASecondBlock(blockGridName, contentElementTypeId, secondContentElementTypeId, areaAlias, true, createButtonLabel, 6, 1, minAllowed, maxAllowed);\n }\n\n async createBlockGridWithAdvancedSettingsInBlock(blockGridName: string, contentElementTypeId: string, customViewPath: string = '', customStylesheetPath: string = '', overlaySize: string = 'small', inlineEditing: boolean = false, hideContentEditor: boolean = false) {\n await this.ensureNameNotExists(blockGridName);\n const encodedViewPath = await this.api.stylesheet.encodeStylesheetPath(customViewPath);\n const encodedStylesheetPath = await this.api.stylesheet.encodeStylesheetPath(customStylesheetPath);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withView(encodedViewPath)\n .withStylesheet(encodedStylesheetPath)\n .withEditorSize(overlaySize)\n .withInlineEditing(inlineEditing)\n .withHideContentEditor(hideContentEditor)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithCatalogueAppearanceInBlock(blockGridName: string, contentElementTypeId: string, backgroundColor: string = '', iconColor: string = '', thumbnail: string = '') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withBackgroundColor(backgroundColor)\n .withIconColor(iconColor)\n .withThumbnail(thumbnail)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithContentAndSettingsElementType(blockGridName: string, contentElementTypeId: string, settingsElementTypeId: string, allowAtRoot: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withSettingsElementTypeKey(settingsElementTypeId)\n .withAllowAtRoot(allowAtRoot)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithLabel(blockGridName: string, contentElementTypeId: string, label: string, allowAtRoot: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withLabel(label)\n .withAllowAtRoot(allowAtRoot)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithPermissions(blockGridName: string, contentElementTypeId: string, toAllowInRoot: boolean = false, toAllowInAreas: boolean = false) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(toAllowInRoot)\n .withAllowInAreas(toAllowInAreas)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithSizeOptions(blockGridName: string, contentElementTypeId: string, columnSpans: number = 0, minRowSpan: number = 0, maxRowSpan: number = 12) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .addColumnSpanOptions(columnSpans)\n .withMinRowSpan(minRowSpan)\n .withMaxRowSpan(maxRowSpan)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockWithInlineEditingModeAndABlockWithAnArea(blockGridName: string, firstBlockElementTypeId: string, inlineEditing: boolean, secondBlockElementTypeId: string, areaAlias: string = 'area') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(firstBlockElementTypeId)\n .withInlineEditing(inlineEditing)\n .withAllowInAreas(true)\n .done()\n .addBlock()\n .withContentElementTypeKey(secondBlockElementTypeId)\n .withAllowAtRoot(true)\n .addArea()\n .withAlias(areaAlias)\n .withColumnSpan(12)\n .withRowSpan(1)\n .addSpecifiedAllowance()\n .withElementTypeKey(firstBlockElementTypeId)\n .done()\n .done()\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async getBlockGridAreaKeyFromBlock(blockGridName: string, elementTypeKey: string, areaAlias: string) {\n const blockGrid = await this.getByName(blockGridName);\n const blocksValue = blockGrid.values.find(value => value.alias === 'blocks');\n\n const block = blocksValue.value.find(block => block.contentElementTypeKey === elementTypeKey);\n const area = block.areas.find(area => area.alias === areaAlias);\n return area.key;\n }\n\n async doesBlockEditorContainBlocksWithContentTypeIds(blockEditorName: string, elementTypeIds: string[]) {\n if (!elementTypeIds || elementTypeIds.length === 0) {\n return false;\n }\n\n const blockEditor = await this.getByName(blockEditorName);\n const blocksValue = blockEditor.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n\n const contentElementTypeKeys = blocksValue.value.map(block => block.contentElementTypeKey);\n return elementTypeIds.every(id => contentElementTypeKeys.includes(id));\n }\n\n async doesBlockEditorContainBlocksWithSettingsTypeIds(blockEditorName: string, elementTypeIds: string[]) {\n if (!elementTypeIds || elementTypeIds.length === 0) {\n return false;\n }\n\n const blockEditor = await this.getByName(blockEditorName);\n const blocksValue = blockEditor.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n\n const settingsElementTypeKeys = blocksValue.value.map(block => block.settingsElementTypeKey);\n return elementTypeIds.every(id => settingsElementTypeKeys.includes(id));\n }\n\n async isLiveEditingModeEnabledForBlockEditor(blockEditorName: string, enabled: boolean) {\n const blockEditor = await this.getByName(blockEditorName);\n const liveEditingModeValue = blockEditor.values.find(value => value.alias === 'useLiveEditing');\n return liveEditingModeValue?.value === enabled;\n }\n\n async doesMaxPropertyContainWidthForBlockEditor(blockEditorName: string, width: string) {\n const blockEditor = await this.getByName(blockEditorName);\n const maxPropertyWidthValue = blockEditor.values.find(value => value.alias === 'maxPropertyWidth');\n return maxPropertyWidthValue?.value === width;\n }\n\n async doesBlockEditorBlockContainLabel(blockName: string, elementTypeKey: string, label: string) {\n const block = await this.getBlockWithContentElementTypeId(blockName, elementTypeKey);\n return block.label === label;\n }\n\n async doesBlockGridGroupContainCorrectBlocks(blockGridName: string, groupName: string, elementTypeIds: string[]) {\n if (!elementTypeIds || elementTypeIds.length === 0) {\n return false;\n }\n\n const blockEditor = await this.getByName(blockGridName);\n // We need to get the GroupKey, so we can use it to find the blocks that use the Key.\n const blockGroupsValue = blockEditor.values.find(value => value.alias === 'blockGroups');\n if (!blockGroupsValue || blockGroupsValue.value.length === 0) {\n return false;\n }\n\n const blockGroupKey = blockGroupsValue.value.find(blockGroup => blockGroup.name === groupName).key;\n const blocksValue = blockEditor.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n\n const blocksWithGroupKey = blocksValue.value.filter(block => block.groupKey === blockGroupKey);\n return elementTypeIds.every(id =>\n blocksWithGroupKey.some(block => block.contentElementTypeKey === id)\n );\n }\n\n async doesBlockGridContainCreateButtonLabel(blockGridName: string, label: string) {\n const blockEditor = await this.getByName(blockGridName);\n const createLabelValue = blockEditor.values.find(value => value.alias === 'createLabel');\n return createLabelValue?.value === label;\n }\n\n async doesBlockGridContainGridColumns(blockGridName: string, columns: number) {\n const blockEditor = await this.getByName(blockGridName);\n const gridColumnsValue = blockEditor.values.find(value => value.alias === 'gridColumns');\n return gridColumnsValue?.value === columns;\n }\n\n async doesBlockEditorBlockHaveAllowInRootEnabled(blockGridName: string, elementTypeKey: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.allowAtRoot;\n }\n\n async doesBlockEditorBlockHaveAllowInAreasEnabled(blockGridName: string, elementTypeKey: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.allowInAreas;\n }\n\n async doesBlockEditorBlockContainColumnSpanOptions(blockGridName: string, elementTypeKey: string, expectedColumnSpans: number[]) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n\n // If the block does not have any columnSpanOptions, and we are not expecting any, return true\n if (block.columnSpanOptions.length === 0 && expectedColumnSpans.length === 0) {\n return true;\n }\n\n const columnSpans = block.columnSpanOptions.map(option => option.columnSpan);\n return expectedColumnSpans.every(span => columnSpans.includes(span)) && columnSpans.every(span => expectedColumnSpans.includes(span));\n }\n\n async doesBlockEditorBlockContainRowSpanOptions(blockGridName: string, elementTypeKey: string, minRowSpan: number, maxRowSpan: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.rowMinSpan === minRowSpan && block.rowMaxSpan === maxRowSpan;\n }\n\n async doesBlockEditorBlockContainAreaGridColumns(blockGridName: string, elementTypeKey: string, areaGridColumns: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areaGridColumns === areaGridColumns;\n }\n\n async doesBlockEditorBlockContainAreaWithAlias(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area') {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.alias === areaAlias);\n }\n \n async doesBlockEditorBlockContainAreaCount(blockGridName: string, elementTypeKey: string, areaCount: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.length === areaCount;\n }\n\n async doesBlockEditorBlockContainAreaWithCreateButtonLabel(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area', createButtonLabel: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.createLabel === createButtonLabel && area.alias === areaAlias);\n }\n\n async doesBlockEditorBlockContainAreaWithMinAllowed(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area', minAllowed: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.minAllowed === minAllowed && area.alias === areaAlias);\n }\n\n async doesBlockEditorBlockContainAreaWithMaxAllowed(blockGridName: string, elementTypeKey: string, areaAlias: string = 'area', maxAllowed: number) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.areas.find(area => area.maxAllowed === maxAllowed && area.alias === areaAlias);\n }\n\n async doesBlockEditorBlockContainStylesheet(blockGridName: string, elementTypeKey: string, stylesheetPath: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n const encodedSecondStylesheetPath = await this.api.stylesheet.encodeStylesheetPath(stylesheetPath);\n return block.stylesheet[0] === encodedSecondStylesheetPath;\n }\n\n async doesBlockEditorBlockContainOverlaySize(blockGridName: string, elementTypeKey: string, overlaySize: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.editorSize === overlaySize;\n }\n\n async doesBlockEditorBlockContainInlineEditing(blockGridName: string, elementTypeKey: string, inlineEditing: boolean) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.inlineEditing === inlineEditing;\n }\n\n async doesBlockEditorBlockContainHideContentEditor(blockGridName: string, elementTypeKey: string, hideContentEditor: boolean) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.hideContentEditor === hideContentEditor;\n }\n\n async doesBlockEditorBlockContainBackgroundColor(blockGridName: string, elementTypeKey: string, backgroundColor: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.backgroundColor === backgroundColor;\n }\n\n async doesBlockEditorBlockContainIconColor(blockGridName: string, elementTypeKey: string, iconColor: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.iconColor === iconColor;\n }\n\n async doesBlockEditorBlockContainThumbnail(blockGridName: string, elementTypeKey: string, thumbnail: string) {\n const block = await this.getBlockWithContentElementTypeId(blockGridName, elementTypeKey);\n return block.thumbnail === thumbnail;\n }\n \n async getBlockWithContentElementTypeId(blockGridName: string, contentElementTypeKey: string) {\n const blockEditor = await this.getByName(blockGridName);\n const blocks = blockEditor.values.find(value => value.alias === 'blocks');\n return blocks.value.find(block => block.contentElementTypeKey === contentElementTypeKey);\n }\n\n async createImageCropperDataTypeWithOneCrop(name: string, cropLabel: string, cropWidth: number, cropHeight: number) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ImageCropperDataTypeBuilder()\n .withName(name)\n .addCrop()\n .withLabel(cropLabel)\n .withAlias(AliasHelper.toAlias(cropLabel))\n .withHeight(cropHeight)\n .withWidth(cropWidth)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n\n async createMediaPickerDataTypeWithStartNodeId(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withStartNodeId(startNodeId)\n .withIgnoreUserStartNodes(false)\n .build();\n\n return await this.save(dataType);\n }\n\n async createRadioboxDataType(name: string, options: string[] = []) {\n await this.ensureNameNotExists(name);\n\n const dataType = new RadioboxDataTypeBuilder()\n .withName(name)\n .withItems(options)\n .build();\n \n return await this.save(dataType);\n }\n\n async createImageMediaPickerDataType(name: string, minValue = 0, maxValue = 1, enableLocalFocalPoint = false, ignoreUserStartNodes = false) {\n await this.ensureNameNotExists(name);\n const mediaType = await this.api.mediaType.getByName('Image');\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withFilter(mediaType.id)\n .withMultiple(false)\n .withMinValue(minValue)\n .withMaxValue(maxValue)\n .withEnableLocalFocalPoint(enableLocalFocalPoint)\n .withIgnoreUserStartNodes(ignoreUserStartNodes)\n .build();\n\n return await this.save(dataType);\n }\n\n async createImageMediaPickerDataTypeWithStartNodeId(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n const mediaType = await this.api.mediaType.getByName('Image');\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withFilter(mediaType.id)\n .withStartNodeId(startNodeId)\n .build();\n\n return await this.save(dataType);\n }\n \n async createImageMediaPickerDataTypeWithCrop(name: string, label: string, width: number, height: number) {\n await this.ensureNameNotExists(name);\n const mediaType = await this.api.mediaType.getByName('Image');\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .withFilter(mediaType.id)\n .addCrop()\n .withLabel(label)\n .withAlias(AliasHelper.toAlias(label))\n .withHeight(height)\n .withWidth(width)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n\n async createTextareaDataType(name: string, maxChars: number = 0, rows: number = 0, minHeight: number = 0, maxHeight: number = 0) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TextAreaDataTypeBuilder()\n .withName(name)\n .withMaxChars(maxChars)\n .withRows(rows)\n .withMinHeight(minHeight)\n .withMaxHeight(maxHeight)\n .build();\n\n return await this.save(dataType);\n }\n\n async createTextstringDataType(name: string, maxChars: number = 0) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TextStringDataTypeBuilder()\n .withName(name)\n .withMaxChars(maxChars)\n .build();\n\n return await this.save(dataType);\n }\n \n async createTrueFalseDataTypeWithInitialState(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .withIsDefault(true)\n .build();\n\n return await this.save(dataType);\n }\n\n async createTrueFalseDataTypeWithLabelOn(name: string, labelOn: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .withShowLabels(true)\n .withLabelOn(labelOn)\n .build();\n\n return await this.save(dataType);\n }\n\n async createTrueFalseDataTypeWithLabelOff(name: string, labelOff: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .withShowLabels(true)\n .withLabelOff(labelOff)\n .build();\n\n return await this.save(dataType);\n }\n\n async createEmailAddressDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new EmailAddressDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createCodeEditorDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new CodeEditorDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createMarkdownEditorDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MarkdownEditorDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDecimalDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DecimalDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createMultipleTextStringDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MultipleTextStringDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createSliderDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new SliderDataTypeBuilder()\n .withName(name)\n .withMaxValue(100)\n .withStep(1)\n .build();\n\n return await this.save(dataType);\n }\n\n // List View - Content data type\n async createListViewContentDataType(name: string = 'List View - Content Test') {\n await this.ensureNameNotExists(name);\n\n const dataType = new ListViewDataTypeBuilder()\n .withName(name)\n .withPageSize(100)\n .addLayout()\n .withName('List')\n .withIcon('icon-list')\n .withCollectionView('Umb.CollectionView.Document.Table')\n .done()\n .addLayout()\n .withName('Grid')\n .withIcon('icon-grid')\n .withCollectionView('Umb.CollectionView.Document.Grid')\n .done()\n .addColumnDisplayedProperty()\n .withAlias('updateDate')\n .withHeader('Last edited')\n .withIsSystem(true)\n .done()\n .addColumnDisplayedProperty()\n .withAlias('creator')\n .withHeader('Updated by')\n .withIsSystem(true)\n .done()\n .build();\n return await this.save(dataType);\n }\n\n async createListViewContentDataTypeWithLayoutAndPageSize(name: string = 'List View - Content Test', layoutAlias: string = 'Umb.CollectionView.Document.Table', layoutName: string = 'List', pageSize: number = 100 ) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ListViewDataTypeBuilder()\n .withName(name)\n .withPageSize(pageSize)\n .withOrderDirection('asc')\n .addLayout()\n .withName(layoutName)\n .withIcon('icon-list')\n .withCollectionView(layoutAlias)\n .done()\n .addColumnDisplayedProperty()\n .withAlias('updateDate')\n .withHeader('Last edited')\n .withIsSystem(true)\n .done()\n .addColumnDisplayedProperty()\n .withAlias('creator')\n .withHeader('Updated by')\n .withIsSystem(true)\n .done()\n .build();\n return await this.save(dataType);\n }\n\n async createListViewContentDataTypeWithAllPermissions(name: string = 'List View - Content Test') {\n await this.ensureNameNotExists(name);\n\n const dataType = new ListViewDataTypeBuilder()\n .withName(name)\n .withPageSize(100)\n .addLayout()\n .withName('List')\n .withIcon('icon-list')\n .withCollectionView('Umb.CollectionView.Document.Table')\n .done()\n .addLayout()\n .withName('Grid')\n .withIcon('icon-grid')\n .withCollectionView('Umb.CollectionView.Document.Grid')\n .done()\n .addColumnDisplayedProperty()\n .withAlias('updateDate')\n .withHeader('Last edited')\n .done()\n .addColumnDisplayedProperty()\n .withAlias('creator')\n .withHeader('Updated by')\n .done()\n .addBulkActionPermissions()\n .withAllowBulkCopy(true)\n .withAllowBulkDelete(true)\n .withAllowBulkMove(true)\n .withAllowBulkPublish(true)\n .withAllowBulkUnPublish(true)\n .done()\n .build();\n return await this.save(dataType);\n }\n \n // List View - Media data type\n async updateListViewMediaDataType(alias: string, newValue: any) {\n const listViewMediaData = await this.getByName('List View - Media');\n const valueData = listViewMediaData.values.find(value => value.alias === alias);\n if (valueData) {\n valueData.value = newValue;\n } else {\n listViewMediaData.values.push({\n \"alias\": alias,\n \"value\": newValue\n });\n }\n return await this.update(listViewMediaData.id, listViewMediaData);\n }\n\n async createDefaultTiptapDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .build();\n \n return await this.save(dataType);\n }\n \n async createTipTapDataTypeWithABlock(name: string, contentElementTypeKey: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeKey)\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockPicker(true)\n .done()\n .done()\n .addExtension()\n .withBlock(true)\n .done()\n .build();\n \n return await this.save(dataType);\n };\n\n async createApprovedColorDataTypeWithOneItem(name: string, itemLabel: string, itemValue: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ApprovedColorDataTypeBuilder()\n .withName(name)\n .withUseLabel(true)\n .addItem()\n .withLabel(itemLabel)\n .withValue(itemValue)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n\n async getTiptapExtensionsCount(tipTapName: string) {\n const tipTapData = await this.getByName(tipTapName);\n const extensionsValue = tipTapData.values.find(value => value.alias === 'extensions');\n return extensionsValue?.value.length;\n }\n\n async getTiptapToolbarGroupInRowCount(tipTapName: string, rowIndex: number = 0) {\n const tipTapData = await this.getByName(tipTapName);\n const toolbarValue = tipTapData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value[rowIndex].length;\n }\n\n async getTiptapToolbarGroupValueInRow(tipTapName: string, groupIndex: number, rowIndex: number = 0) {\n const tipTapData = await this.getByName(tipTapName);\n const toolbarValue = tipTapData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value[rowIndex][groupIndex];\n }\n\n async getTiptapToolbarRowCount(tipTapName: string) {\n const tipTapData = await this.getByName(tipTapName);\n const toolbarValue = tipTapData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value.length;\n }\n\n async createDefaultTinyMCEDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TinyMCEDataTypeBuilder()\n .withName(name)\n .addToolbar()\n .withStyles(true)\n .withBold(true)\n .withItalic(true)\n .withAlignLeft(true)\n .withAlignCenter(true)\n .withAlignRight(true)\n .withBulList(true)\n .withNumList(true)\n .withOutdent(true)\n .withIndent(true)\n .withSourceCode(true)\n .withLink(true)\n .withUmbEmbedDialog(true)\n .withUmbMediaPicker(true)\n .done()\n .withEditorMode('Classic')\n .withMaxImageSize(500)\n .build();\n\n return await this.save(dataType);\n }\n\n async getTinyMCEToolbarItemsCount(tinyMCEName: string) {\n const tinyMCEData = await this.getByName(tinyMCEName);\n const toolbarValue = tinyMCEData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value.length;\n }\n\n async doesTinyMCEToolbarItemsMatchCount(tinyMCEName: string, count: number) {\n const tinyMCEData = await this.getByName(tinyMCEName);\n const toolbarValue = tinyMCEData.values.find(value => value.alias === 'toolbar');\n return toolbarValue?.value.length === count;\n }\n\n async doesTinyMCEToolbarHaveItems(tinyMCEName: string, items: string[]) {\n const tinyMCEData = await this.getByName(tinyMCEName);\n const toolbarValue = tinyMCEData.values.find(value => value.alias === 'toolbar');\n if (!toolbarValue || toolbarValue.value.length === 0) {\n return false;\n }\n return items.every(item => toolbarValue.value.includes(item));\n }\n\n async createTiptapDataTypeWithTwoToolbarRows(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addToolbarRow()\n .addToolbarGroup()\n .withHeading1(true)\n .withHeading2(true)\n .withHeading3(true)\n .done()\n .addToolbarGroup()\n .withBold(true)\n .withItalic(true)\n .done()\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockquote(true)\n .withBulletList(true)\n .done()\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createTinyMCEDataTypeWithStylesheet(name: string, stylesheetPath: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TinyMCEDataTypeBuilder()\n .withName(name)\n .addStylesheet(stylesheetPath)\n .addToolbar()\n .withBold(true)\n .withItalic(true)\n .done()\n .build();\n\n return await this.save(dataType);\n }\n \n async createBlockGridWithABlockAndAllowAtRoot(blockGridName: string, contentElementTypeId: string, allowAtRoot: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(allowAtRoot)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockAndMinAndMaxAmount(blockGridName: string, contentElementTypeId: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockAndCreateButtonLabel(blockGridName: string, contentElementTypeId: string, label: string = '') {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withCreateLabel(label)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockGridWithABlockAndGridColumns(blockGridName: string, contentElementTypeId: string, gridColumns: number) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .withGridColumns(gridColumns)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withAllowAtRoot(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createBlockListWithABlockAndMinAndMaxAmount(blockListName: string, contentElementTypeId: string, minAmount: number = 0, maxAmount: number = 0) {\n await this.ensureNameNotExists(blockListName);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(blockListName)\n .withMinValue(minAmount)\n .withMaxValue(maxAmount)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockListDataTypeWithLabel(blockListName: string, contentElementTypeId: string, label: string) {\n await this.ensureNameNotExists(blockListName);\n\n const blockList = new BlockListDataTypeBuilder()\n .withName(blockListName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withLabel(label)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n \n async doesBlockGridContainLayoutStylesheet(blockGridName: string, stylesheetName: string) {\n const blockEditor = await this.getByName(blockGridName);\n const layoutStylesheetValue = blockEditor.values.find(value => value.alias === 'layoutStylesheet');\n return layoutStylesheetValue?.value === '/wwwroot/css/' + stylesheetName;\n }\n \n async createRichTextEditorWithABlock(richTextEditorName: string, contentElementTypeId: string) {\n await this.ensureNameNotExists(richTextEditorName);\n\n const richTextEditor = new TiptapDataTypeBuilder()\n .withName(richTextEditorName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .addExtension()\n .withBlock(true)\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockPicker(true)\n .done()\n .done()\n .build();\n\n return await this.save(richTextEditor);\n }\n\n async createRichTextEditorWithABlockWithBlockSettings(richTextEditorName: string, contentElementTypeId: string, label: string = \"\", backgroundColor: string = \"\", iconColor: string = \"\", thumbnail: string = \"\", editorSize: string = \"\", settingsElementTypeId: string = \"\", displayInline: boolean = false) {\n await this.ensureNameNotExists(richTextEditorName);\n\n const richTextEditor = new TiptapDataTypeBuilder()\n .withName(richTextEditorName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withLabel(label)\n .withEditorSize(editorSize)\n .withSettingsElementTypeKey(settingsElementTypeId)\n .withBackgroundColor(backgroundColor)\n .withIconColor(iconColor)\n .withThumbnail(thumbnail)\n .withDisplayInline(displayInline)\n .done()\n .addExtension()\n .withBlock(true)\n .done()\n .addToolbarRow()\n .addToolbarGroup()\n .withBlockPicker(true)\n .done()\n .done()\n .build();\n\n return await this.save(richTextEditor);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingEditorSize(richTextEditorName: string, contentElementTypeId: string, editorSize: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", \"\", editorSize);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingLabel(richTextEditorName: string, contentElementTypeId: string, label: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, label);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingBackgroundColor(richTextEditorName: string, contentElementTypeId: string, backgroundColor: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", backgroundColor);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingIconColor(richTextEditorName: string, contentElementTypeId: string, iconColor: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", iconColor);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingThumbnail(richTextEditorName: string, contentElementTypeId: string, thumbnail: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", thumbnail);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingSettingsElementTypeKey(richTextEditorName: string, contentElementTypeId: string, settingsElementTypeId: string) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", \"\", \"\", settingsElementTypeId);\n }\n \n async createRichTextEditorWithABlockWithBlockSettingDisplayInline(richTextEditorName: string, contentElementTypeId: string, displayInline: boolean) {\n return await this.createRichTextEditorWithABlockWithBlockSettings(richTextEditorName, contentElementTypeId, \"\", \"\", \"\", \"\", \"\", \"\", displayInline);\n }\n\n async doesDataTypeHaveValue(dataTypeName: string, alias: string, value?: any, dataTypeData?) {\n const dataType = dataTypeData || await this.getByName(dataTypeName);\n const valueData = dataType.values.find(item => item.alias === alias);\n if (!valueData) {\n return false;\n }\n if (Array.isArray(valueData?.value) && Array.isArray(value)) {\n return value.every(item => valueData.value.includes(item));\n }\n return valueData?.value === value;\n }\n\n async doesApprovedColorHaveColor(dataTypeName: string, color: string) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'items');\n return valueData?.value.find(item => item.value === color);\n }\n\n async createUploadDataType(name: string, fileExtensions: string[] = []) {\n await this.ensureNameNotExists(name);\n\n const dataType = new UploadFieldDataTypeBuilder()\n .withName(name)\n .withFileExtensions(fileExtensions)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultApprovedColorDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ApprovedColorDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultContentPickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ContentPickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultDropdownDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DropdownDataTypeBuilder()\n .withName(name)\n .build();\n return await this.save(dataType);\n }\n\n async createDefaultLabelDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new LabelDataTypeBuilder()\n .withName(name)\n .build();\n return await this.save(dataType);\n }\n\n async createDefaultMediaPickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MediaPickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async doesMediaPickerHaveMinAndMaxAmount(dataTypeName: string, min: number, max: number) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'validationLimit');\n return valueData?.value.max === max && valueData?.value.min === min;\n }\n\n async doesDataTypeHaveCrops(dataTypeName: string, cropLabel: string, cropAlias: string, cropWidth: number, cropHeight: number) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'crops');\n return valueData?.value.find(item => item.label === cropLabel && item.alias === cropAlias && item.width === cropWidth && item.height === cropHeight);\n }\n\n async doesRTEHaveDimensions(dataTypeName: string, width: number, height: number) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'dimensions');\n return valueData?.value.width === width && valueData?.value.height === height;\n }\n\n async doesTiptapExtensionsItemsMatchCount(tiptapName: string, count: number) {\n const tiptapData = await this.getByName(tiptapName);\n const extensionsValue = tiptapData.values.find(value => value.alias === 'extensions');\n return extensionsValue?.value.length === count;\n }\n\n async doesTiptapExtensionsHaveItems(tiptapName: string, items: string[]) {\n const tiptapData = await this.getByName(tiptapName);\n const extensionsValue = tiptapData.values.find(value => value.alias === 'extensions');\n if (!extensionsValue || extensionsValue.value.length === 0) {\n return false;\n }\n return items.every(item => extensionsValue.value.includes(item));\n }\n\n async doesTiptapToolbarHaveItems(tiptapName: string, items) {\n const tiptapData = await this.getByName(tiptapName);\n const toolbarValue = tiptapData.values.find(value => value.alias === 'toolbar');\n if (!toolbarValue || toolbarValue.value.length === 0) {\n return false;\n }\n return JSON.stringify(toolbarValue.value) === JSON.stringify(items);\n }\n\n async doesRTEContainBlocks(dataTypeName: string, elementTypeIds: string[]) {\n const dataTypeData = await this.getByName(dataTypeName);\n const blocksValue = dataTypeData.values.find(value => value.alias === 'blocks');\n if (!blocksValue || blocksValue.value.length === 0) {\n return false;\n }\n const contentElementTypeKeys = blocksValue.value.map(block => block.contentElementTypeKey);\n return elementTypeIds.every(id => contentElementTypeKeys.includes(id));\n }\n\n async createDefaultImageCropperDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new ImageCropperDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async doesListViewHaveProperty(dataTypeName: string, header: string, alias: string, isSystem: any = true) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'includeProperties');\n if (!valueData || valueData.value.length === 0) {\n return false;\n }\n return valueData?.value.find(item => item.header === header && item.alias === alias && item.isSystem === isSystem);\n }\n\n async doesListViewHaveLayout(dataTypeName: string, name: string, icon: string, collectionView: string) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'layouts');\n if (!valueData || valueData.value.length === 0) {\n return false;\n }\n return valueData?.value.find(item => item.name === name && item.icon === icon && item.collectionView === collectionView);\n }\n\n async createDefaultMultiUrlPickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new MultiUrlPickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultNumericDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new NumericDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultTagsDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TagsDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createDefaultTrueFalseDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TrueFalseDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async createBlockListDataTypeWithInlineEditingModeAndABlock(blockListName: string, contentElementTypeId: string, inlineEditing: boolean = true) {\n await this.ensureNameNotExists(blockListName);\n \n const blockList = new BlockListDataTypeBuilder()\n .withName(blockListName)\n .withInlineEditingAsDefault(inlineEditing)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .done()\n .build();\n\n return await this.save(blockList);\n }\n\n async createBlockGridWithABlockWithInlineEditingMode(blockGridName: string, contentElementTypeId: string, inlineEditing: boolean = true) {\n await this.ensureNameNotExists(blockGridName);\n\n const blockGrid = new BlockGridDataTypeBuilder()\n .withName(blockGridName)\n .addBlock()\n .withContentElementTypeKey(contentElementTypeId)\n .withInlineEditing(inlineEditing)\n .withAllowAtRoot(true)\n .withAllowInAreas(true)\n .done()\n .build();\n\n return await this.save(blockGrid);\n }\n\n async createTiptapDataTypeWithWordCountStatusbar(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addExtension()\n .withWordCount(true)\n .done()\n .addStatusbar()\n .withWordCount(true)\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createTiptapDataTypeWithElementPathStatusbar(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addStatusbar()\n .withElementPath(true)\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createTiptapDataTypeWithStyleSelect(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new TiptapDataTypeBuilder()\n .withName(name)\n .addToolbarRow()\n .addToolbarGroup()\n .withStyleSelect(true)\n .done()\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createMultiNodeTreePickerDataTypeWithAllowedTypes(name: string, allowedTypeIds: string, startNodeType: string = 'content') {\n await this.ensureNameNotExists(name);\n\n const dataType = new MultiNodeTreePickerDataTypeBuilder()\n .withName(name)\n .withFilterIds(allowedTypeIds)\n .addStartNode()\n .withType(startNodeType)\n .done()\n .build();\n \n return await this.save(dataType);\n }\n\n async createDefaultDateTimeWithTimeZonePickerDataType(name: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new DateTimeWithTimeZonePickerDataTypeBuilder()\n .withName(name)\n .build();\n\n return await this.save(dataType);\n }\n\n async doesDateTimeWithTimeZoneHaveMode(dataTypeName: string, mode: string) {\n const dataTypeData = await this.getByName(dataTypeName);\n const valueData = dataTypeData.values.find(item => item.alias === 'timeZones');\n return valueData?.value.mode === mode;\n }\n\n async doesDateTimeWithTimeZoneHaveTimeZones(dataTypeName: string, timeZones: string[]) {\n const dataTypeData = await this.getByName(dataTypeName);\n const timeZonesData = dataTypeData.values.find(item => item.alias === 'timeZones');\n if (!timeZonesData || !timeZonesData.value) {\n return false;\n }\n const existingZones = timeZonesData.value.timeZones;\n return timeZones.every(timeZone => existingZones.includes(timeZone));\n }\n \n // Entity Data Picker\n async createEntityDataPickerDataType(name: string, dataSource: string) {\n await this.ensureNameNotExists(name);\n\n const dataType = new EntityDataPickerDataTypeBuilder()\n .withName(name)\n .withDataSource(dataSource)\n .build();\n\n return await this.save(dataType);\n }\n\n async createEntityDataPickerDataTypeWithMinAndMaxValues(name: string, dataSource: string, min: number, max: number) {\n await this.ensureNameNotExists(name);\n\n const dataType = new EntityDataPickerDataTypeBuilder()\n .withName(name)\n .withDataSource(dataSource)\n .withMinValue(min)\n .withMaxValue(max)\n .build();\n\n return await this.save(dataType);\n }\n}"]}
|