├── .editorconfig ├── .gitignore ├── .npmignore ├── .travis.yml ├── docs ├── app.js ├── img │ ├── beach-large.jpg │ ├── beach-small.jpg │ ├── cat-large.jpg │ ├── cat-small.jpg │ ├── fall-large.jpg │ └── fall-small.jpg └── index.html ├── index.js ├── jest.setup.js ├── lib ├── cursor-zoom.js └── magnifier.js ├── package-lock.json ├── package.json ├── readme.md ├── src ├── app.js ├── cursor-zoom.jsx ├── demo.jsx └── magnifier.jsx ├── test └── cursor-zoom-test.js └── webpack.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | trim_trailing_whitespace = true 7 | end_of_line = lf 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Dependency directory 23 | # Commenting this out is preferred by some people, see 24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 25 | node_modules 26 | 27 | # Users Environment Variables 28 | .lock-wscript 29 | 30 | # ========================= 31 | # Operating System Files 32 | # ========================= 33 | 34 | # OSX 35 | # ========================= 36 | 37 | .DS_Store 38 | .AppleDouble 39 | .LSOverride 40 | 41 | # Thumbnails 42 | ._* 43 | 44 | # Files that might appear on external disk 45 | .Spotlight-V100 46 | .Trashes 47 | 48 | # Directories potentially created on remote AFP share 49 | .AppleDB 50 | .AppleDesktop 51 | Network Trash Folder 52 | Temporary Items 53 | .apdisk 54 | 55 | # Windows 56 | # ========================= 57 | 58 | # Windows image file caches 59 | Thumbs.db 60 | ehthumbs.db 61 | 62 | # Folder config file 63 | Desktop.ini 64 | 65 | # Recycle Bin used on file shares 66 | $RECYCLE.BIN/ 67 | 68 | # Windows Installer files 69 | *.cab 70 | *.msi 71 | *.msm 72 | *.msp 73 | 74 | # Windows shortcuts 75 | *.lnk 76 | 77 | # Webstorm 78 | 79 | .idea 80 | .idea/vcs.xml 81 | .idea/modules.xml 82 | .idea/react-image-magnifier.iml 83 | .idea/scopes/scope_settings.xml 84 | .idea/vcs.xml -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # ignore docs folder 2 | docs/ 3 | 4 | # ignore test files 5 | test/ 6 | jest.setup.js 7 | 8 | # ignore source files 9 | src/ 10 | 11 | # ignore development config files 12 | .editorconfig 13 | .gitignore 14 | .travis.yml 15 | .npmignore 16 | webpack.config.js 17 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - node 4 | before_script: npm test 5 | script: npm run build && npm run build-lib 6 | deploy: 7 | provider: npm 8 | email: jaredlotti@hotmail.com 9 | api_key: 10 | secure: GH97/ZZhIbuYWgrHLpFOwebrhnR6xuwnS4bIFpGNCfqk3xx0VUDTRlXoV/GW/Vgv1XqpuZ1UpIbovbwpTgfpvkgSsu+GMAs140MQh2VQV/eKItjst82YaciBcLoJ5Y1yOytOCeKnnZmE5dVUqRKWEYw+kD1cVBu8NMVcSBAB1qayuFC0iqd/CdYo3L6HCKhWGZY5i33E8L2kYhlag1C/vApebO456HPhsqkmXhXPmCk7ZF8DOSbLCtZ5AWWmJ0FbIb55oU2mPf52cT0g1g/lw8YcpiWpOuYEMbH86HaayFmiryNPgOuk/G+anEmBz+rX2cc2M8Q1A3f0fWd0xrHFya5AmeNiHFHgEZaZhmyWbiWvzVjeJYI3+5UBmeH//YtjIsFnqxRbeuk+6YmT4Ap9rXvSPaW+19XJTOzt0O59n0X6fKTOu3oUgfL8hs8nILRz9WjRDrJUgFqZgZwC6fh/sgwBXpgYTSfPaxIrb7czdwNk4WLsHszQm+PhflVBnzsiyjSNhaJFs5SXCUWhgN/Eao4rYAdpoE+f+HkOgOAOBY2dThETBcnDl7EEnoOc/KlXM7dTUJIVA3pDQ7UiLj+/Fbcc2QFyvbHvMmPNIy0YOgZTDxIXmpizFLbB/UCMvEbd4mCoYgj5X+IX7B/SXLpvoCzKLULlTt4Enl2OZ5Ew9K0= 11 | on: 12 | tags: true 13 | repo: CarMax/react-cursor-zoom 14 | node: 'node' 15 | -------------------------------------------------------------------------------- /docs/app.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function n(r){if(t[r])return t[r].exports;var l=t[r]={i:r,l:!1,exports:{}};return e[r].call(l.exports,l,l.exports,n),l.l=!0,l.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)n.d(r,l,function(t){return e[t]}.bind(null,l));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t,n){e.exports=n(9)()},function(e,t,n){"use strict";e.exports=n(5)},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(6)},function(e,t,n){"use strict"; 2 | /* 3 | object-assign 4 | (c) Sindre Sorhus 5 | @license MIT 6 | */var r=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,u=o(e),c=1;cO.length&&O.push(e)}function I(e,t,n){return null==e?0:function e(t,n,r,l){var a=typeof t;"undefined"!==a&&"boolean"!==a||(t=null);var u=!1;if(null===t)u=!0;else switch(a){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case o:u=!0}}if(u)return r(l,t,""===n?"."+M(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c