@inglorious/logo 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.babelrc +6 -0
  2. package/.eslintrc.cjs +33 -0
  3. package/.storybook/main.js +18 -0
  4. package/.storybook/preview.js +14 -0
  5. package/LICENSE.md +1 -0
  6. package/dist/eye.svg +36 -0
  7. package/dist/faces/A.svg +30 -0
  8. package/dist/faces/B.svg +35 -0
  9. package/dist/faces/C.svg +26 -0
  10. package/dist/faces/D.svg +28 -0
  11. package/dist/faces/E.svg +30 -0
  12. package/dist/faces/F.svg +28 -0
  13. package/dist/faces/G.svg +28 -0
  14. package/dist/faces/H.svg +28 -0
  15. package/dist/faces/I.svg +24 -0
  16. package/dist/faces/J.svg +26 -0
  17. package/dist/faces/K.svg +27 -0
  18. package/dist/faces/L.svg +24 -0
  19. package/dist/faces/M.svg +28 -0
  20. package/dist/faces/N.svg +26 -0
  21. package/dist/faces/O.svg +26 -0
  22. package/dist/faces/P.svg +30 -0
  23. package/dist/faces/Q.svg +33 -0
  24. package/dist/faces/R.svg +32 -0
  25. package/dist/faces/S.svg +30 -0
  26. package/dist/faces/T.svg +26 -0
  27. package/dist/faces/U.svg +24 -0
  28. package/dist/faces/V.svg +23 -0
  29. package/dist/faces/W.svg +28 -0
  30. package/dist/faces/X.svg +28 -0
  31. package/dist/faces/Y.svg +25 -0
  32. package/dist/faces/Z.svg +28 -0
  33. package/dist/faces/index.js +188 -0
  34. package/dist/index.js +138 -0
  35. package/dist/logo.js +95 -0
  36. package/dist/logo.module.css +43 -0
  37. package/dist/logo.stories.js +56 -0
  38. package/package.json +51 -0
  39. package/src/eye.svg +36 -0
  40. package/src/faces/A.svg +30 -0
  41. package/src/faces/B.svg +35 -0
  42. package/src/faces/C.svg +26 -0
  43. package/src/faces/D.svg +28 -0
  44. package/src/faces/E.svg +30 -0
  45. package/src/faces/F.svg +28 -0
  46. package/src/faces/G.svg +28 -0
  47. package/src/faces/H.svg +28 -0
  48. package/src/faces/I.svg +24 -0
  49. package/src/faces/J.svg +26 -0
  50. package/src/faces/K.svg +27 -0
  51. package/src/faces/L.svg +24 -0
  52. package/src/faces/M.svg +28 -0
  53. package/src/faces/N.svg +26 -0
  54. package/src/faces/O.svg +26 -0
  55. package/src/faces/P.svg +30 -0
  56. package/src/faces/Q.svg +33 -0
  57. package/src/faces/R.svg +32 -0
  58. package/src/faces/S.svg +30 -0
  59. package/src/faces/T.svg +26 -0
  60. package/src/faces/U.svg +24 -0
  61. package/src/faces/V.svg +23 -0
  62. package/src/faces/W.svg +28 -0
  63. package/src/faces/X.svg +28 -0
  64. package/src/faces/Y.svg +25 -0
  65. package/src/faces/Z.svg +28 -0
  66. package/src/faces/index.js +55 -0
  67. package/src/index.jsx +148 -0
  68. package/src/logo.jsx +101 -0
  69. package/src/logo.module.css +43 -0
  70. package/src/logo.stories.jsx +38 -0
  71. package/vite.config.js +8 -0
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 6 6">
3
+ <style>
4
+ #letter {
5
+ fill: rgb(127, 127, 255);
6
+ fill-opacity: 0.5;
7
+ stroke: rgb(127, 127, 192);
8
+ stroke-width: 0.25;
9
+ stroke-opacity: 0.5;
10
+ }
11
+ </style>
12
+
13
+ <path id="letter" d="
14
+ M 0 0
15
+ L 6 0
16
+ L 6 2
17
+ L 4 1
18
+ L 4 5
19
+ L 6 6
20
+ L 0 6
21
+ L 2 5
22
+ L 2 1
23
+ L 0 2
24
+ Z
25
+ " />
26
+ </svg>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 6 6">
3
+ <style>
4
+ #letter {
5
+ fill: rgb(127, 127, 255);
6
+ fill-opacity: 0.5;
7
+ stroke: rgb(127, 127, 192);
8
+ stroke-width: 0.25;
9
+ stroke-opacity: 0.5;
10
+ }
11
+ </style>
12
+
13
+ <path id="letter" d="
14
+ M 0 0
15
+ L 2 0
16
+ L 2 4
17
+ L 4 4
18
+ L 4 0
19
+ L 6 0
20
+ L 6 6
21
+ L 0 6
22
+ Z
23
+ " />
24
+ </svg>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 6 6">
3
+ <style>
4
+ #letter {
5
+ fill: rgb(127, 127, 255);
6
+ fill-opacity: 0.5;
7
+ stroke: rgb(127, 127, 192);
8
+ stroke-width: 0.25;
9
+ stroke-opacity: 0.5;
10
+ }
11
+ </style>
12
+
13
+ <path id="letter" d="
14
+ M 0 0
15
+ L 2 0
16
+ L 3 4
17
+ L 4 0
18
+ L 6 0
19
+ L 4 6
20
+ L 2 6
21
+ Z
22
+ " />
23
+ </svg>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 6 6">
3
+ <style>
4
+ #letter {
5
+ fill: rgb(127, 127, 255);
6
+ fill-opacity: 0.5;
7
+ stroke: rgb(127, 127, 192);
8
+ stroke-width: 0.25;
9
+ stroke-opacity: 0.5;
10
+ }
11
+ </style>
12
+
13
+ <path id="letter" d="
14
+ M 0 0
15
+ L 2 0
16
+ L 2 3
17
+ L 3 1
18
+ L 4 3
19
+ L 4 0
20
+ L 6 0
21
+ L 6 6
22
+ L 4 6
23
+ L 3 4
24
+ L 2 6
25
+ L 0 6
26
+ Z
27
+ " />
28
+ </svg>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 6 6">
3
+ <style>
4
+ #letter {
5
+ fill: rgb(127, 127, 255);
6
+ fill-opacity: 0.5;
7
+ stroke: rgb(127, 127, 192);
8
+ stroke-width: 0.25;
9
+ stroke-opacity: 0.5;
10
+ }
11
+ </style>
12
+
13
+ <path id="letter" d="
14
+ M 0 0
15
+ L 2 0
16
+ L 3 2
17
+ L 4 0
18
+ L 6 0
19
+ L 4 3
20
+ L 6 6
21
+ L 4 6
22
+ L 3 4
23
+ L 2 6
24
+ L 0 6
25
+ L 2 3
26
+ Z
27
+ " />
28
+ </svg>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 6 6">
3
+ <style>
4
+ #letter {
5
+ fill: rgb(127, 127, 255);
6
+ fill-opacity: 0.5;
7
+ stroke: rgb(127, 127, 192);
8
+ stroke-width: 0.25;
9
+ stroke-opacity: 0.5;
10
+ }
11
+ </style>
12
+
13
+ <path id="letter" d="
14
+ M 0 0
15
+ L 2 0
16
+ L 3 2
17
+ L 4 0
18
+ L 6 0
19
+ L 4 3
20
+ L 4 6
21
+ L 2 6
22
+ L 2 3
23
+ Z
24
+ " />
25
+ </svg>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 6 6">
3
+ <style>
4
+ #letter {
5
+ fill: rgb(127, 127, 255);
6
+ fill-opacity: 0.5;
7
+ stroke: rgb(127, 127, 192);
8
+ stroke-width: 0.25;
9
+ stroke-opacity: 0.5;
10
+ }
11
+ </style>
12
+
13
+ <path id="letter" d="
14
+ M 0 0
15
+ L 6 0
16
+ L 6 1
17
+ L 2 5
18
+ L 4 5
19
+ L 6 4
20
+ L 6 6
21
+ L 0 6
22
+ L 0 5
23
+ L 4 1
24
+ L 2 1
25
+ L 0 2
26
+ Z
27
+ " />
28
+ </svg>
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "A", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _A["default"];
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "B", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _B["default"];
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "C", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _C["default"];
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "D", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _D["default"];
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "E", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _E["default"];
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "F", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _F["default"];
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "G", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _G["default"];
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "H", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _H["default"];
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "I", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _I["default"];
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "J", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _J["default"];
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "K", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _K["default"];
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "L", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _L["default"];
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "M", {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _M["default"];
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "N", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _N["default"];
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "O", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _O["default"];
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "P", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _P["default"];
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "Q", {
103
+ enumerable: true,
104
+ get: function get() {
105
+ return _Q["default"];
106
+ }
107
+ });
108
+ Object.defineProperty(exports, "R", {
109
+ enumerable: true,
110
+ get: function get() {
111
+ return _R["default"];
112
+ }
113
+ });
114
+ Object.defineProperty(exports, "S", {
115
+ enumerable: true,
116
+ get: function get() {
117
+ return _S["default"];
118
+ }
119
+ });
120
+ Object.defineProperty(exports, "T", {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _T["default"];
124
+ }
125
+ });
126
+ Object.defineProperty(exports, "U", {
127
+ enumerable: true,
128
+ get: function get() {
129
+ return _U["default"];
130
+ }
131
+ });
132
+ Object.defineProperty(exports, "V", {
133
+ enumerable: true,
134
+ get: function get() {
135
+ return _V["default"];
136
+ }
137
+ });
138
+ Object.defineProperty(exports, "W", {
139
+ enumerable: true,
140
+ get: function get() {
141
+ return _W["default"];
142
+ }
143
+ });
144
+ Object.defineProperty(exports, "X", {
145
+ enumerable: true,
146
+ get: function get() {
147
+ return _X["default"];
148
+ }
149
+ });
150
+ Object.defineProperty(exports, "Y", {
151
+ enumerable: true,
152
+ get: function get() {
153
+ return _Y["default"];
154
+ }
155
+ });
156
+ Object.defineProperty(exports, "Z", {
157
+ enumerable: true,
158
+ get: function get() {
159
+ return _Z["default"];
160
+ }
161
+ });
162
+ var _A = _interopRequireDefault(require("./A.svg"));
163
+ var _B = _interopRequireDefault(require("./B.svg"));
164
+ var _C = _interopRequireDefault(require("./C.svg"));
165
+ var _D = _interopRequireDefault(require("./D.svg"));
166
+ var _E = _interopRequireDefault(require("./E.svg"));
167
+ var _F = _interopRequireDefault(require("./F.svg"));
168
+ var _G = _interopRequireDefault(require("./G.svg"));
169
+ var _H = _interopRequireDefault(require("./H.svg"));
170
+ var _I = _interopRequireDefault(require("./I.svg"));
171
+ var _J = _interopRequireDefault(require("./J.svg"));
172
+ var _K = _interopRequireDefault(require("./K.svg"));
173
+ var _L = _interopRequireDefault(require("./L.svg"));
174
+ var _M = _interopRequireDefault(require("./M.svg"));
175
+ var _N = _interopRequireDefault(require("./N.svg"));
176
+ var _O = _interopRequireDefault(require("./O.svg"));
177
+ var _P = _interopRequireDefault(require("./P.svg"));
178
+ var _Q = _interopRequireDefault(require("./Q.svg"));
179
+ var _R = _interopRequireDefault(require("./R.svg"));
180
+ var _S = _interopRequireDefault(require("./S.svg"));
181
+ var _T = _interopRequireDefault(require("./T.svg"));
182
+ var _U = _interopRequireDefault(require("./U.svg"));
183
+ var _V = _interopRequireDefault(require("./V.svg"));
184
+ var _W = _interopRequireDefault(require("./W.svg"));
185
+ var _X = _interopRequireDefault(require("./X.svg"));
186
+ var _Y = _interopRequireDefault(require("./Y.svg"));
187
+ var _Z = _interopRequireDefault(require("./Z.svg"));
188
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
package/dist/index.js ADDED
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _react = require("react");
10
+ var _logo = _interopRequireDefault(require("./logo"));
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
17
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
18
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
22
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
24
+ var MAX_HEAD_TILT_X = 400;
25
+ var MAX_HEAD_TILT_Y = 400;
26
+ var HALF = 0.5;
27
+ var FIRST_ITEM = 0;
28
+ var Logo = /*#__PURE__*/(0, _react.memo)(function Logo(_ref) {
29
+ var size = _ref.size,
30
+ faces = _ref.faces,
31
+ isInteractive = _ref.isInteractive,
32
+ preventScroll = _ref.preventScroll;
33
+ var _useState = (0, _react.useState)({
34
+ x: 0,
35
+ y: 0
36
+ }),
37
+ _useState2 = _slicedToArray(_useState, 2),
38
+ coords = _useState2[0],
39
+ setCoords = _useState2[1];
40
+ var logo = (0, _react.useRef)();
41
+ (0, _react.useEffect)(function () {
42
+ if (!isInteractive) {
43
+ return;
44
+ }
45
+ var _logo$current$getBoun = logo.current.getBoundingClientRect(),
46
+ left = _logo$current$getBoun.left,
47
+ top = _logo$current$getBoun.top,
48
+ width = _logo$current$getBoun.width,
49
+ height = _logo$current$getBoun.height;
50
+ var center = {
51
+ x: window.scrollX + left + width * HALF,
52
+ y: window.scrollY + top + height * HALF
53
+ };
54
+ var moveEvent = isTouchDevice() ? "touchmove" : "mousemove";
55
+ document.addEventListener(moveEvent, onMove, {
56
+ passive: !preventScroll
57
+ });
58
+ return function () {
59
+ document.removeEventListener(moveEvent, onMove);
60
+ };
61
+ function onMove(event) {
62
+ var _ref2 = moveEvent.current === "touchmove" ? event.touches[FIRST_ITEM] : event,
63
+ target = _ref2.target,
64
+ pageX = _ref2.pageX,
65
+ pageY = _ref2.pageY;
66
+ if (preventScroll && closestAncestor(target, "logo")) {
67
+ event.preventDefault();
68
+ }
69
+ setCoords({
70
+ x: saturate(pageX - center.x, MAX_HEAD_TILT_X),
71
+ y: saturate(pageY - center.y, MAX_HEAD_TILT_Y)
72
+ });
73
+ }
74
+ }, [isInteractive, preventScroll]);
75
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_logo["default"], _objectSpread(_objectSpread({
76
+ size: size,
77
+ faces: faces
78
+ }, coords), {}, {
79
+ ref: logo
80
+ }));
81
+ });
82
+ Logo.propTypes = {
83
+ size: _propTypes["default"].number.isRequired,
84
+ faces: _propTypes["default"].arrayOf(_propTypes["default"].shape({
85
+ image: _propTypes["default"].oneOf(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]),
86
+ reverse: _propTypes["default"].bool,
87
+ eye: _propTypes["default"].bool
88
+ }).isRequired).isRequired,
89
+ isInteractive: _propTypes["default"].bool.isRequired,
90
+ preventScroll: _propTypes["default"].bool.isRequired
91
+ };
92
+ Logo.defaultProps = {
93
+ size: 64,
94
+ faces: [{
95
+ image: "I",
96
+ reverse: false,
97
+ eye: true
98
+ }, {
99
+ image: "C",
100
+ reverse: false,
101
+ eye: false
102
+ }],
103
+ isInteractive: false,
104
+ preventScroll: false
105
+ };
106
+ var _default = exports["default"] = Logo;
107
+ function isTouchDevice() {
108
+ if ("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch) {
109
+ return true;
110
+ }
111
+
112
+ // include the 'heartz' as a way to have a non matching mediaQuery to help terminate the join
113
+ // https://git.io/vznFH
114
+ var prefixes = " -webkit- -moz- -o- -ms- ".split(" ");
115
+ var query = ["(", prefixes.join("touch-enabled),("), "heartz", ")"].join("");
116
+ return window.matchMedia(query).matches;
117
+ }
118
+ function saturate(num, limit) {
119
+ if (num < -limit) return -limit;
120
+ if (num > limit) return limit;
121
+ return num;
122
+ }
123
+ function closestAncestor(el, className) {
124
+ var limit = 4;
125
+ var i = 0;
126
+ var closest = el;
127
+ while (closest && i < limit) {
128
+ if (closest.className == null || typeof closest.className.split !== "function") {
129
+ return null;
130
+ }
131
+ var classes = closest.className.split(" ");
132
+ if (classes.includes(className)) {
133
+ return closest;
134
+ }
135
+ closest = closest.parentNode;
136
+ i++;
137
+ }
138
+ }
package/dist/logo.js ADDED
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _react = require("react");
10
+ var _eye = _interopRequireDefault(require("./eye.svg"));
11
+ var faceSvgs = _interopRequireWildcard(require("./faces"));
12
+ var _logoModule = _interopRequireDefault(require("./logo.module.css"));
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
18
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
21
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
22
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
23
+ var MINUS_FORTY_DEGREES = -0.6981;
24
+ var MINUS_FORTY_FIVE_DEGREES = -0.7854;
25
+ var STEP = 0.001;
26
+ var HALF = 0.5;
27
+ var Logo = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef)(function Logo(_ref, ref) {
28
+ var size = _ref.size,
29
+ faces = _ref.faces,
30
+ x = _ref.x,
31
+ y = _ref.y;
32
+ var _faces = _slicedToArray(faces, 2),
33
+ left = _faces[0],
34
+ right = _faces[1];
35
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
36
+ className: _logoModule["default"].logo,
37
+ ref: ref,
38
+ style: {
39
+ "--size": "".concat(size, "px"),
40
+ "--transform": "scaleY(1.2) translateZ(-".concat(size, "px) rotateX(").concat(MINUS_FORTY_DEGREES - STEP * y, "rad)\n rotateY(").concat(MINUS_FORTY_FIVE_DEGREES + STEP * x, "rad)"),
41
+ "--z-translation": "".concat(size * HALF, "px"),
42
+ "--left-face-flip": left.reverse ? "rotateY(180deg);" : "none",
43
+ "--right-face-flip": right.reverse ? "rotateY(180deg);" : "none"
44
+ },
45
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
46
+ className: _logoModule["default"].cube,
47
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
48
+ className: "".concat(_logoModule["default"].face, " ").concat(_logoModule["default"].left),
49
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
50
+ src: faceSvgs[left.image],
51
+ alt: left.image
52
+ }), left.eye && /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
53
+ className: _logoModule["default"].eye,
54
+ src: _eye["default"],
55
+ alt: "left eye"
56
+ })]
57
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
58
+ className: "".concat(_logoModule["default"].face, " ").concat(_logoModule["default"].right),
59
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
60
+ src: faceSvgs[right.image],
61
+ alt: right.image
62
+ }), right.eye && /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
63
+ className: _logoModule["default"].eye,
64
+ src: _eye["default"],
65
+ alt: "right eye"
66
+ })]
67
+ })]
68
+ })
69
+ });
70
+ }));
71
+ Logo.propTypes = {
72
+ size: _propTypes["default"].number.isRequired,
73
+ faces: _propTypes["default"].arrayOf(_propTypes["default"].shape({
74
+ image: _propTypes["default"].oneOf(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]),
75
+ reverse: _propTypes["default"].bool,
76
+ eye: _propTypes["default"].bool
77
+ })).isRequired,
78
+ x: _propTypes["default"].number.isRequired,
79
+ y: _propTypes["default"].number.isRequired
80
+ };
81
+ Logo.defaultProps = {
82
+ size: 64,
83
+ faces: [{
84
+ image: "I",
85
+ reverse: false,
86
+ eye: true
87
+ }, {
88
+ image: "C",
89
+ reverse: false,
90
+ eye: false
91
+ }],
92
+ x: 0,
93
+ y: 0
94
+ };
95
+ var _default = exports["default"] = Logo;
@@ -0,0 +1,43 @@
1
+ .logo {
2
+ width: var(--size);
3
+ perspective: var(--size);
4
+ margin: 0 auto;
5
+ }
6
+
7
+ .cube {
8
+ height: var(--size);
9
+ transform-style: preserve-3d;
10
+ transform: var(--transform);
11
+ transition: ease-out 0.2s;
12
+ }
13
+
14
+ .face {
15
+ position: absolute;
16
+ width: 100%;
17
+ height: 100%;
18
+ transform-origin: bottom center;
19
+ }
20
+
21
+ .face > img {
22
+ position: absolute;
23
+ }
24
+
25
+ .left {
26
+ transform: rotateY(0deg) translateZ(var(--z-translation)) skew(12deg);
27
+ }
28
+
29
+ .right {
30
+ transform: rotateY(90deg) translateZ(var(--z-translation)) skew(-12deg);
31
+ }
32
+
33
+ .right > .eye {
34
+ transform: rotateY(180deg);
35
+ }
36
+
37
+ .left > img:first-of-type {
38
+ transform: var(--left-face-flip);
39
+ }
40
+
41
+ .right > img:first-of-type {
42
+ transform: var(--right-face-flip);
43
+ }