UNPKG

@blinkk/editor

Version:

Structured content editor with live previews.

93 lines 3.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeepWalk = void 0; const dataType_1 = require("@blinkk/selective-edit/dist/src/utility/dataType"); class DeepWalk { constructor(config) { this.config = config || {}; } async walk(value, transformValue) { if (dataType_1.DataType.isArray(value)) { return await this.walkArray(value, transformValue); } return await this.walkRecord(value, transformValue); } walkSync(value, transformValue) { if (dataType_1.DataType.isArray(value)) { return this.walkArraySync(value, transformValue); } return this.walkRecordSync(value, transformValue); } async walkArray(originalValue, transformValue) { const newValue = []; for (let value of originalValue) { if (dataType_1.DataType.isObject(value)) { // Clean in depth before testing for walking. value = await this.walkRecord(value, transformValue); } else if (dataType_1.DataType.isArray(value)) { value = await this.walkArray(value, transformValue); } else { value = await transformValue(value); } newValue.push(value); } return newValue; } walkArraySync(originalValue, transformValue) { const newValue = []; for (let value of originalValue) { if (dataType_1.DataType.isObject(value)) { // Clean in depth before testing for walking. value = this.walkRecordSync(value, transformValue); } else if (dataType_1.DataType.isArray(value)) { value = this.walkArraySync(value, transformValue); } else { value = transformValue(value); } newValue.push(value); } return newValue; } async walkRecord(originalValue, transformValue) { const newValue = {}; // eslint-disable-next-line prefer-const for (let [key, value] of Object.entries(originalValue)) { if (dataType_1.DataType.isObject(value)) { // Clean in depth before testing for walking. value = await this.walkRecord(value, transformValue); } else if (dataType_1.DataType.isArray(value)) { value = await this.walkArray(value, transformValue); } else { value = await transformValue(value); } newValue[key] = value; } return newValue; } walkRecordSync(originalValue, transformValue) { const newValue = {}; // eslint-disable-next-line prefer-const for (let [key, value] of Object.entries(originalValue)) { if (dataType_1.DataType.isObject(value)) { // Clean in depth before testing for walking. value = this.walkRecordSync(value, transformValue); } else if (dataType_1.DataType.isArray(value)) { value = this.walkArraySync(value, transformValue); } else { value = transformValue(value); } newValue[key] = value; } return newValue; } } exports.DeepWalk = DeepWalk; //# sourceMappingURL=deepWalk.js.map