{"version":3,"file":"chunk.9031.ca59c48ae05ffaf5acdf.f1f035e7.js","mappings":"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","sources":["webpack:///./app/assets/javascripts/site/controllers/PhotoMap/utils.ts","webpack:///./app/assets/javascripts/core/services/HttpRequestBatcher/batchers/photoMaps/fetchPins.ts","webpack:///./app/assets/javascripts/site/controllers/PhotoMap/components/PhotoMapWidget/components/PhotoPins/index.tsx","webpack:///./app/assets/javascripts/site/controllers/PhotoMap/components/PhotoMapWidget/index.tsx"],"sourcesContent":["export const isDOMRect = (rect) => rect instanceof DOMRect;\nexport const normalizeCoordinates = (rect, { x: initialX, y: initialY }) => {\n let x = initialX;\n let y = initialY;\n if (x < rect.left)\n x = rect.left;\n if (x > rect.right)\n x = rect.right;\n if (y < rect.top)\n y = rect.top;\n if (y > rect.bottom)\n y = rect.bottom;\n return {\n x: x - rect.left,\n y: y - rect.top\n };\n};\nexport const percentageCoordinates = (rect, { x, y }) => ({\n x: x / rect.width * 100,\n y: y / rect.height * 100\n});\nexport const calculateZone = ({ x, y }) => [\n Number(x - 50 >= 0),\n Number(y - 50 >= 0)\n].join('');\n","import Http from 'core/services/Http';\nexport async function fetchPins(requests) {\n let result = await Http.post('/front_api/photo_maps/batch_fetch_pins.json', {\n data: { digests: requests }\n });\n return ({ digest }) => result[digest];\n}\n","import { h, Component } from 'preact';\nimport { calculateZone } from '../../../../utils';\nimport { asyncComponent } from 'core/components/Hoc/asyncComponent';\nconst TextPin = asyncComponent(() => import(/* webpackChunkName: \"site_c-TextPin\" */ './templates/TextPin'), 'TextPin');\nconst ProductPin = asyncComponent(() => import(/* webpackChunkName: \"site_c-ProductPin\" */ './templates/ProductPin'), 'ProductPin');\nconst ExternalProductPin = asyncComponent(() => import(/* webpackChunkName: \"site_c-ExternalProductPin\" */ './templates/ExternalProductPin'), 'ExternalProductPin');\nconst TemplatePin = asyncComponent(() => import(/* webpackChunkName: \"site_c-TemplatePin\" */ './templates/TemplatePin'), 'TemplatePin');\nconst TYPES_TO_TEMPLATES = {\n text: TextPin,\n product: ProductPin,\n external_product: ExternalProductPin,\n template: TemplatePin\n};\nexport class PhotoPins extends Component {\n constructor() {\n super(...arguments);\n this.handlePinClick = (e) => {\n e.stopPropagation();\n };\n }\n render() {\n const { pins } = this.props;\n return (h(\"div\", null, pins.map((pin, index) => {\n const PinByType = TYPES_TO_TEMPLATES[pin.type];\n const zone = calculateZone({ x: pin.x, y: pin.y });\n return (h(PinByType, { pin: pin, zone: zone, key: index, onClick: this.handlePinClick }));\n })));\n }\n}\n","import { h, Component } from 'preact';\nimport HttpRequestBatcher from 'core/services/HttpRequestBatcher';\nimport { fetchPins } from 'core/services/HttpRequestBatcher/batchers/photoMaps';\nimport { PhotoPins } from './components/PhotoPins';\nexport class PhotoMapWidget extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n pins: []\n };\n this.handleOpenEditor = (e) => {\n e.stopPropagation();\n this.props.onOpenEditor();\n };\n }\n get isEditable() {\n var _a;\n return !this.props.productId && Env.isLogged && ((_a = Env === null || Env === void 0 ? void 0 : Env.user) === null || _a === void 0 ? void 0 : _a.ability.showPinsEditor);\n }\n componentWillMount() {\n this.fetchPins();\n }\n async fetchPins() {\n const { digest, productId } = this.props;\n const params = { digest };\n if (productId)\n params.product_id = productId;\n const pins = await HttpRequestBatcher.request(fetchPins, params) || [];\n this.setState({ pins });\n }\n render() {\n const { pins } = this.state;\n return (h(\"div\", null,\n this.isEditable && (h(\"div\", null,\n h(\"button\", { type: 'button', className: '_edit', onClick: this.handleOpenEditor }))),\n pins.length > 0 && (h(PhotoPins, { pins: pins }))));\n }\n}\n"],"names":["isDOMRect","rect","DOMRect","normalizeCoordinates","_ref","x","y","left","right","top","bottom","percentageCoordinates","_ref2","width","height","calculateZone","_ref3","Number","join","fetchPins","_x","_fetchPins","apply","arguments","_regeneratorRuntime","_callee","requests","result","_context","prev","next","Http","post","data","digests","sent","abrupt","digest","stop","TYPES_TO_TEMPLATES","text","asyncComponent","product","external_product","template","PhotoPins","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","handlePinClick","e","stopPropagation","key","value","_this2","pins","this","props","h","map","pin","index","PinByType","type","zone","onClick","Component","PhotoMapWidget","_fetchPins2","state","handleOpenEditor","onOpenEditor","_this$props","productId","params","product_id","HttpRequestBatcher","request","t0","setState","isEditable","className","length","get","_a","Env","isLogged","user","ability","showPinsEditor"],"sourceRoot":""}