UNPKG

@blinkk/editor

Version:

Structured content editor with live previews.

112 lines 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SessionDataStorage = exports.LocalDataStorage = exports.DataStorage = void 0; /** * Utility for working with different storages. * * Built-in 'in-memory' storage fallback. */ class DataStorage { clear() { return this.storageObj.clear(); } get length() { return this.storageObj.length; } get storageObj() { if (!this.storage) { this.storage = new InMemoryStorage(); } return this.storage; } getItem(key) { return this.storageObj.getItem(key); } getItemArray(key) { const value = this.getItem(key); if (!value) { return []; } return JSON.parse(value); } getItemBoolean(key, defaultValue = false) { const value = this.getItem(key); if (value === null) { return defaultValue; } return value === 'true'; } getItemRecord(key) { const value = this.getItem(key); if (!value) { return {}; } return JSON.parse(value); } key(index) { return this.storageObj.key(index); } removeItem(key) { return this.storageObj.removeItem(key); } setItem(key, value) { return this.storageObj.setItem(key, value); } setItemArray(key, value) { return this.storageObj.setItem(key, JSON.stringify(value)); } setItemBoolean(key, value) { return this.storageObj.setItem(key, value ? 'true' : 'false'); } setItemRecord(key, value) { return this.storageObj.setItem(key, JSON.stringify(value)); } } exports.DataStorage = DataStorage; /* istanbul ignore next */ class LocalDataStorage extends DataStorage { get storageObj() { return localStorage; } } exports.LocalDataStorage = LocalDataStorage; /* istanbul ignore next */ class SessionDataStorage extends DataStorage { get storageObj() { return sessionStorage; } } exports.SessionDataStorage = SessionDataStorage; class InMemoryStorage { constructor() { this.obj = {}; } clear() { this.obj = {}; } getItem(index) { if (this.obj[index] !== undefined) { return this.obj[index]; } return null; } key(index) { const keys = Object.keys(this.obj).sort(); if (index < keys.length) { return this.obj[keys[index]]; } return null; } get length() { return Object.keys(this.obj).length; } removeItem(index) { if (this.obj[index] !== undefined) { delete this.obj[index]; } } setItem(index, value) { this.obj[index] = value; } } //# sourceMappingURL=dataStorage.js.map