{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/checkbox-group/middleware.tsx","sourceRoot":"","sources":["middleware.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAShF,MAAM,MAAM,GAAG,sBAAsB,EAAuB,CAAC;AAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;IACnE,OAAO,CAAC,OAAkC,EAAE,eAAyB,EAAE,EAAE,KAAgB,EAAE,EAAE;QAC5F,IAAI,KAAK,KAAK,SAAS,EAAE;YACxB,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;gBAC1E,MAAM,CAAC,GAAG,CACT,QAAQ,EACR,YAAY,CAAC,MAAM,CAAC,CAAC,QAAa,EAAE,KAAK,EAAE,EAAE;oBAC5C,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACvB,OAAO,QAAQ,CAAC;gBACjB,CAAC,EAAE,EAAE,CAAC,CACN,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;aACpC;SACD;aAAM;YACN,MAAM,CAAC,GAAG,CACT,QAAQ,EACR,KAAK,CAAC,MAAM,CAAC,CAAC,QAAa,EAAE,KAAK,EAAE,EAAE;gBACrC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBACvB,OAAO,QAAQ,CAAC;YACjB,CAAC,EAAE,EAAE,CAAC,CACN,CAAC;SACF;QAED,SAAS,YAAY;YACpB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAExC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,GAAW,EAAE,EAAE;gBACpD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;oBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACjB;gBACD,OAAO,MAAM,CAAC;YACf,CAAC,EAAE,EAAE,CAAC,CAAC;QACR,CAAC;QAED,OAAO,CAAC,GAAW,EAAE,EAAE;YAGtB,SAAS,OAAO,CAAC,OAAiB;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAE7C,IAAI,OAAO,KAAK,SAAS,EAAE;oBAC1B,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACrB;qBAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE;oBACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,oBAAO,MAAM,IAAE,CAAC,GAAG,CAAC,EAAE,OAAO,IAAG,CAAC;oBACpD,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;iBACxB;YACF,CAAC;YAED,OAAO;gBACN,OAAO;aACP,CAAC;QACH,CAAC,CAAC;IACH,CAAC,CAAC;AACH,CAAC,CAAC,CAAC","sourcesContent":["import { create } from '@dojo/framework/core/vdom';\nimport { createICacheMiddleware } from '@dojo/framework/core/middleware/icache';\n\ninterface CheckboxGroupICache {\n\tvalues: {\n\t\t[key: string]: boolean;\n\t};\n\tinitial: string[];\n}\n\nconst icache = createICacheMiddleware<CheckboxGroupICache>();\nconst factory = create({ icache });\n\nexport const checkboxGroup = factory(({ middleware: { icache } }) => {\n\treturn (onValue: (value: string[]) => void, initialValue: string[] = [], value?: string[]) => {\n\t\tif (value === undefined) {\n\t\t\tconst existingInitialValue = icache.get('initial');\n\t\t\tif (JSON.stringify(existingInitialValue) !== JSON.stringify(initialValue)) {\n\t\t\t\ticache.set(\n\t\t\t\t\t'values',\n\t\t\t\t\tinitialValue.reduce((existing: any, value) => {\n\t\t\t\t\t\texisting[value] = true;\n\t\t\t\t\t\treturn existing;\n\t\t\t\t\t}, {})\n\t\t\t\t);\n\t\t\t\ticache.set('initial', initialValue);\n\t\t\t}\n\t\t} else {\n\t\t\ticache.set(\n\t\t\t\t'values',\n\t\t\t\tvalue.reduce((existing: any, value) => {\n\t\t\t\t\texisting[value] = true;\n\t\t\t\t\treturn existing;\n\t\t\t\t}, {})\n\t\t\t);\n\t\t}\n\n\t\tfunction getAllValues() {\n\t\t\tconst currentValues = icache.get('values') || {};\n\t\t\tconst keys = Object.keys(currentValues);\n\n\t\t\treturn keys.reduce((values: string[], key: string) => {\n\t\t\t\tif (currentValues[key]) {\n\t\t\t\t\tvalues.push(key);\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}, []);\n\t\t}\n\n\t\treturn (key: string) => {\n\t\t\tfunction checked(): boolean;\n\t\t\tfunction checked(checked: boolean): void;\n\t\t\tfunction checked(checked?: boolean): boolean | void {\n\t\t\t\tconst values = icache.getOrSet('values', {});\n\n\t\t\t\tif (checked === undefined) {\n\t\t\t\t\treturn !!values[key];\n\t\t\t\t} else if (values[key] !== checked) {\n\t\t\t\t\ticache.set('values', { ...values, [key]: checked });\n\t\t\t\t\tonValue(getAllValues());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tchecked\n\t\t\t};\n\t\t};\n\t};\n});\n"]}