UNPKG

7.61 kBPlain TextView Raw
1{"code":"function defineName$__(cls,name){\n\tObject.defineProperty(cls,\"name\",{value:name,configurable:true});\n};\nconst $getQueryParam$ = Symbol.for('#getQueryParam'), $setQueryParam$ = Symbol.for('#setQueryParam'), $__initor__$ = Symbol.for('#__initor__'), $__inited__$ = Symbol.for('#__inited__'), $__hooks__$ = Symbol.for('#__hooks__'), $query$ = Symbol.for('#query');\n\n/*body*/\n\nexport const ROUTES = {};\n\nexport class Location {\n\t\n\t\n\tstatic parse(url,router){\n\t\t\n\t\tif (url instanceof Location) {\n\t\t\t\n\t\t\treturn url;\n\t\t};\n\t\treturn new Location(url,router);\n\t}\n\t\n\tconstructor(url,router){\n\t\t\n\t\tthis.router = router;\n\t\tthis.parse(url);\n\t}\n\t\n\tparse(url){\n\t\tlet alias;\n\t\t\n\t\tif (!((url instanceof URL))) { url = new URL(url,this.router.origin) };\n\t\tif (alias = this.router?.aliases[url.pathname]) {\n\t\t\t\n\t\t\turl.pathname = alias;\n\t\t};\n\t\tthis.url = url;\n\t\treturn this;\n\t}\n\t\n\tget activeΦ(){\n\t\t\n\t\treturn this.router.location == this;\n\t}\n\t\n\treparse(){\n\t\t\n\t\treturn this.parse(this.url);\n\t}\n\t\n\t// should definitely add match here\n\tget searchParams(){\n\t\t\n\t\treturn this.url.searchParams;\n\t}\n\t\n\tsearch(){\n\t\t\n\t\tlet str = this.searchParams ? this.searchParams.toString() : '';\n\t\treturn str ? (('?' + str)) : '';\n\t}\n\t\n\tupdate(value){\n\t\t\n\t\tif (value instanceof Object) {\n\t\t\t\n\t\t\tfor (let $1 = 0, $2 = Object.keys(value), $3 = $2.length, k, v; $1 < $3; $1++){\n\t\t\t\tk = $2[$1];v = value[k];\n\t\t\t\tthis.searchParams.set(k,v);\n\t\t\t};\n\t\t} else if (typeof value == 'string') {\n\t\t\t\n\t\t\tthis.parse(value);\n\t\t};\n\t\treturn this;\n\t}\n\t\n\tclone(){\n\t\t\n\t\treturn new Location(this.url.href,this.router);\n\t}\n\t\n\tequals(other){\n\t\t\n\t\treturn this.toString() == String(other);\n\t}\n\t\n\tget href(){\n\t\t\n\t\treturn this.url.href;\n\t}\n\t\n\tget path(){\n\t\t\n\t\treturn this.url.href.slice(this.url.origin.length);\n\t}\n\t\n\tget pathname(){\n\t\t\n\t\treturn this.url.pathname;\n\t}\n\t\n\tget query(){\n\t\t\n\t\treturn this[$query$] ||= new Proxy({},{\n\t\t\tget: this[$getQueryParam$].bind(this),\n\t\t\tset: this[$setQueryParam$].bind(this)\n\t\t});\n\t}\n\t\n\ttoString(){\n\t\t\n\t\treturn this.href;\n\t}\n\t\n\t[$getQueryParam$](target,name){\n\t\t\n\t\treturn this.searchParams.get(name);\n\t}\n\t\n\t[$setQueryParam$](target,name,value){\n\t\t\n\t\tlet curr = this[$getQueryParam$](target,name);\n\t\tif (curr != value) {\n\t\t\t\n\t\t\t// console.log 'should set param',name,value,curr\n\t\t\tif ((value == null || value == '')) {\n\t\t\t\t\n\t\t\t\tthis.searchParams.delete(name);\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tthis.searchParams.set(name,value);\n\t\t\t};\n\t\t\t\n\t\t\tif (this.activeΦ) {\n\t\t\t\t\n\t\t\t\t// need to improve how we update the state?\n\t\t\t\tthis.router.history.replaceState({},null,this.url.toString());\n\t\t\t\tthis.router.touch();\n\t\t\t};\n\t\t};\n\t\treturn true;\n\t}\n\tstatic {\n\t\tdefineName$__(this,'Location');}\n};\n","map":{"version":3,"file":"location.js","sourceRoot":"","sources":["/Users/abdellah/workspace/scrimba/imba/packages/imba/src/imba/router/location.imba"],"sourcesContent":["\nexport const ROUTES = {}\n\nexport class Location\n\n\tstatic def parse url, router\n\t\tif url isa Location\n\t\t\treturn url\n\t\treturn new Location(url,router)\n\n\tdef constructor url, router\n\t\trouter = router\n\t\tself.parse(url)\n\n\tdef parse url\n\t\turl = new URL(url,router.origin) unless url isa URL\n\t\tif let alias = router..aliases[url.pathname]\n\t\t\turl.pathname = alias\n\t\tself.url = url\n\t\tself\n\n\tget active?\n\t\trouter.location == self\n\n\tdef reparse\n\t\tparse(url)\n\n\t# should definitely add match here\n\tget searchParams\n\t\turl.searchParams\n\n\tdef search\n\t\tlet str = searchParams ? searchParams.toString() : ''\n\t\tstr ? ('?' + str) : ''\n\n\tdef update value\n\t\tif value isa Object\n\t\t\tfor own k,v of value\n\t\t\t\tself.searchParams.set(k,v)\n\n\t\telif typeof value == 'string'\n\t\t\tself.parse(value)\n\t\treturn self\n\n\tdef clone\n\t\tnew Location(url.href,router)\n\n\tdef equals other\n\t\tself.toString() == String(other)\n\n\tget href\n\t\turl.href\n\n\tget path\n\t\turl.href.slice(url.origin.length)\n\n\tget pathname\n\t\turl.pathname\n\n\tget query\n\t\t#query ||= new Proxy({},{\n\t\t\tget: #getQueryParam.bind(self)\n\t\t\tset: #setQueryParam.bind(self)\n\t\t})\n\n\tdef toString\n\t\thref\n\n\tdef #getQueryParam target, name\n\t\tsearchParams.get(name)\n\n\tdef #setQueryParam target, name, value\n\t\tlet curr = #getQueryParam(target,name)\n\t\tif curr != value\n\t\t\t# console.log 'should set param',name,value,curr\n\t\t\tif (value == null or value == '')\n\t\t\t\tsearchParams.delete(name)\n\t\t\telse\n\t\t\t\tsearchParams.set(name,value)\n\n\t\t\tif active?\n\t\t\t\t# need to improve how we update the state?\n\t\t\t\trouter.history.replaceState({},null,url.toString!)\n\t\t\t\trouter.touch!\n\t\treturn yes\n"],"names":[],"mappings":"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"},"dependencies":[],"meta":{"vite":{"lang":"js"}}}
\No newline at end of file