Sha256: ff4cefdd90fc46186cb7d4286e984380a5f3a3369bd966a8f60352098167d6ef
Contents?: true
Size: 1.71 KB
Versions: 2
Compression:
Stored size: 1.71 KB
Contents
import * as Registry from '../registry'; export interface AttributorOptions { scope?: Registry.Scope; whitelist?: string[]; } export default class Attributor { attrName: string; keyName: string; scope: Registry.Scope; whitelist: string[] | undefined; static keys(node: HTMLElement): string[] { return [].map.call(node.attributes, function(item: Attr) { return item.name; }); } constructor(attrName: string, keyName: string, options: AttributorOptions = {}) { this.attrName = attrName; this.keyName = keyName; let attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE; if (options.scope != null) { // Ignore type bits, force attribute bit this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit; } else { this.scope = Registry.Scope.ATTRIBUTE; } if (options.whitelist != null) this.whitelist = options.whitelist; } add(node: HTMLElement, value: string): boolean { if (!this.canAdd(node, value)) return false; node.setAttribute(this.keyName, value); return true; } canAdd(node: HTMLElement, value: any): boolean { let match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE)); if (match == null) return false; if (this.whitelist == null) return true; if (typeof value === 'string') { return this.whitelist.indexOf(value.replace(/["']/g, '')) > -1; } else { return this.whitelist.indexOf(value) > -1; } } remove(node: HTMLElement): void { node.removeAttribute(this.keyName); } value(node: HTMLElement): string { let value = node.getAttribute(this.keyName); if (this.canAdd(node, value) && value) { return value; } return ''; } }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rails_modular_admin-1.0.0 | app/assets/node_modules/parchment/src/attributor/attributor.ts |
rails_modular_admin-0.4.0 | app/assets/node_modules/parchment/src/attributor/attributor.ts |