UNPKG

13.7 kBPlain TextView Raw
1{"code":"function defineName$__(cls,name){\n\tObject.defineProperty(cls,\"name\",{value:name,configurable:true});\n};;\nfunction inheritClass$__(cls){\n\tObject.getPrototypeOf(cls.prototype).constructor?.inherited?.(cls);\n};;\nfunction extend$__(target,ext){\n\t// @ts-ignore\n\tconst descriptors = Object.getOwnPropertyDescriptors(ext);\n\tdelete descriptors.constructor;\n\tif(target.extend__ instanceof Function){\n\t\ttarget.extend__(descriptors,ext);\n\t} else {\n\t\t// @ts-ignore\n\t\tObject.defineProperties(target,descriptors);\n\t}\n\treturn target;\n};\nconst $setup$ = Symbol.for('#setup'), $__init__$ = Symbol.for('#__init__'), $__patch__$ = Symbol.for('#__patch__'), $__initor__$ = Symbol.for('#__initor__'), $__inited__$ = Symbol.for('#__inited__'), $__hooks__$ = Symbol.for('#__hooks__'), $label$ = Symbol.for('#label');\nvar $1 = Symbol();\n\n/*body*/\nimport {now} from '../utils';\nimport './any';\n\nexport class OPToggleField extends OPPlainField {\n\t[$__patch__$]($$ = {},fields = true){\n\t\tvar $2;\n\t\tsuper[$__patch__$] && super[$__patch__$]($$,fields);\n\t\t($2 = $$.pgtype) !== undefined && (this.pgtype = $2);\n\t\t($2 = $$.$tracked) !== undefined && (this.$tracked = $2);\n\t\t($2 = $$.observable) !== undefined && (this.observable = $2);\n\t\t($2 = $$.count) !== undefined && (this.count = $2);\n\t\t($2 = $$.actionable) !== undefined && (this.actionable = $2);\n\t\t\n\t}\n\tconstructor(){\n\t\tsuper(...arguments);\n\t\tsuper[$__init__$] || this[$__init__$]();this[$__initor__$]===$1 && (this[$__hooks__$]&&this[$__hooks__$].inited(this),this[$__inited__$] && this[$__inited__$]());\n\t}\n\t[$__init__$]($$ = null,deep = true,fields = true){\n\t\tvar $3;\n\t\tdeep && super[$__init__$] && super[$__init__$](...arguments);\n\t\tthis.pgtype = ($$ && ($3 = $$.pgtype) !== undefined) ? ($3) : 'integer';\n\t\tthis.$tracked = ($$ && ($3 = $$.$tracked) !== undefined) ? ($3) : true;\n\t\tthis.observable = ($$ && ($3 = $$.observable) !== undefined) ? ($3) : true;\n\t\tthis.count = ($$ && ($3 = $$.count) !== undefined) ? ($3) : false;\n\t\tthis.actionable = ($$ && ($3 = $$.actionable) !== undefined) ? ($3) : false;\n\t\t\n\t}\n\t\n\t\n\t// default to observable now - but if it indexes with trait it would not really need to be\n\t\n\t\n\t\n\t\n\t// separate property to make it actionable?\n\t\n\t\n\tget actionΦ(){\n\t\t\n\t\treturn !(!(this.actionable));\n\t}\n\t\n\tget complexΦ(){\n\t\t\n\t\treturn !(!(this.pov)) || !(!(this.$granted)) || !(!(this.type));\n\t}\n\t\n\t[$setup$](){\n\t\t\n\t\tif (this.pov && !(this.W)) {\n\t\t\t\n\t\t\tthis.R = 0;\n\t\t\tthis.W = 0;\n\t\t};\n\t\treturn this;\n\t}\n\t\n\t/**\n\t@returns { boolean }\n\t*/\n\t$get(target){\n\t\t\n\t\tlet d = target.$plain;\n\t\tlet v = d ? d[this.name] : 0;\n\t\treturn (v > 0) ? true : false;\n\t}\n\t\n\t$set(value,target,ctx){\n\t\t\n\t\t// FIXME what if it is local??\n\t\tlet raw = target.$plain[this.name];\n\t\tlet prev = this.$get(target);\n\t\tif (value == prev) { return };\n\t\tvalue = value ? OP.now : (-OP.now);\n\t\treturn super.$set(value,target,ctx);\n\t}\n\t\n\t$patch(val,target,prev){\n\t\t\n\t\tthis.$altered(val,prev || 0,target);\n\t\treturn true;\n\t}\n\t\n\t// TODO change $wake target val\n\t$wake(target,val){\n\t\t\n\t\t// if name == 'bookmarked' and val\n\t\tif (val > 0) {\n\t\t\t\n\t\t\treturn this.$altered(val,null,target);\n\t\t};\n\t}\n\t\n\t// call bind instead?\n\t// should also return an action instead?\n\t$bound(target,...params){\n\t\t\n\t\tlet f = Object.create(this);\n\t\tif (this.pov && (target instanceof this.model)) { target = target.$pov(OP.agent) };\n\t\tf.$target = target;\n\t\tf.$params = params;\n\t\tf.checked = this.$get(target);// (f.$target[key] > 0)\n\t\tf[$label$] = this.actionable?.[f.checked ? 'on' : 'off'] || this.label;\n\t\tconsole.log(\"bould toggle!\",this.name,f[$label$],f.checked,target);\n\t\treturn f;\n\t}\n\t\n\trun(ctx){\n\t\t\n\t\treturn this.call();\n\t}\n\t\n\tcall(){\n\t\t\n\t\tif (!(this.$target)) { return };\n\t\tconsole.warn('going to set',[this.$target,this.checked,this.model,this.pov]);\n\t\t// $target[key] = !checked\n\t\treturn this.$set(!(this.checked),this.$target,this.key);\n\t}\n\t\n\t$load(value,target){\n\t\t\n\t\tlet key = this.key;\n\t\tlet track = this.$tracked;\n\t\t\n\t\tif (value !== undefined) {\n\t\t\t\n\t\t\t\n\t\t\tif (false && (target instanceof this.model) && this.pov) {\n\t\t\t\t\n\t\t\t\t// if pov # not pov\n\t\t\t\t// this is only for the pov version\n\t\t\t\t// should rather access the stats\n\t\t\t\t\n\t\t\t\ttarget[this.name].$patch(value);\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tlet prev = track && target[key];\n\t\t\t\ttarget[key] = value;\n\t\t\t\tif (track && prev != value) {\n\t\t\t\t\t\n\t\t\t\t\tthis.$altered(value,prev,target);\n\t\t\t\t};\n\t\t\t};\n\t\t\t// $get(target).$patch(value)\n\t\t};\n\t\treturn;\n\t}\n\t\n\t$altered(value,prev,target){\n\t\t\n\t\tlet flipped = (value > 0 && (prev || 0) < 1) || (prev > 0 && (value || 0) < 1);\n\t\t\n\t\tif (flipped) {\n\t\t\t\n\t\t\t// only for pov?\n\t\t\tif (this.pov && this.type) {\n\t\t\t\t\n\t\t\t\t// TODO should use $index instead\n\t\t\t\t// Also notify the index when value updates?\n\t\t\t\t(value > 0) ? this.type.index(target.$key,this).add(target.$up,value,this) : this.type.index(target.$key,this).decr(target.$up,value,this);\n\t\t\t};\n\t\t\t\n\t\t\tif (this.pov && this.$granted) {\n\t\t\t\t\n\t\t\t\t(value > 0) ? target.$promote(this.$granted,this) : target.$demote(this.$granted,this);\n\t\t\t};\n\t\t\t\n\t\t\ttrue;\n\t\t} else if (value > 0 && this.pov && this.type) {\n\t\t\t\n\t\t\t// only pov? Doesnt make sense\n\t\t\tthis.type.index(target.$key,this).update(target.$up,value);\n\t\t};\n\t\treturn;\n\t}\n\tstatic {\n\t\tthis.prototype[$__initor__$] = $1;defineName$__(this,'OPToggleField');inheritClass$__(this);}\n}; globalThis.OPToggleField = OPToggleField;\n\nclass ΩOPObject {\n\t\n\t/**\n\t@param {T} type\n\t*/\n\tαtoggle(type){\n\t\t\n\t\treturn new OPToggleField(type);\n\t}\n\tstatic {\n\t\tdefineName$__(this,'OPObject');}\n};\nextend$__(OPObject.prototype,ΩOPObject.prototype);\n;\n","map":{"version":3,"file":"toggle.js","sourceRoot":"","sources":["/Users/abdellah/workspace/scrimba/op/src/fields/toggle.imba"],"sourcesContent":["import { now } from '../utils'\nimport './any'\n\nexport global class OPToggleField < OPPlainField\n\tpgtype = 'integer'\n\n\t$tracked = yes\n\n\t# default to observable now - but if it indexes with trait it would not really need to be\n\tobservable = yes\n\n\tcount = no\n\n\t# separate property to make it actionable?\n\tactionable = no\n\n\tget action?\n\t\t!!actionable\n\n\tget complex?\n\t\t!!pov or !!$granted or !!type\n\n\tdef #setup\n\t\tif pov and !self.W\n\t\t\tself.R = 0\n\t\t\tself.W = 0\n\t\tself\n\n\tdef $get\\boolean target\n\t\tlet d = target.$plain\n\t\tlet v = d ? d[name] : 0\n\t\treturn v > 0 ? yes : no\n\n\tdef $set value, target, ctx\n\t\t# FIXME what if it is local??\n\t\tlet raw = target.$plain[name]\n\t\tlet prev = $get(target)\n\t\treturn if value == prev\n\t\tvalue = value ? OP.now : -OP.now\n\t\tsuper(value,target,ctx)\n\n\tdef $patch val, target, prev\n\t\t$altered(val,prev or 0,target)\n\t\tyes\n\n\t# TODO change $wake target val\n\tdef $wake target, val\n\t\t# if name == 'bookmarked' and val\n\t\tif val > 0\n\t\t\t$altered(val,null,target)\n\n\t# call bind instead?\n\t# should also return an action instead?\n\tdef $bound target,...params\n\t\tlet f = Object.create(self)\n\t\ttarget = target.$pov(OP.agent) if pov and target isa model\n\t\tf.$target = target\n\t\tf.$params = params\n\t\tf.checked = $get(target) # (f.$target[key] > 0)\n\t\tf.#label = actionable..[f.checked ? 'on' : 'off'] or label\n\t\tconsole.log \"bould toggle!\",name,f.#label,f.checked,target\n\t\treturn f\n\n\tdef run ctx\n\t\tcall!\n\n\tdef call\n\t\treturn unless $target\n\t\tconsole.warn 'going to set',[$target,checked,model,pov]\n\t\t# $target[key] = !checked\n\t\t$set(!checked,$target,key)\n\n\tdef $load value, target\n\t\tlet key = key\n\t\tlet track = $tracked\n\n\t\tunless value === undefined\n\n\t\t\tif false and target isa model and pov\n\t\t\t\t# if pov # not pov\n\t\t\t\t# this is only for the pov version\n\t\t\t\t# should rather access the stats\n\n\t\t\t\ttarget[name].$patch(value)\n\t\t\telse\n\t\t\t\tlet prev = track and target[key]\n\t\t\t\ttarget[key] = value\n\t\t\t\tif track and prev != value\n\t\t\t\t\t$altered(value,prev,target)\n\t\t\t# $get(target).$patch(value)\n\t\treturn\n\n\tdef $altered value, prev, target\n\t\tlet flipped = (value > 0 and (prev or 0) < 1) or (prev > 0 and (value or 0) < 1)\n\n\t\tif flipped\n\t\t\t# only for pov?\n\t\t\tif pov and type\n\t\t\t\t# TODO should use $index instead\n\t\t\t\t# Also notify the index when value updates?\n\t\t\t\t(value > 0) ? type.index(target.$key,self).add(target.$up,value,self) : type.index(target.$key,self).decr(target.$up,value,self)\n\n\t\t\tif pov and $granted\n\t\t\t\t(value > 0) ? target.$promote($granted,self) : target.$demote($granted,self)\n\n\t\t\tyes\n\t\telif value > 0 and pov and type\n\t\t\t# only pov? Doesnt make sense\n\t\t\ttype.index(target.$key,self).update(target.$up,value)\n\t\treturn\n\nextend class OPObject\n\tdef @toggle type\\T\n\t\tnew OPToggleField(type)"],"names":[],"mappings":"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"},"dependencies":[],"meta":{"vite":{"lang":"js"}}}
\No newline at end of file