Skip to content

Commit

Permalink
vue3 and lint.
Browse files Browse the repository at this point in the history
  • Loading branch information
tonextone committed Jan 4, 2023
1 parent 86ca440 commit d65dda6
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 6 deletions.
7 changes: 5 additions & 2 deletions wrappers/vue/src/helpers.ts
Expand Up @@ -255,13 +255,16 @@ export function createVueComponent(vNode: VNode, parent: Vue, props: object, dat
function simpleEqual(objectA, objectB) {
const circularReplacer = (function() {
const seen = new WeakSet();

return function(key, value) {
if (typeof value === "object" && value !== null) {
if (typeof value === 'object' && value !== null) {
if (seen.has(value)) return;
seen.add(value);
}

return value;
};
})();
}());

return JSON.stringify(objectA, circularReplacer) === JSON.stringify(objectB, circularReplacer);
}
6 changes: 3 additions & 3 deletions wrappers/vue/test/hotTableHelpers.spec.ts
Expand Up @@ -72,16 +72,16 @@ describe('prepareSettings', () => {
});

it('should handle settings with circular structure', () => {
const circularStructure = { foo: 'bar', myself: {} };

const circularStructure = {foo: 'bar'};
circularStructure.myself = circularStructure;

const propsMock_circular = {
const propsMockCircular = {
readOnly: true,
whatever: circularStructure
};

const preparedSettings = prepareSettings(propsMock_circular, {});
const preparedSettings = prepareSettings(propsMockCircular, {});

expect(preparedSettings.readOnly).toBe(true);
expect(preparedSettings.whatever.foo).toBe('bar');
Expand Down
15 changes: 14 additions & 1 deletion wrappers/vue3/src/helpers.ts
Expand Up @@ -139,5 +139,18 @@ export function prepareSettings(props: HotTableProps, currentSettings?: Handsont
* @returns {boolean} `true` if they're the same, `false` otherwise.
*/
function simpleEqual(objectA, objectB) {
return JSON.stringify(objectA) === JSON.stringify(objectB);
const circularReplacer = (function() {
const seen = new WeakSet();

return function(key, value) {
if (typeof value === 'object' && value !== null) {
if (seen.has(value)) return;
seen.add(value);
}

return value;
};
}());

return JSON.stringify(objectA, circularReplacer) === JSON.stringify(objectB, circularReplacer);
}
17 changes: 17 additions & 0 deletions wrappers/vue3/test/hotTableHelpers.spec.ts
Expand Up @@ -43,4 +43,21 @@ describe('prepareSettings', () => {
expect(preparedSettings.id).toBe(void 0);
expect(preparedSettings.settings).toBe(void 0);
});

it('should handle settings with circular structure', () => {
const circularStructure = { foo: 'bar', myself: {} };

circularStructure.myself = circularStructure;

const propsMockCircular = {
readOnly: true,
whatever: circularStructure
};

const preparedSettings = prepareSettings(propsMockCircular, {});

expect(preparedSettings.readOnly).toBe(true);
expect(preparedSettings.whatever.foo).toBe('bar');
expect(preparedSettings.whatever.myself.foo).toBe('bar');
});
});

0 comments on commit d65dda6

Please sign in to comment.