{"_id":"vandf","_rev":"91-3c7ee4bef3b522f90af1221878cbf77e","time":{"created":"2024-01-06T23:56:28.020Z","1.0.0":"2024-01-05T13:39:47.938Z","modified":"2024-03-01T12:33:51.073Z","1.0.1":"2024-01-06T23:56:28.186Z","1.0.2":"2024-01-07T02:46:35.832Z","1.0.3":"2024-01-07T06:12:58.396Z","1.0.4":"2024-01-07T06:19:34.054Z","1.0.5":"2024-01-08T09:37:31.208Z","1.0.6":"2024-01-12T14:29:58.581Z","1.0.7":"2024-01-12T15:04:42.289Z","1.1.0":"2024-01-12T23:17:48.667Z","1.1.1":"2024-01-13T00:00:16.776Z","1.1.2":"2024-01-13T00:03:05.585Z","1.1.3":"2024-01-13T00:30:08.757Z","1.1.4":"2024-01-13T00:43:29.979Z","1.2.0":"2024-01-13T02:54:00.370Z","1.2.1":"2024-01-14T02:09:06.457Z","1.2.2":"2024-01-14T02:19:18.127Z","1.2.3":"2024-01-14T03:34:17.697Z","1.2.4":"2024-01-14T11:46:17.373Z","1.2.5":"2024-01-14T12:58:58.413Z","1.2.6":"2024-01-14T13:28:21.365Z","1.2.7":"2024-01-14T13:47:30.134Z","1.2.8":"2024-01-14T13:51:08.827Z","1.2.9":"2024-01-14T14:01:53.536Z","1.2.10":"2024-01-14T14:57:18.044Z","1.2.11":"2024-01-14T15:29:21.045Z","1.2.12":"2024-01-14T15:31:48.007Z","1.2.13":"2024-01-14T15:40:24.519Z","1.2.14":"2024-01-14T15:46:16.451Z","1.2.15":"2024-01-15T07:45:09.316Z","1.2.16":"2024-01-15T08:22:11.557Z","1.2.17":"2024-01-15T15:06:59.605Z","1.2.18":"2024-01-17T11:07:26.773Z","1.2.19":"2024-01-17T11:18:12.060Z","1.2.20":"2024-01-17T11:53:13.760Z","1.2.21":"2024-01-20T07:34:06.658Z","1.2.22":"2024-01-20T07:46:40.744Z","1.2.23":"2024-01-21T02:50:12.013Z","1.2.24":"2024-01-21T11:51:32.065Z","1.2.25":"2024-01-22T11:31:35.153Z","1.2.26":"2024-01-22T12:22:34.588Z","1.2.27":"2024-01-22T13:19:29.290Z","1.2.28":"2024-01-22T13:26:12.888Z","1.2.29":"2024-01-24T12:35:59.796Z","1.2.30":"2024-01-24T13:48:22.969Z","1.2.31":"2024-01-25T13:53:24.671Z","1.2.32":"2024-01-26T13:42:13.815Z","1.2.33":"2024-01-27T07:45:50.928Z","1.2.34":"2024-01-27T10:20:04.874Z","1.2.35":"2024-01-28T10:48:55.523Z","1.2.36":"2024-01-28T11:32:52.355Z","1.3.0":"2024-02-17T00:58:15.390Z","1.3.1":"2024-02-17T01:09:46.742Z","1.3.2":"2024-02-17T02:30:48.606Z","1.3.3":"2024-02-18T03:00:34.056Z","1.3.4":"2024-02-24T08:33:03.183Z","1.3.5":"2024-02-25T04:34:20.895Z","1.3.6":"2024-02-25T05:48:10.717Z","1.3.7":"2024-03-01T12:33:50.643Z"},"name":"vandf","dist-tags":{"latest":"1.3.7"},"versions":{"1.2.20":{"name":"vandf","version":"1.2.20","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.20","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-9+I2YlS2XHsSmZ2naNM2b+EGUUUVJYjYT5B1UKnLVr6IUAW/PGZwrTjrK4TiWS0QfUutMreM9qohtsuGuyDEsQ==","shasum":"19a367808f301c7c198ee591eb32484d1f7b795d","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.20.tgz","fileCount":26,"unpackedSize":169678,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrTBHB5WmzqE7e2bbY4P7V7ybp+HYYl/FARsHcAOHmHgIhAIPZj8eddfDR4k2Wf+hSh9sxARx+ZPl9PfrAyCoTZeJu"}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.20_1705492393612_0.2922943531854707"},"_hasShrinkwrap":false},"1.2.22":{"name":"vandf","version":"1.2.22","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.22","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-OeQMSM0nrGKvAYf7xvrdnDZ2pyMf7EIpoasW+V3Ypl+ISk121GcafD/E70DbzTdge4xF0CNZyVKy5Zg7+nltAA==","shasum":"c3f4bcf42d7f691a40555136691e75ab5a8fd0f8","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.22.tgz","fileCount":28,"unpackedSize":184491,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGABB6FmwSeCBWG81jF7NajWpneqQIJZuDB8ojIfH6pFAiEA3U5lUxENBCDF64HbYZ5ex+fQlrbV4rHrdRsn21i0OVY="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.22_1705736800581_0.19571103036376236"},"_hasShrinkwrap":false},"1.2.23":{"name":"vandf","version":"1.2.23","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.23","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-ZgAnGkmUE5emlhsTsZGq7267WxAoun5OKDrN7SNnMuC//8y0S7Bov2B9R2A4gTWK1+rRBbkehjRQrsVEHfTNZg==","shasum":"17513621a1e107efdf10afe42e5a4f01fa2c489f","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.23.tgz","fileCount":27,"unpackedSize":190640,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjTLsqNwxup5cHw4zFvOoWRLdifpbumXY+X9qQqi+zCAIhANb9L6d1iDhIjdnl05sTtmZMuqYLPiVpKwy3/JWCg1K/"}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.23_1705805411844_0.22424856872157206"},"_hasShrinkwrap":false},"1.2.24":{"name":"vandf","version":"1.2.24","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.24","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-u8++EduxcWz4wB/6AnsrU6qpdJ3WKL/n5d6wCHO0CwgUICowthApVTkgcn8vQzDSYV4m08oEeoAvpnjHWfLD4A==","shasum":"19828ded4d5488b64e4a65577886f69cc148ae8d","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.24.tgz","fileCount":26,"unpackedSize":190096,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiVv7x7H0BLm9dymYQJ7JsU6c4UnIpaskxAEnliyp3oAiEAjlHLBAstZZzN5fyaF8JskWtiE/Q1GIueccPkV0mBQJ0="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.24_1705837891862_0.6146864305078363"},"_hasShrinkwrap":false},"1.2.25":{"name":"vandf","version":"1.2.25","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.25","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-oHSiqjNX6JfX/VmsJNCGMxQM3yzajjxizpm9+EAQtVLrwZeS26jHlDMg8DdW7kwLsnh+VsxYd1+00aVuz88f9g==","shasum":"999ed8afbee6c01e0ab94b91155db8e09ba7941a","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.25.tgz","fileCount":26,"unpackedSize":190095,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIChtqhe597VUDh8RwPjAbSdw4UPO8gsEXpAjhtygbEpNAiApxiZ1wzxrsKB+7ogxPc5DVN0FbuxRYFnvl7ULH6hYeA=="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.25_1705923094971_0.6535731030595657"},"_hasShrinkwrap":false},"1.2.26":{"name":"vandf","version":"1.2.26","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.26","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-YRhV213j5fsngz2gAn1BTABWpBWkmmjFpky+hnsWuIuZvdZklzi0xGpSNzv+gfoieC4wzLKEzjwRqUNmCasmqQ==","shasum":"6614de873ecfb103044a6914104378e5392edb43","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.26.tgz","fileCount":26,"unpackedSize":190306,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaxc0sArmkuceLmDlVDCLeA16H/4cr1uoRpeysGNJkhQIgUZfyHA/ipKij/zRuXg40GluWzk0VqXpqT58nRdjnnOI="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.26_1705926154371_0.023439982225740952"},"_hasShrinkwrap":false},"1.2.27":{"name":"vandf","version":"1.2.27","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.27","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-Uk0XZ1L9AFh4AzoHjK9xaHMHkr3w+sjAV1eUPBh6Cqny0NfB46ftWg2+UmaR2FM8KkaBWNNbgfcqiqjPzZB6TQ==","shasum":"095c24a79d5d8970ccaa37242e8e300ec762dd35","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.27.tgz","fileCount":26,"unpackedSize":190410,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHg9s/NOuCssYZZD9ErBSrA47y3iLko4Mps44xxk0q/SAiEApWQwwKEKGWTR7Y/ajkDCZo36e18kVNZ4Q7IKX5LdZVA="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.27_1705929569140_0.9898343173591453"},"_hasShrinkwrap":false},"1.2.28":{"name":"vandf","version":"1.2.28","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.28","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-0cQVDnLzB00yAI2tSCcBlIgBJBi8L5lAuBL6ffCNSo3sw2g7ONBDGWLhlJEaVOqn2F30B+k8vVXoxH5C6X5EMg==","shasum":"1abe995bcac95e02f7716fff1493b7a61253c4c2","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.28.tgz","fileCount":26,"unpackedSize":190493,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDolCg+N9eeYk8xLLX8hKUYy7HXXK6KixiMcwu7pcHC3gIhAKe2J6DOvTwA8vEFgGnnZXLV05k/rafj2MN7j2JMColk"}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.28_1705929972712_0.2432560352198676"},"_hasShrinkwrap":false},"1.2.29":{"name":"vandf","version":"1.2.29","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.29","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-6Nmt9JMRPJNtverFKJSZXpMcA+kZi6KyfiINxQLfyfeeV0eXapo2KUV1vvscMXeLITRKVWG43dHUAU8xsAPvow==","shasum":"175cdfb60214980224ed9215e19c8b93fbb65428","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.29.tgz","fileCount":26,"unpackedSize":190471,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCft/lyzULn72268ZrewtGwsJlX7OyqkSBw729jJecJjAIgTBi6F8ophR47r4FwQNv8yFYzvF27KrY4zW9pg80Gq4A="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.29_1706099759588_0.7386972617848984"},"_hasShrinkwrap":false},"1.2.30":{"name":"vandf","version":"1.2.30","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.30","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-JDAwKjifP9+1RxdQIWedbGpOoDR3zTwXG5WDGG6kETFn28ilyrH7Uo1rRjaYsLsjcgfjD9K0o2xAVR21gb9Eew==","shasum":"d2cfaa677a2ce2f3dbc63cdf2a45478c45a55d52","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.30.tgz","fileCount":26,"unpackedSize":189149,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVXy4LdJFthmzIA2SW5Gwt+NbEfUjO9mSg5+Dc9jssHgIgKRRP/7AJpBZLtsHuNx0aJo4Gmj48Qe5LwnMpb9HdrmE="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.30_1706104102810_0.517885149416041"},"_hasShrinkwrap":false},"1.2.31":{"name":"vandf","version":"1.2.31","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.31","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-Ln76k7ysRIF92aLA+qUpnj/px6eBxGGmU89Ofi82kmDlLU2Z0FhUjVhax+wWnR5Hk8bGwplgUSoxGtm6gu6H1g==","shasum":"408db0a163eaa66b30dfbf4e475699c624295b02","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.31.tgz","fileCount":29,"unpackedSize":198250,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8cnuWYitPen0fpyjnBVxk1X11ON+ZTjEj0jTNfJClsAiEAqLmPDmKDN6ieKtlJ0BV1K4nYGWc9o0RXuF4qBqMhrPo="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.31_1706190804517_0.04441489536881282"},"_hasShrinkwrap":false},"1.2.32":{"name":"vandf","version":"1.2.32","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.32","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-JRUT48fBrEDV7q7jF+ai9lTibzilrtgxkLiT3zu5ZT1pZfV8/zPNCo/cs/4PPJnwH3PszWV/doTLGWC4cbRrOw==","shasum":"f6ba3f8a394d419c183244044e0871c1325bb14b","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.32.tgz","fileCount":29,"unpackedSize":198594,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHvhqt/IBscDxbO1PDvD5vNNslLwPBjtgz/HiymPUOLqAiEA6S2dC7vBSpntFM1nLcb9BnqDfEjCpJOIwd6ECdg4lkw="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.32_1706276533626_0.7685976056115791"},"_hasShrinkwrap":false},"1.2.33":{"name":"vandf","version":"1.2.33","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.33","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-E+J6I7wQ/TK31unbr43INJ6XuCfWDFNbWKWSOl83UF06tRVtFL9CpkcaTlJAT0N5Aclab/GP5prG41pJf26XdQ==","shasum":"561df813147f20f9ee7f3de7f10dd651c686a0a3","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.33.tgz","fileCount":29,"unpackedSize":202329,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA8rbu1LkpX0PUw5ekE0iMEwdJF4JHMTdQBxIm/p1kdyAiEAqkVm6G8pgqBZU8ajIYqQAwK8oB/34ANy74+zRRXszdo="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.33_1706341550726_0.4108215329344478"},"_hasShrinkwrap":false},"1.2.34":{"name":"vandf","version":"1.2.34","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.34","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-f0uDwaoKq5BEpijM/LMKGkjzase11pS82xyCAbAEsjWSHHNK3kfC92oIVTzRp1LTrWZKiMa1epnQDZ0tiu6Esw==","shasum":"8dff3637e97b2b5a867e0975a58e4d273a4c7d50","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.34.tgz","fileCount":29,"unpackedSize":202540,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRsoToa8KKVnZSO15Y8gGRKPUa0AGeXW2vFNMWV2D+XAiAorr1aSiW0v1SVdnBXy9iMX70D3T4qcKHEVw5De/s+8g=="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.34_1706350804684_0.36126508255645584"},"_hasShrinkwrap":false},"1.2.35":{"name":"vandf","version":"1.2.35","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.35","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-n4Sb0xt/eE62bUTkWG5lViuouf6cDQsD3LyXuADVTJ7uTI2Axz3CxFTHoOYl8G72x5Yt9tMxPWhDLZd6mOSVTg==","shasum":"36a7e30d509341de5018d8f20f7137b1986d2579","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.35.tgz","fileCount":29,"unpackedSize":203007,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC0xGBf6iBICFQ0nbq04MfUcrHWQbPdDO0QtF33KjFUFAiA6oiNwYVkeMF5MysdBcnFs92OgUETEqe4BlGUU3YF8eA=="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.35_1706438935330_0.6425960423503512"},"_hasShrinkwrap":false},"1.2.36":{"name":"vandf","version":"1.2.36","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.2.36","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-UABBiMvC8/lJZUyoQ6AiWHgYLti3S8uMEEFSLA8xZDhtd2xPg3IVTouxGSH9NYe10qjqnk1WnFN8h/Awn0waBg==","shasum":"6ce223097c91620baf96200648629179ebb3de06","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.2.36.tgz","fileCount":29,"unpackedSize":202459,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFn/37QyLLkCy1vzU6XmrsBRHOS6Jyzcdgf4nQtiY5oQIhALc1l61vJBNs/ZYOzNThYu0H2F3owPkkq2BOotK9MPa4"}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.2.36_1706441572175_0.7744656800909777"},"_hasShrinkwrap":false},"1.3.0":{"name":"vandf","version":"1.3.0","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11","pixi.js":"^7.4.0"},"_id":"vandf@1.3.0","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-rULVIyBqNCLaLnPNA+Nel5OA/NSIsRbu8YKLuerjWYphT0X/aGc0tFHwInJuFtRgDe9H2obNDIQd+Sy/uh6dFQ==","shasum":"6f39d4b17524c68a39a03847fabea86ae591a366","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.0.tgz","fileCount":31,"unpackedSize":207397,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpnz6u5UyIe53Q1GDYlszrTO7G4ZiIsQTD5p3CA0PCpQIgY9pgGrJ8k9kueM37Vk+yQVQ21KkUeiFvGErDYZJXkaQ="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.0_1708131495232_0.30117767232639303"},"_hasShrinkwrap":false},"1.3.1":{"name":"vandf","version":"1.3.1","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{"fastdom":"^1.0.11"},"_id":"vandf@1.3.1","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-TkLu7KlUC67xI3UituvKS0/JqmGab5+FwTBM1xKXPeNQodq68hykWg22lhxR1QKJANv6WT32NCBkC+TCbtzLDg==","shasum":"c7e8c9388c8e462c9db7ef183dd883eb116e6014","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.1.tgz","fileCount":30,"unpackedSize":214312,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzzo8xRVuNF9ZKbe/9y1fK5TPgy5+eHQxDEj+43s3NigIhAIw4Pbr2Cwi8srYIR4VD3UPZ3qftVOFK+IV54dwo6GoG"}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.1_1708132186582_0.6809325885954789"},"_hasShrinkwrap":false},"1.3.2":{"name":"vandf","version":"1.3.2","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{"d3":"^7.8.5","fastdom":"^1.0.11"},"_id":"vandf@1.3.2","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-+ByIUGare8th7b3e8ZBT1SZ4qLWvyEfuej325gUcdvQUTJIi9pFXFYCbNV6aAo5IS6g+HRO1Z8ApKhVrpbiXQg==","shasum":"ac4459a88dc6455e0cc33341f47ed09c4790fded","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.2.tgz","fileCount":30,"unpackedSize":214124,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNqiMpf4JOo93trYQ74og+ld6uW0x8GCeWp1Cl+hIo7wIhAPGDhZtdgFHm4Xfp4gvmHTAFaRW3dzG5hq7Jb4d6qVp+"}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.2_1708137048434_0.2734045469743267"},"_hasShrinkwrap":false},"1.3.3":{"name":"vandf","version":"1.3.3","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{"d3":"^7.8.5","fastdom":"^1.0.11"},"_id":"vandf@1.3.3","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-WAq6vh3zo+3YAWPig1wyEnZ8BqzamdGP1a68Ydx/J29xeEmBIRfu+OVJkYBqq/N3G8jsgc7JIFd3aGdSjkbQUA==","shasum":"ad0bdc081272cb1585b980c5b4af3e4131b8ee75","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.3.tgz","fileCount":30,"unpackedSize":215951,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID4+eKh/oJKaxwQc8Beo/41A+WOtxTDufJdeXpU5KMs5AiAr2wjiHdGMm+VuIDVdXPT1PXtpdWc9LbuiCXr/y/UrUw=="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.3_1708225233892_0.9976429804443998"},"_hasShrinkwrap":false},"1.3.4":{"name":"vandf","version":"1.3.4","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{"d3":"^7.8.5","fastdom":"^1.0.11"},"_id":"vandf@1.3.4","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-ba/w6jWWQZcLMX4a94xsEaJXOn383hif7AnlDQTOeaMzvHAuiDDaPaa8ysUSucP/dYc9YP3e/L57IusKoBmPow==","shasum":"94b64882af057c8b5707d5e22fb4d58bb7976a79","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.4.tgz","fileCount":30,"unpackedSize":222490,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFAU1pIb0c7ZlZaNWkVxoxyHHWCm1Xr1OMAKs86nEaC7AiAI7h2NTHLTAq+opf7dGXUKqtNOQxJWG3KdYL2BUrH0pw=="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.4_1708763582844_0.018855140703994078"},"_hasShrinkwrap":false},"1.3.5":{"name":"vandf","version":"1.3.5","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{},"_id":"vandf@1.3.5","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-72yhAM4dXRQ/g5mTn+yxSxq+XptX9dnKgI8R97Q79aS+w+sJ2OVSdh7/93GB1JGvQsmRymj1KD4RqVmQqgEfeg==","shasum":"f924074986295d4b8b7e636e28a980e101c802d0","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.5.tgz","fileCount":30,"unpackedSize":210236,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGMTigCRc2CTxTJuSUVQQpYcdajdd3Vqrtk37xabu8ciAiEAyl/sXDYUm8lUFqJMladNamBydiC1gNjwRIAQAlXTp/c="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.5_1708835660727_0.8950893796182944"},"_hasShrinkwrap":false},"1.3.6":{"name":"vandf","version":"1.3.6","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{},"_id":"vandf@1.3.6","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-Vtkg0j3oKVlpsmHUNZ2XQTOrAzyG8NjEAnyfMVNznNzYAwxa7s64Vm97thAzNLNt7+ccHyUOKn1olAX8JyQtsQ==","shasum":"2a9027be32d3f7e318bb98d5953a99b112b3aba3","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.6.tgz","fileCount":30,"unpackedSize":212396,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFrVukNhdHxP5ybK8S4KF6C5T8AWXXrf3bT1lOXEJzKAIgXtMktuW7dAVO/icH/FDo0q6T/h8rx1SN/V0qRXiM86w="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.6_1708840090545_0.7188690662169914"},"_hasShrinkwrap":false},"1.3.7":{"name":"vandf","version":"1.3.7","description":"Open source vanilla JavaScript data-driven framework","type":"module","main":"index.js","typings":"vandf.d.ts","author":{"name":"XY JIN","email":"abbasky@qq.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","publish":"npm publish --registry=https://registry.npmjs.org/"},"devDependencies":{"vite":"^5"},"dependencies":{},"_id":"vandf@1.3.7","gitHead":"b1c62e9eb1481c23de1661921531ccf89bfd4db0","bugs":{"url":"https://github.com/abbasky/vandf/issues"},"homepage":"https://github.com/abbasky/vandf#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-PhixzjQRibKyK/9eE0F3WrVxsvdB29X4OmprwyBQ85H7BNm3KJsd+AXTWBKpUqGrf0abBRug6X0ke8r6guoetA==","shasum":"bc83fc20a0a3fd0fcbda1bcc5e9ad6605336c9b2","tarball":"https://registry.npmjs.org/vandf/-/vandf-1.3.7.tgz","fileCount":30,"unpackedSize":213587,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXhxsBVaVlQR94rYIhpuMJXUzTt1l6ZvrlZ7eWnIhbTAiEAw7CMHc5tBfF2H424MuP4aG6TcYuK7jSkS2f3R+oc9Js="}]},"_npmUser":{"name":"abbasky","email":"abbasky@qq.com"},"directories":{},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vandf_1.3.7_1709296430442_0.8776660490672539"},"_hasShrinkwrap":false}},"maintainers":[{"name":"abbasky","email":"abbasky@qq.com"}],"description":"Open source vanilla JavaScript data-driven framework","homepage":"https://github.com/abbasky/vandf#readme","repository":{"type":"git","url":"git+https://github.com/abbasky/vandf.git"},"author":{"name":"XY JIN","email":"abbasky@qq.com"},"bugs":{"url":"https://github.com/abbasky/vandf/issues"},"license":"MIT","readme":"## Vandf\r\n\r\n\r\n\r\n### 1.总体功能描述\r\n\r\n​\t采用主流的javascript语言进行开发，兼容chorme、firefox等主流浏览器。\r\n\r\n​\tVandf框架(The vanilla javascript data framework)，由原来的D3C开关框架演变而来，采用数据驱动的底层架构，数据可以自由的将组件渲染为浏览器DOM元素构成的界面。该框架对数据没有任何约束，即不规定数据的特定结构。同一组件可以用不同结构的数据进行驱动。\r\n\r\n​\t组件定义方式简单便捷，符合直觉，成型组件的任意组成部分仍可根据使用者的需要方便的修改。\r\n\r\n该框架可以方便的与纯css框架配合构建现代化的响应式组件，例如可以和tailwind css框架和bulma css框架进行配合。\r\n\r\n​\t该组件也可以与d3.js数据驱动的图形库进行很好的配合，可以有效降低d3.js使用的难度，使得更容易构建出用户需要的图表应用。\r\n\r\n​\t通过该框架定义的组件，可以通过任意组合来轻松的实现整个用户界面的构建。\r\n\r\nVandf框架具有如下特点：\r\n\r\n- 易学易用\r\n\r\n​\t将HMTL的DOM模型的复杂性隔离起来，开发者不需要面对复杂的DOM元素操作，只需要关心业务数据本身和视图展示的数据需求，心智负担大大减小。\r\n\r\n- 性能出色\r\n\r\n​\t框架只更新数据变更的DOM元素，完全响应式的渲染系统，几乎不需要手动优化，框架未采用虚拟DOM架构，没有虚拟DOM 差异比对方面的性能消耗，可以达到非常高的渲染效率。\r\n\r\n- 灵活多变\r\n\r\n  框架可以在数据构建模型时按需配置界面的显示样式生成，也可以在DOM元素创建和渲染过程中，根据不同数据和状态构建外观，提供了灵活多变的自由度。\r\n\r\n- 精细操控\r\n  组件中的任意部件都可以进行精细控制，在保证组件的独立完整性的基础上，仍提供了组件各个部分精细操作的通道。\r\n\r\n### 2.认识Vandf\r\n\r\n​\tVandf是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建，并提供了一套声明式的、组件化的数据驱动的编程模型，帮助你高效地开发用户界面。无论是简单还是复杂的界面，Vandf 都可以胜任。示例展示了Vandf申明式组件定义、响应式视图模型、用户数据模型三个核心功能。\r\n\r\n- 声明式组件定义\r\n\r\n​\tVandf组件定义采用了申明式定义方式，通过定义标签tag，样式style，属性attrs，类classes等，使得我们可以简明地描述最终输出的 HTML层次关系和展现的样式。组件定义时可以绑定视图模型和数据模型，还可以通过data(items)方法初始化数据，下例中提供了三个数据，Vandf会自动创建3个计数器按钮。如下图所示：\r\n\r\n![image-20240103222810499](C:\\Users\\Administrator\\AppData\\Roaming\\Typora\\typora-user-images\\image-20240103222810499.png)\r\n\r\n- 组件定义\r\n\r\n```javascript\r\nlet app = Van.new('app')\r\n    \r\nVan.new('counter', app.id)\r\n    .tag('button')\r\n    .view(CounterView)\r\n    .model(CounterModel)\r\n    .supply([0,10,20])\r\n\r\napp.attach(document.querySelector('#app'));\r\n```\r\n\r\n- 用户数据模型\r\n\r\n\r\n​\t用户数据模型可以通过构造函数获取组件定义阶段的初始化数据，也可以通过data(parentDatum)方法获取父组件的数据，data()方法返回一个数组，Vandf会构建与数组个数一样多的组件单元。当未定义数据模型或data()方法时，Vandf会自动将父组件的数据（datum）原封不动的向子组件传递。\r\n\r\n``````javascript\r\nclass CounterModel {\r\n    constructor(data){\r\n        this.count = data;\r\n    }\r\n\r\n    supply () {return this.count}\r\n\r\n    add(index){ this.count[index] = this.count[index] + 1 }\r\n}\r\n``````\r\n\r\n- 视图模型\r\n\r\n​\tVandf视图模型可以应以组件创建（create）、渲染（render）、释放（destroy）、状态（states）方法，可以非常容易地构建响应式组件。视图模型可以在创建（create）阶段注册事件进行交互，在渲染（render）阶段根据数据和状态变化自动更新组件。可以通过states接收父级组件的状态，也可以向下传递本组件的状态变化。\r\n\r\n```javascript\r\nclass CounterView {\r\n    create (node,model) {\r\n        node.on('click',(e)=>{\r\n            model.add(i);\r\n            node.update()\r\n        },'native')\r\n    }\r\n    render (node) {\r\n        node.text(d =>`The count is : ${d}`)\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n### 3.组件定义\r\n\r\n​\t通过外部配置实现对组件结构、样式、属性、数据等的初始值进行定义，并可以通过绑定组件视图、用户数据模型，方便的实现数据驱动的响应式组件的构建。\r\n\r\n```javascript\r\nVan.new(\"label\")\r\n        .tag(\"button\")\r\n        .classes(\"button-label no-selected\")\r\n        .styles({\r\n            background: 'white',\r\n            color: 'red',\r\n            'margin-left': '5px'\r\n        })\r\n        .attrs({value:\"1234\"})\r\n        .html(\"<b>Label</b>\")\r\n```\r\n\r\n#### 组件属性\r\n\r\n| 属性名称 | 属性功能         | 说明                                 |\r\n| -------- | ---------------- | ------------------------------------ |\r\n| kids     | 子组件数组       |                                      |\r\n| name     | 组件名称         |                                      |\r\n| id       | 组件id           | 组件id实质是一个包含名称的路径字符串 |\r\n| views    | 所有注册的视图类 |                                      |\r\n\r\n#### 组件方法\r\n\r\n| 组件方法                            | 方法功能                                                     | 说明                                         |\r\n| ----------------------------------- | ------------------------------------------------------------ | -------------------------------------------- |\r\n| after (name)                        | 在本组件后插入指定名称的兄弟组件                             | 用于修改第三方组件                           |\r\n| append (kid)                        | 添加子组件kid                                                | kid是Van的实例                               |\r\n| attach (element)                    | 将组件挂载到HTML Element下                                   | 组织挂载之后才可以实例化。                   |\r\n| before (name)                       | 在本组件前插入指定名称的兄弟组件                             | 用于修改第三方组件                           |\r\n| config(initConfig)                  | 设定配置信息，initConfig是Object类型。                       | 用于配置一些初始化信息。                     |\r\n| get (name)                          | 按名称获取子组件                                             |                                              |\r\n| index(idString)                     | 获取组件id为idString的子组件的索引                           |                                              |\r\n| insert (kid, index)                 | 在index位置插入子组件kid                                     | kid是Van的实例                               |\r\n| kid(name)                           | 创建并添加名称为name的子组件                                 |                                              |\r\n| model (model)                       | 设置或返回模型，无model参数时，返回模型。                    | 模型始终只有一个实例。参见model模型章节。    |\r\n| parent (name)                       | 获取指定名称为name的父组件                                   | 未传name参数时，获得上一层父组件             |\r\n| tag (tagName)                       | 指定Html的tag名称，默认‘div’，支持svg各类tag名称。           | 例： ‘button’，‘span’，‘p’，‘input’，‘svg'等 |\r\n| attrs(config)                       | 设置属性，参数config为对象                                   | 例：comp.attrs（{'name':'China'}）           |\r\n| classes(names)                      | 设置类型名称                                                 | 例：comp.classes(\"label left-bar\")           |\r\n| html (text)                         | 设置html内容                                                 | 例：comp.html(<b>Label</b>)                  |\r\n| select(name)                        | 按名称name选择子组件，不限制选择层次。                       | 例：comp.select(“kidName”)                   |\r\n| repeat (repeatComponent: Van): Van; | 重用repeatComponent组件，渲染位置为本组件所占位置。其中repeatComponent组件已在其它位置定义。 | 例：comp.repeat(comp)                        |\r\n| styles(config)                      | 设置样式，参数config为对象                                   | 例：comp.styles（{'color':'red'}）           |\r\n| supply(initdata)                    | 用于初始化组件数据或传递外部数据提供方法                     | intdata传递给model的构造函数                 |\r\n| view (view)                         | 设置view类，view可以设置多个，对于第三方组件的使用和扩展特别有用。 | 例：comp.view(class CompView {})             |\r\n\r\n\r\n\r\n### 4.组件封装\r\n\r\n​\t通过配置方式定义一个带标签的按钮，表达式清晰明确，label和button在html中的排列顺序就是定义的顺序，非常符合直觉的声明式。也可以如下方式对组件进行封装以便于重用。\r\n\r\n```javascript\r\nclass MyButton extends Van {\r\n    constructor(id) {\r\n        super(id)\r\n\r\n        this.kid('label').tag('span').html('Button')\r\n        this.kid('button').tag('button')\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n### 5.组件视图模型\r\n\r\n​\t组件视图模型用于注册响应事件、渲染组件、管理状态。组件视图允许多个视图组件渲染阶段也可以对内容、样式进行设置，响应数据和状态的变化。组件渲染阶段还可以通过node读取到元素位置、焦点、大小等元素的属性。\r\n\r\n| 视图模型支持的方法                   | 方法的功能                                           | 说明                                         |\r\n| ------------------------------------ | ---------------------------------------------------- | -------------------------------------------- |\r\n| construct(model, initConfig)         | 视图模型的构造函数，可以传入数据模型，和初始化状态。 |                                              |\r\n| create(node, model, states, config)  | 主要用于注册事件，响应事件，对数据模型进行操作。     | 创建组件时调用create方法，该方法仅调用1次。  |\r\n| destroy(node, model, states, config) | 组件移除前释放资源，一般可以用于移除事件。           | 组件移除前调用destroy方法，该方法仅调用1次。 |\r\n| render(node, model, states, config)  | 组件渲染时对样式、类、属性、文本等进行计算，配置等。 | 组件创建后以及每次更新时均调用该方法。       |\r\n\r\n视图模型中的node是Node的实例，不要与HTML中的Node相混淆。Node的属性和API方法如下：\r\n\r\n| Node的属性名称 | Node属性功能                                     | 说明 |\r\n| -------------- | ------------------------------------------------ | ---- |\r\n| componentId    | 组件id                                           |      |\r\n| datum          | 组件数据                                         |      |\r\n| document       | 获取html dom的document                           |      |\r\n| first          | 获取第一个兄弟Node实例                           |      |\r\n| model          | 获取model的实例                                  |      |\r\n| name           | 获取组件名称                                     |      |\r\n| holder         | 获取有兄弟的父节点实例                           |      |\r\n| id             | 获取Node实例的id                                 |      |\r\n| index          | 获取组件在兄弟Node实例中的索引。                 |      |\r\n| last           | 获取最后一个兄弟Node实例                         |      |\r\n| proxy          | 获取Node实例的事件代理                           |      |\r\n| serial         | 获取holder的索引，即获取具有兄弟的父组件的索引。 |      |\r\n| sibline        | 获取本实例和兄弟实例的容器                       |      |\r\n| tag            | 获取element的tag名称。                           |      |\r\n\r\n| Node的方法                                | Node方法的功能                                               | 说明               |\r\n| ----------------------------------------- | ------------------------------------------------------------ | ------------------ |\r\n| addEventListener(type, listener, options) | 注册document的事件监听器                                     |                    |\r\n| attr(key, updateValue)                    | 设置element的属性，updateValue可以是值或函数。               |                    |\r\n| blur()                                    | 设置失去焦点状态，需要调用node.update()后生效。              |                    |\r\n| call(function)                            | 调用方法                                                     |                    |\r\n| classed(name, updateValue)                | 设置element的类，value可以是值（true/false）或函数。         |                    |\r\n| emit(eventType, data)                     | 派发事件，data为通过事件携带的数据，可以是任意类型           |                    |\r\n| empty()                                   | 判断node中的element是否为空。                                |                    |\r\n| html(updateValue)                         | 设置element的html内容，value可以是值或函数。                 |                    |\r\n| on(type, listener, options)               | 注册node事件，其中options为true或非空时，则注册为原生事件监听，既dom的传统事件。 | 详见事件部分的内容 |\r\n| parent(name)                              | 获取指定名称为name的父Node，未传name时，获得上一层父Node     |                    |\r\n| style(key, updateValue, priority)         | 设置或获取element的html样式，updateValue可以是值或函数。     |                    |\r\n| text(updateValue)                         | 设置或获取element的文本内容，value可以是值或函数。           |                    |\r\n| toggle(name)                              | 触发设置或取消element指定的类                                |                    |\r\n| update()                                  | 刷新组件，数据或状态变更后调用该函数，重新渲染组件。         |                    |\r\n\r\n注：updateValue的函数形式为：function(datum, index, number)，datum为数据，index为数据datum索引，number为数据的总数量\r\n\r\nattr、blur、focus、classed、style、text、html方法设置数据或状态后，均需要显示调用node.update()才能更新视图。\r\n\r\n\r\n\r\n### 6.组件数据模型\r\n\r\n​\t组件数据模型用于提供、传递、转换、操作数据等工作，数据模型使用非常自由宽松，对用户约束极少，但与view模型配合，能够轻松的完成各种复杂的任务。\r\n\r\n| 数据模型的方法                          | 方法的功能                                                   | 说明 |\r\n| --------------------------------------- | ------------------------------------------------------------ | ---- |\r\n| constructor(initdata, config)           | 构造函数，initdata：组件初始化数据，config：组件合并后的配置信息。 |      |\r\n| supply(parentDatum,parentStates,config) | 提供、传递、转换数据，parentDatum是父组件实例的数据,parentStates为父组件的状态，也可认为是共享状态。返回数据可以是任意数据，当返回非空数组时，则按照数组长度创建组件个数，空数组则不创建组件，其余情况则创建1个组件。 |      |\r\n\r\n\r\n\r\n### 7.重复组件\r\n\r\n​\t通过组件的repeat可以非常方便的定义反复重复的多层结构，根据数据的层次自动渲染出dom的层次结构。例如可以方便的渲染如下的结构：\r\n\r\n![image-20240103221937619](C:\\Users\\Administrator\\AppData\\Roaming\\Typora\\typora-user-images\\image-20240103221937619.png)\r\n\r\n#### 1）定义组件层次\r\n\r\n```javascript\r\nlet app = Van.new('app')\r\n\r\nlet ul = app.kid('ul').tag('ul').model(UlModel)\r\nlet li = ul.kid('li').tag('li')\r\nli.kid('text').tag('span').view(TextView)\r\nli.kid('repeat')\r\n    .repeat(ul)\r\n    .model(RepeatModel)\r\n\r\napp.attach(document.querySelector('#app'))\r\n```\r\n\r\n\r\n\r\n#### 2)视图模型和数据模型\r\n\r\n```javascript\r\nclass UlModel {\r\n    supply(){ return data }\r\n}\r\n\r\nclass TextView {\r\n    render (node, d) {\r\n        node.text(d.name)\r\n    }\r\n}\r\n\r\nclass RepeatModel {\r\n    supply(d){\r\n        return d?.children ? d.children : []\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n#### 3)准备数据\r\n\r\n```javascript\r\nconst data = [\r\n    {\r\n        name:\"中国\", \r\n        children:[\r\n            {\r\n                name:\"江苏\",\r\n                children:[\r\n                    {\r\n                        name:\"南京\",\r\n                        children:[\r\n                            {name:\"句容\"},\r\n                            {name:\"丹阳\"},\r\n                        ]\r\n                    },\r\n                    {name:\"扬州\"},\r\n                ]\r\n            },\r\n            {\r\n                name:\"湖北\",\r\n                children:[\r\n                    {name:\"武汉\"},\r\n                    {name:\"黄石\"},\r\n                ]\r\n            },\r\n        ]\r\n    }\r\n]\r\n```\r\n\r\n\r\n\r\n### 8.事件模型\r\n\r\n​\tVandf的事件模型包括原生事件(Raw Event)、节点事件(Node Event)、文档事件（Document Event），原生事件通过本地代理生转换成节点事件向组件传递信息。节点事件在按照组件层次逐级向上冒泡，将信息传递给父组件。文档事件（Document Event）仍以原生形态出现。\r\n\r\n![image-20240101210638566](C:\\Users\\Administrator\\AppData\\Roaming\\Typora\\typora-user-images\\image-20240101210638566.png)\r\n\r\n### 9.与纯css库结合使用\r\n\r\n​\t本框架与tailwind css框架、bulma css框架天然契合，通过类名即可实现无缝衔接，通过控制class名称来控制渲染的样式，而Vandf可以通过classed来的数据和索引以及node的其它属性信息来灵活控制采用什么class应该被设置或被删除。具体操作参照“设置类名”章节。\r\n\r\n### 10.与d3.js结合使用\r\n\r\n​\td3.js是著名的数据驱动的图形库，具有功能强大，使用灵活的特点，但也存在学习曲线陡峭的问题，组件化难度大的特点。通过与Vandf框架的结合使用，可以降低使用难度，易于实现组件化。以下是一个水平树形的构建例子。\r\n\r\n![image-20240102225609061](C:\\Users\\Administrator\\AppData\\Roaming\\Typora\\typora-user-images\\image-20240102225609061.png)\r\n\r\n- 引入库文件\r\n\r\n```javascript\r\nimport Van from \"../core/comp\";\r\nimport * as d3 from \"d3\";\r\n```\r\n\r\n\r\n\r\n- 定义组件\r\n\r\n```javascript\r\nexport default class HTree extends Van {\r\n    constructor(id){\r\n        super(id)\r\n\r\n        const svg = this.kid('layer').tag('svg').view(SvgView).model(SvgModel)\r\n        const tree = svg.kid('tree').tag('g').view(TreeView).model(TreeModel)\r\n        tree.kid('link').tag('path').view(LinkView).model(LinkModel)\r\n        const node = tree.kid('node').tag('g').view(NodeView).model(NodeModel)\r\n        node.kid('circle').tag('circle').view(CircleView)\r\n        node.kid('text').tag('text').view(TextView)\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n- 定义SVG画布的视图和模型\r\n\r\n```javascript\r\nclass SvgModel {\r\n    supply () {\r\n        return  d3.hierarchy(data, (d) => d.children);\r\n    }\r\n}\r\n\r\n\r\nclass SvgView {\r\n    constructor(_, config){\r\n        this._states = config || {\r\n            top: 20, right: 90, bottom: 30, left: 90,\r\n            width: 660, height:500\r\n        }\r\n    }\r\n    states(){\r\n        return this._states\r\n    }\r\n\r\n    create (node) {\r\n        let s = this._states;\r\n        node.attr(\"width\", s.width)\r\n            .attr(\"height\", s.height)\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n- 定义Tree的视图和模型\r\n\r\n```javascript\r\nclass TreeModel {\r\n    supply (d, s) {\r\n        let height = s.height - s.top - s.bottom;\r\n        let width = s.width - s.left - s.right;\r\n        const treeMap = d3.tree().size([height, width]);        \r\n        const tree =  treeMap(d);\r\n        return {nodes:tree.descendants()}\r\n    }\r\n}\r\n\r\nclass TreeView {\r\n    constructor(model){\r\n        this.model = model\r\n    }\r\n    states (s) {\r\n        this._config = s;\r\n    }\r\n    create (node) {\r\n        let s = this._config;\r\n        node.attr(\"transform\", \"translate(\" + s.left + \",\" + s.top + \")\");\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n- 定义Link连线的视图和模型\r\n\r\n```javascript\r\nclass LinkModel {\r\n    supply (d) {\r\n         return d.nodes.slice(1);\r\n    }\r\n}\r\n\r\nclass LinkView {\r\n    render (node) {\r\n        node.attr(\"d\", (d) => {\r\n                let x = d.x, y = d.y, px = d.parent.x, py = d.parent.y;\r\n                return `M${y},${x},C${(y+py)/2},${x} ${(y+py)/2},${px} ${py},${px}`\r\n            })\r\n            .style(\"stroke\", (d) => d.data.level)\r\n            .style('fill','none')\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n- 定义Node节点的视图和模型\r\n\r\n```javascript\r\nclass NodeModel {\r\n    supply (d) {\r\n        return d.nodes;\r\n    }\r\n}\r\n\r\nclass NodeView {\r\n    render (node) {\r\n        node.attr(\r\n            \"class\",\r\n            (d) => \"node\" + (d.children ? \" node--internal\" : \" node--leaf\")\r\n        )\r\n        .attr(\"transform\", (d) => `translate(${d.y},${d.x})`)\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n- 定义Circle圆节点视图\r\n\r\n```javascript\r\nclass CircleView {\r\n    create (node) {\r\n        node.on('click', e=>{\r\n            console.log(node.datum)\r\n        },true)\r\n    }\r\n    render (node) {\r\n        node.attr(\"r\", (d) => d.data.value)\r\n            .style(\"stroke\", (d) => d.data.type)\r\n            .style(\"fill\", (d) => d.data.level)\r\n            .style('stroke-width','3px')\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n- 定义节点文本Text视图\r\n\r\n```javascript\r\nclass TextView {\r\n    render (node) {\r\n        node.attr(\"dy\", \".35em\")\r\n            .attr(\"x\", (d) => (d.children ? (d.data.value + 5) * -1 : d.data.value + 5))\r\n            .attr(\"y\", (d) => (d.children && d.depth !== 0 ? -(d.data.value + 5) : d.data.value-10))\r\n            .style(\"text-anchor\", (d) => (d.children ? \"end\" : \"start\"))\r\n            .text((d) => d.data.name)\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n- 使用HTree组件\r\n\r\n```javascript\r\nlet app = Van.new('app')\r\n    \r\nHTree.new('htree',app.id)\r\n    .model(HtreeModel)\r\n    .states({\r\n        top: 100, right: 90, bottom: 30, left: 90,\r\n        width: 660, height:500\r\n    })\r\n    .supply(data)\r\n\r\napp.attach(document.querySelector('#app'));\r\n```\r\n\r\n\r\n\r\n- 准备HTree数据\r\n\r\n```javascript\r\nclass HtreeModel {\r\n    constructor(data){\r\n        this._data = data;\r\n    }\r\n\r\n    supply () {\r\n        return this._data\r\n    }\r\n}\r\n\r\nconst data = {\r\n    \"name\": \"1\",\r\n    \"value\": 15,\r\n    \"type\": \"black\",\r\n    \"level\": \"yellow\",\r\n    \"children\": [\r\n        {\r\n            \"name\": \"1-2\",\r\n            \"value\": 10,\r\n            \"type\": \"grey\",\r\n            \"level\": \"red\"\r\n        },\r\n        {\r\n            \"name\": \"1-3\",\r\n            \"value\": 10,\r\n            \"type\": \"grey\",\r\n            \"level\": \"red\",\r\n            \"children\": [\r\n                {\r\n                    \"name\": \"1-3-001\",\r\n                    \"value\": 7.5,\r\n                    \"type\": \"grey\",\r\n                    \"level\": \"purple\"\r\n                },\r\n                {\r\n                    \"name\": \"1-3-002\",\r\n                    \"value\": 7.5,\r\n                    \"type\": \"grey\",\r\n                    \"level\": \"purple\"\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            \"name\": \"1-4\",\r\n            \"value\": 10,\r\n            \"type\": \"grey\",\r\n            \"level\": \"blue\"\r\n        },\r\n        {\r\n            \"name\": \"1-5\",\r\n            \"value\": 10,\r\n            \"type\": \"grey\",\r\n            \"level\": \"green\",\r\n            \"children\": [\r\n                {\r\n                    \"name\": \"1-5-001\",\r\n                    \"value\": 7.5,\r\n                    \"type\": \"grey\",\r\n                    \"level\": \"orange\"\r\n                },\r\n                {\r\n                    \"name\": \"1-5-002\",\r\n                    \"value\": 7.5,\r\n                    \"type\": \"grey\",\r\n                    \"level\": \"orange\"\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            \"name\": \"1-6\",\r\n            \"value\": 10,\r\n            \"type\": \"grey\",\r\n            \"level\": \"blue\",\r\n            \"children\": [\r\n                {\r\n                    \"name\": \"1-6-001\",\r\n                    \"value\": 7.5,\r\n                    \"type\": \"grey\",\r\n                    \"level\": \"purple\"\r\n                },\r\n                {\r\n                    \"name\": \"1-6-002\",\r\n                    \"value\": 7.5,\r\n                    \"type\": \"grey\",\r\n                    \"level\": \"purple\"\r\n                }\r\n            ]\r\n        }\r\n    ]\r\n}\r\n```\r\n\r\n\r\n\r\n","readmeFilename":"README.md"}