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 |