{"version":3,"sources":["webpack://frontendplaceholder/./Src/Scripts/components/vue-component-loader.js","webpack://frontendplaceholder/./node_modules/vue-masonry-css/dist/vue-masonry.es2015.js"],"names":["constructor","elem","args","callback","this","appInstance","state","reactive","vueComponent","getAttribute","window","vuecr","loadComponentClass","then","VueComponent","props","createApp","use","VueMasonry","mount","createUntypedApp","deps","data","components","depsAttr","componentDependencies","split","map","cd","trim","length","loadComponentClasses","result","forEach","i","replace","_maskedHelpers","getAppInstance","setData","key","tag","type","String","default","cols","Object","Number","gutter","css","Boolean","columnTag","columnClass","Array","columnAttr","breakpointValue","mixed","windowWidth","parseInt","matchedBreakpoint","Infinity","matchedValue","k","breakpoint","breakpointValRaw","breakpointVal","isNaN","component","displayColumns","displayGutter","mounted","this$1","$nextTick","reCalculate","addEventListener","updated","beforeDestroy","removeEventListener","methods","previousWindowWidth","innerWidth","_reCalculateColumnCount","_reCalculateGutterSize","newColumns","Math","max","_getChildItemsInColumnsArray","columns","childItems","$slots","componentOptions","children","visibleItemI","columnIndex","push","render","createElement","columnsContainingChildren","gutterSizeWithUnit","columnStyle","boxSizing","backgroundClip","width","border","borderLeftWidth","index","style","class","attrs","containerStyle","display","marginLeft","Plugin","install","Vue","options","installed","name"],"mappings":"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","file":"9684.1948e32012ce0bb7384f.js","sourcesContent":["/**\n *\n * DESCRIPTION:\n * A helper class to load and instantiate Vue Components. It can be used in two ways either as a \"typed-component\" or an \"untyped-component\".\n * \n * A typed-component is instantiated by supplying a data-vue-component attribute with ONE (and only one) key to a vue-component from the window.vuecr.\n * This vue-component will then be loaded and instantiated as the root Vue app. This is used when the markup of the vue-component determines the markup to be rendered.\n *\n * An untyped-component is instantiated by NOT supplying a data-vue-component attribute. An untyped component is used\n * when you want to create an empty vue app that applies to some markup rendered from the backend. This markup can then utilize Vue syntax to render data,\n * as well as Vue component tags to instantiate any vue components supplied in the data-vue-component-dependencies attribute.\n * \n * ARGS:\n * No specific args, but any arguments will be passed directly to the instantiated app.\n * */\nimport { createApp, reactive } from 'vue';\nimport VueMasonry from 'vue-masonry-css';\n\nexport default class VueComponentLoader {\n constructor(elem, args, callback) {\n this.appInstance = null;\n this.state = reactive(args); // make state reactive\n\n const vueComponent = elem.getAttribute('data-vue-component');\n let state = this.state;\n if (vueComponent) {\n window.vuecr.loadComponentClass(vueComponent)\n .then((VueComponent) => {\n VueComponent.props = ['state']; // Define the prop\n this.appInstance = createApp(VueComponent, { state }); // Pass the prop when creating the app\n this.appInstance.use(VueMasonry);\n this.appInstance.mount(elem);\n if (callback) callback();\n });\n } else {\n const createUntypedApp = (deps = {}) => {\n this.appInstance = createApp({\n data() { return { state: this.state }; },\n components: deps,\n });\n this.appInstance.mount(elem);\n };\n\n const depsAttr = elem.getAttribute('data-vue-component-dependencies');\n let componentDependencies = depsAttr ? depsAttr.split(',').map((cd) => cd.trim()) : [];\n\n if (componentDependencies.length > 0) {\n window.vuecr.loadComponentClasses(componentDependencies)\n .then((result) => {\n const deps = {};\n componentDependencies.forEach((cd, i) => {\n deps[cd.replace('-', '')] = result[i];\n });\n createUntypedApp(deps);\n });\n } else {\n createUntypedApp();\n }\n }\n\n this._maskedHelpers = {\n getAppInstance: () => this.appInstance,\n setData: (data) => {\n for (let key in data) {\n this.state[key] = data[key]; // Vue automatically triggers re-render\n }\n },\n };\n }\n\n getAppInstance() {\n return this._maskedHelpers.getAppInstance();\n }\n\n setData(data) {\n this._maskedHelpers.setData(data);\n }\n}\n","/*!\n * vue-masonry-css v1.0.3\n * https://github.com/paulcollett/vue-masonry-css\n * Released under the MIT License.\n */\n\n// the component name ``\n// can be overridden with `Vue.use(Masonry, { name: 'the-masonry' });`\nvar componentName = 'masonry';\n\nvar props = {\n tag: {\n type: [String],\n default: 'div'\n },\n cols: {\n type: [Object, Number, String],\n default: 2\n },\n gutter: {\n type: [Object, Number, String],\n default: 0\n },\n css: {\n type: [Boolean],\n default: true\n },\n columnTag: {\n type: [String],\n default: 'div'\n },\n columnClass: {\n type: [String, Array, Object],\n default: function () { return []; }\n },\n columnAttr: {\n type: [Object],\n default: function () { return ({}); }\n }\n};\n\n// Get the resulting value from `:col=` prop\n// based on the window width\nvar breakpointValue = function (mixed, windowWidth) {\n var valueAsNum = parseInt(mixed);\n\n if(valueAsNum > -1) {\n return mixed;\n }else if(typeof mixed !== 'object') {\n return 0;\n }\n\n var matchedBreakpoint = Infinity;\n var matchedValue = mixed.default || 0;\n\n for(var k in mixed) {\n var breakpoint = parseInt(k);\n var breakpointValRaw = mixed[breakpoint];\n var breakpointVal = parseInt(breakpointValRaw);\n\n if(isNaN(breakpoint) || isNaN(breakpointVal)) {\n continue;\n }\n\n var isNewBreakpoint = windowWidth <= breakpoint && breakpoint < matchedBreakpoint;\n\n if(isNewBreakpoint) {\n matchedBreakpoint = breakpoint;\n matchedValue = breakpointValRaw;\n }\n }\n\n return matchedValue;\n};\n\nvar component = {\n props: props,\n\n data: function data() {\n return {\n displayColumns: 2,\n displayGutter: 0\n }\n },\n\n mounted: function mounted() {\n var this$1 = this;\n\n this.$nextTick(function () {\n this$1.reCalculate();\n });\n\n // Bind resize handler to page\n if(window) {\n window.addEventListener('resize', this.reCalculate);\n }\n },\n\n updated: function updated() {\n var this$1 = this;\n\n this.$nextTick(function () {\n this$1.reCalculate();\n });\n },\n\n beforeDestroy: function beforeDestroy() {\n if(window) {\n window.removeEventListener('resize', this.reCalculate);\n }\n },\n\n methods: {\n // Recalculate how many columns to display based on window width\n // and the value of the passed `:cols=` prop\n reCalculate: function reCalculate() {\n var previousWindowWidth = this.windowWidth;\n\n this.windowWidth = (window ? window.innerWidth : null) || Infinity;\n\n // Window resize events get triggered on page height\n // change which when loading the page can result in multiple\n // needless calculations. We prevent this here.\n if(previousWindowWidth === this.windowWidth) {\n return;\n }\n\n this._reCalculateColumnCount(this.windowWidth);\n\n this._reCalculateGutterSize(this.windowWidth);\n },\n\n _reCalculateGutterSize: function _reCalculateGutterSize(windowWidth) {\n this.displayGutter = breakpointValue(this.gutter, windowWidth);\n },\n\n _reCalculateColumnCount: function _reCalculateColumnCount(windowWidth) {\n var newColumns = breakpointValue(this.cols, windowWidth);\n\n // Make sure we can return a valid value\n newColumns = Math.max(1, Number(newColumns) || 0);\n\n this.displayColumns = newColumns;\n },\n\n _getChildItemsInColumnsArray: function _getChildItemsInColumnsArray() {\n var this$1 = this;\n\n var columns = [];\n var childItems = this.$slots.default || [];\n\n // This component does not work with a child ..yet,\n // so for now we think it may be helpful to ignore until we can find a way for support\n if(childItems.length === 1 && childItems[0].componentOptions && childItems[0].componentOptions.tag == 'transition-group') {\n childItems = childItems[0].componentOptions.children;\n }\n\n // Loop through child elements\n for (var i = 0, visibleItemI = 0; i < childItems.length; i++, visibleItemI++) {\n // skip Vue elements without tags, which includes\n // whitespace elements and also plain text\n if(!childItems[i].tag) {\n visibleItemI--;\n\n continue;\n }\n\n // Get the column index the child item will end up in\n var columnIndex = visibleItemI % this$1.displayColumns;\n\n if(!columns[columnIndex]) {\n columns[columnIndex] = [];\n }\n\n columns[columnIndex].push(childItems[i]);\n }\n\n return columns;\n }\n },\n\n render: function render(createElement) {\n var this$1 = this;\n\n var columnsContainingChildren = this._getChildItemsInColumnsArray();\n var isGutterSizeUnitless = parseInt(this.displayGutter) === this.displayGutter * 1;\n var gutterSizeWithUnit = isGutterSizeUnitless ? ((this.displayGutter) + \"px\") : this.displayGutter;\n\n var columnStyle = {\n boxSizing: 'border-box',\n backgroundClip: 'padding-box',\n width: ((100 / this.displayColumns) + \"%\"),\n border: '0 solid transparent',\n borderLeftWidth: gutterSizeWithUnit\n };\n\n var columns = columnsContainingChildren.map(function (children, index) {\n /// Create column element and inject the children\n return createElement(this$1.columnTag, {\n key: index + '-' + columnsContainingChildren.length,\n style: this$1.css ? columnStyle : null,\n class: this$1.columnClass,\n attrs: this$1.columnAttr\n }, children); // specify child items here\n });\n\n var containerStyle = {\n display: ['-webkit-box', '-ms-flexbox', 'flex'],\n marginLeft: (\"-\" + gutterSizeWithUnit)\n };\n\n // Return wrapper with columns\n return createElement(\n this.tag, // tag name\n this.css ? { style: containerStyle } : null, // element options\n columns // column vue elements\n );\n }\n};\n\nvar Plugin = function () {};\n\nPlugin.install = function (Vue, options) {\n if (Plugin.installed) {\n return;\n }\n\n if(options && options.name) {\n Vue.component(options.name, component);\n } else {\n Vue.component(componentName, component);\n }\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(Plugin);\n}\n\nexport default Plugin;\n"],"sourceRoot":""}