| OLD | NEW |
| (Empty) |
| 1 | |
| 2 | |
| 3 (function() { | |
| 4 | |
| 5 var SKIP_ID = 'meta'; | |
| 6 var metaData = {}, metaArray = {}; | |
| 7 | |
| 8 Polymer('core-meta', { | |
| 9 | |
| 10 /** | |
| 11 * The type of meta-data. All meta-data with the same type with be | |
| 12 * stored together. | |
| 13 * | |
| 14 * @attribute type | |
| 15 * @type string | |
| 16 * @default 'default' | |
| 17 */ | |
| 18 type: 'default', | |
| 19 | |
| 20 alwaysPrepare: true, | |
| 21 | |
| 22 ready: function() { | |
| 23 this.register(this.id); | |
| 24 }, | |
| 25 | |
| 26 get metaArray() { | |
| 27 var t = this.type; | |
| 28 if (!metaArray[t]) { | |
| 29 metaArray[t] = []; | |
| 30 } | |
| 31 return metaArray[t]; | |
| 32 }, | |
| 33 | |
| 34 get metaData() { | |
| 35 var t = this.type; | |
| 36 if (!metaData[t]) { | |
| 37 metaData[t] = {}; | |
| 38 } | |
| 39 return metaData[t]; | |
| 40 }, | |
| 41 | |
| 42 register: function(id, old) { | |
| 43 if (id && id !== SKIP_ID) { | |
| 44 this.unregister(this, old); | |
| 45 this.metaData[id] = this; | |
| 46 this.metaArray.push(this); | |
| 47 } | |
| 48 }, | |
| 49 | |
| 50 unregister: function(meta, id) { | |
| 51 delete this.metaData[id || meta.id]; | |
| 52 var i = this.metaArray.indexOf(meta); | |
| 53 if (i >= 0) { | |
| 54 this.metaArray.splice(i, 1); | |
| 55 } | |
| 56 }, | |
| 57 | |
| 58 /** | |
| 59 * Returns a list of all meta-data elements with the same type. | |
| 60 * | |
| 61 * @property list | |
| 62 * @type array | |
| 63 * @default [] | |
| 64 */ | |
| 65 get list() { | |
| 66 return this.metaArray; | |
| 67 }, | |
| 68 | |
| 69 /** | |
| 70 * Retrieves meta-data by ID. | |
| 71 * | |
| 72 * @method byId | |
| 73 * @param {String} id The ID of the meta-data to be returned. | |
| 74 * @returns Returns meta-data. | |
| 75 */ | |
| 76 byId: function(id) { | |
| 77 return this.metaData[id]; | |
| 78 } | |
| 79 | |
| 80 }); | |
| 81 | |
| 82 })(); | |
| 83 | |
| OLD | NEW |