@ossy/connected-components 0.0.1-alpha → 0.0.1-beta

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/.storybook/main.js +19 -0
  2. package/.storybook/preview.js +13 -0
  3. package/build/cjs/index.js +656 -0
  4. package/build/esm/index.js +638 -0
  5. package/package.json +49 -13
  6. package/rollup.config.js +35 -0
  7. package/src/app/App.jsx +29 -0
  8. package/src/app/App.stories.jsx +36 -0
  9. package/src/app/AppSettings.jsx +22 -0
  10. package/src/app/index.js +3 -0
  11. package/src/app/useAnalytics.jsx +18 -0
  12. package/src/index.js +11 -0
  13. package/src/layout/Layout.jsx +25 -0
  14. package/src/layout/Layout.stories.jsx +16 -0
  15. package/src/layout/index.js +1 -0
  16. package/src/ossybot/Ossybot.jsx +67 -0
  17. package/src/ossybot/Ossybot.stories.jsx +26 -0
  18. package/src/ossybot/index.js +1 -0
  19. package/src/page/Page.jsx +33 -0
  20. package/src/page/Page.stories.jsx +17 -0
  21. package/src/page/index.js +1 -0
  22. package/src/page-data-loader/PageDataLoader.jsx +90 -0
  23. package/src/page-data-loader/PageDataLoader.stories.jsx +16 -0
  24. package/src/page-data-loader/index.js +1 -0
  25. package/src/pages-module/PagesModule.jsx +8 -0
  26. package/src/pages-module/PagesModule.stories.jsx +17 -0
  27. package/src/pages-module/index.js +1 -0
  28. package/src/resume/Resume.jsx +13 -0
  29. package/src/resume/Resume.stories.jsx +23 -0
  30. package/src/resume/Resume.template.js +80 -0
  31. package/src/resume/index.js +3 -0
  32. package/src/resume/useResume.js +112 -0
  33. package/src/section/Section.jsx +93 -0
  34. package/src/section/Section.stories.jsx +17 -0
  35. package/src/section/index.js +1 -0
  36. package/src/stories/Button.jsx +39 -0
  37. package/src/stories/Button.stories.js +49 -0
  38. package/src/stories/Configure.mdx +364 -0
  39. package/src/stories/Header.jsx +56 -0
  40. package/src/stories/Header.stories.js +29 -0
  41. package/src/stories/Page.jsx +69 -0
  42. package/src/stories/Page.stories.js +28 -0
  43. package/src/stories/assets/accessibility.png +0 -0
  44. package/src/stories/assets/accessibility.svg +1 -0
  45. package/src/stories/assets/addon-library.png +0 -0
  46. package/src/stories/assets/assets.png +0 -0
  47. package/src/stories/assets/avif-test-image.avif +0 -0
  48. package/src/stories/assets/context.png +0 -0
  49. package/src/stories/assets/discord.svg +1 -0
  50. package/src/stories/assets/docs.png +0 -0
  51. package/src/stories/assets/figma-plugin.png +0 -0
  52. package/src/stories/assets/github.svg +1 -0
  53. package/src/stories/assets/share.png +0 -0
  54. package/src/stories/assets/styling.png +0 -0
  55. package/src/stories/assets/testing.png +0 -0
  56. package/src/stories/assets/theming.png +0 -0
  57. package/src/stories/assets/tutorials.svg +1 -0
  58. package/src/stories/assets/youtube.svg +1 -0
  59. package/src/stories/button.css +30 -0
  60. package/src/stories/header.css +32 -0
  61. package/src/stories/page.css +68 -0
  62. package/src/theme-editor/ThemeEditor.jsx +132 -0
  63. package/src/theme-editor/ThemeEditor.stories.jsx +16 -0
  64. package/src/theme-editor/index.js +1 -0
  65. package/src/theme-provider/ThemeProvider.jsx +9 -0
  66. package/src/theme-provider/ThemeProvider.stories.jsx +16 -0
  67. package/src/theme-provider/index.js +1 -0
  68. package/src/use-active-page-location/index.js +1 -0
  69. package/src/use-active-page-location/useActivePageLocation.js +54 -0
  70. package/index.cjs.js +0 -1
  71. package/index.esm.js +0 -1
@@ -0,0 +1,68 @@
1
+ .storybook-page {
2
+ margin: 0 auto;
3
+ padding: 48px 20px;
4
+ max-width: 600px;
5
+ color: #333;
6
+ font-size: 14px;
7
+ line-height: 24px;
8
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
9
+ }
10
+
11
+ .storybook-page h2 {
12
+ display: inline-block;
13
+ vertical-align: top;
14
+ margin: 0 0 4px;
15
+ font-weight: 700;
16
+ font-size: 32px;
17
+ line-height: 1;
18
+ }
19
+
20
+ .storybook-page p {
21
+ margin: 1em 0;
22
+ }
23
+
24
+ .storybook-page a {
25
+ color: inherit;
26
+ }
27
+
28
+ .storybook-page ul {
29
+ margin: 1em 0;
30
+ padding-left: 30px;
31
+ }
32
+
33
+ .storybook-page li {
34
+ margin-bottom: 8px;
35
+ }
36
+
37
+ .storybook-page .tip {
38
+ display: inline-block;
39
+ vertical-align: top;
40
+ margin-right: 10px;
41
+ border-radius: 1em;
42
+ background: #e7fdd8;
43
+ padding: 4px 12px;
44
+ color: #357a14;
45
+ font-weight: 700;
46
+ font-size: 11px;
47
+ line-height: 12px;
48
+ }
49
+
50
+ .storybook-page .tip-wrapper {
51
+ margin-top: 40px;
52
+ margin-bottom: 40px;
53
+ font-size: 13px;
54
+ line-height: 20px;
55
+ }
56
+
57
+ .storybook-page .tip-wrapper svg {
58
+ display: inline-block;
59
+ vertical-align: top;
60
+ margin-top: 3px;
61
+ margin-right: 4px;
62
+ width: 12px;
63
+ height: 12px;
64
+ }
65
+
66
+ .storybook-page .tip-wrapper svg path {
67
+ fill: #1ea7fd;
68
+ }
@@ -0,0 +1,132 @@
1
+ import { useState, useMemo, useCallback, useEffect } from 'react'
2
+ import { useResource } from '@ossy/sdk-react'
3
+ import { Overlay, Button, useTheme, View, Text } from '@ossy/design-system'
4
+
5
+ const overlayStyles = {
6
+ background: 'transparent',
7
+ display: 'content',
8
+ pointerEvents: 'none'
9
+ }
10
+
11
+ const blobStyles = {
12
+ boxShadow: '2px 2px 5px hsla(0, 0%, 0%, .2)',
13
+ borderRadius: '999px',
14
+ position: 'absolute',
15
+ right: 'var(--space-m)',
16
+ bottom: 'var(--space-m)',
17
+ cursor: 'pointer',
18
+ transition: 'transform .5s',
19
+ pointerEvents: 'auto',
20
+ padding: 'var(--space-m)'
21
+ }
22
+
23
+ const editorContainerStyles = {
24
+ position: 'absolute',
25
+ right: '0',
26
+ top: '0',
27
+ height: '100%',
28
+ width: '100%',
29
+ display: 'flex',
30
+ justifyContent: 'flex-end',
31
+ alignItems: 'stretch',
32
+ padding: '8px 32px'
33
+ }
34
+
35
+ const editorStyles = {
36
+ width: '100%',
37
+ maxWidth: '350px',
38
+ height: '100%',
39
+ boxShadow: '2px 2px 5px hsla(0, 0%, 0%, .2)',
40
+ padding: '16px 16px 76px 16px',
41
+ overflowX: 'none',
42
+ overflowY: 'auto',
43
+ pointerEvents: 'auto'
44
+ }
45
+
46
+ const ThemeSwitcher = () => {
47
+ const { activeTheme, setTheme, themes } = useTheme()
48
+ return (
49
+ <View gap="s">
50
+ <Text>Theme</Text>
51
+ <View layout="row-wrap" gap="s">
52
+ {
53
+ themes.map(themeName => <Button variant={themeName === activeTheme ? 'tag-active' : 'tag'} onClick={() => setTheme(themeName)}>{themeName}</Button>)
54
+ }
55
+ </View>
56
+ </View>
57
+ )
58
+ }
59
+
60
+ export const ThemeEditor = () => {
61
+ const { updateResourceContent } = useResource('PCX53TaGviq4_8KvK-VOp')
62
+ const [isEditorOpen, setIsEditorOpen] = useState(false)
63
+ const [viewCount, setViewCount] = useState(0)
64
+ // const [theme, temporarilyUpdateTheme] = useTheme()
65
+ const theme = {}
66
+ const temporarilyUpdateTheme = () => {}
67
+
68
+ const toggleStyles = useMemo(() => !isEditorOpen
69
+ ? blobStyles
70
+ : { ...blobStyles, transform: 'rotate(-45deg)' }, [isEditorOpen])
71
+
72
+ const onToggle = useCallback(() => {
73
+ setIsEditorOpen(!isEditorOpen)
74
+ }, [isEditorOpen, setIsEditorOpen])
75
+
76
+ const onThemeChange = (event) => {
77
+
78
+ const name = event.target.dataset.name
79
+ const updatedValue = event.target.value
80
+
81
+ if (!name) return
82
+ if (!updatedValue) return
83
+
84
+ temporarilyUpdateTheme(theme => ({
85
+ ...theme,
86
+ [name]: updatedValue
87
+ }))
88
+
89
+ }
90
+
91
+ const onSaveTheme = event => {
92
+ event.preventDefault()
93
+ updateResourceContent(theme)
94
+ }
95
+
96
+ useEffect(() => {
97
+ if (!isEditorOpen) return
98
+ const views = document.querySelectorAll('[data-view]')
99
+ views.forEach(view => view.style.border = '1px solid red')
100
+ setViewCount(views.length)
101
+ }, [isEditorOpen])
102
+
103
+ return (
104
+ <Overlay isVisible={true} style={overlayStyles}>
105
+
106
+ {
107
+ isEditorOpen && (
108
+ <div style={editorContainerStyles}>
109
+ <View surface="primary" roundness="m" gap="m" style={editorStyles}>
110
+ <View as="form" gap="s" onSubmit={onSaveTheme} onChange={onThemeChange}>
111
+ {Object.entries(theme).map(([name, value]) => (
112
+ <div style={{ marginBottom: '16px' }}>
113
+ <label style={{ display: 'block', fontFamily: 'sans-serif', marginBottom: '4px', fontWeight: 'bold' }}>{name}</label>
114
+ <input value={value} data-name={name} style={{ width: '100%', padding: '4px' }}/>
115
+ </div>
116
+ ))}
117
+ <Button type="submit" variant="cta">
118
+ Save
119
+ </Button>
120
+ </View>
121
+ <ThemeSwitcher/>
122
+ <Text>Views: {viewCount}</Text>
123
+ </View>
124
+ </div>
125
+ )
126
+ }
127
+
128
+ <Button variant="cta" prefix="math-plus" style={toggleStyles} onClick={onToggle} />
129
+
130
+ </Overlay>
131
+ )
132
+ }
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import { ThemeEditor } from './ThemeEditor.jsx'
3
+
4
+ export default {
5
+ title: 'Connected components/ThemeEditor',
6
+ component: ThemeEditor,
7
+ parameters: {
8
+ layout: 'fullscreen',
9
+ workspaceId: '36zDqF0TKZZ5KkJdyg7NH'
10
+ },
11
+ }
12
+
13
+ const Story = props => <ThemeEditor {...props}/>
14
+
15
+ export const Default = Story.bind({})
16
+ Default.args = { }
@@ -0,0 +1 @@
1
+ export * from './ThemeEditor.jsx'
@@ -0,0 +1,9 @@
1
+ import { useResource, AsyncStatus } from '@ossy/sdk-react'
2
+ import { Theme } from '@ossy/design-system'
3
+
4
+ export const ThemeProvider = props => {
5
+ const { status, resource: theme } = useResource('PCX53TaGviq4_8KvK-VOp')
6
+ return status === AsyncStatus.Success
7
+ ? <Theme theme={theme.data} {...props}/>
8
+ : <></>
9
+ }
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import { ThemeProvider } from './ThemeProvider.jsx'
3
+
4
+ export default {
5
+ title: 'Connected components/ThemeProvider',
6
+ component: ThemeProvider,
7
+ parameters: {
8
+ layout: 'fullscreen',
9
+ workspaceId: '36zDqF0TKZZ5KkJdyg7NH'
10
+ },
11
+ }
12
+
13
+ const Story = props => <ThemeProvider {...props}/>
14
+
15
+ export const Default = Story.bind({})
16
+ Default.args = { }
@@ -0,0 +1 @@
1
+ export * from './ThemeProvider.jsx'
@@ -0,0 +1 @@
1
+ export * from './useActivePageLocation.js'
@@ -0,0 +1,54 @@
1
+ import { useAppSettings } from '../app/AppSettings.jsx'
2
+ const appendSlash = string => string[string.length - 1] === '/'
3
+ ? string : `${string}/`
4
+
5
+ const prependSlash = string => string[0] === '/'
6
+ ? string : `/${string}`
7
+
8
+ const padWithSlash = string => appendSlash(prependSlash(string))
9
+
10
+ const Predicates = {
11
+ byLength: desiredLength => route => {
12
+ const routeParts = route.split('/').filter(x => !!x)
13
+ return routeParts.length === desiredLength
14
+ },
15
+ byParamPlaceHolders: activePathname => route => {
16
+ const routeParts = route.split('/').filter(x => !!x).reduce(
17
+ (parts, part) => part.startsWith(':') ? [...parts, '.+?'] : [...parts, part],
18
+ []
19
+ ).join('/')
20
+
21
+ const regex = new RegExp(`^${padWithSlash(routeParts)}$`)
22
+ const passes = regex.test(activePathname)
23
+ return passes
24
+ }
25
+ }
26
+
27
+ export const useActivePageLocation = (path) => {
28
+ console.log('useActivePageLocation path', path)
29
+ const { routes: pages } = useAppSettings()
30
+
31
+ if (!path) return
32
+
33
+ // TODO: this needs tests because I don't think it works right
34
+ const activePathname = path === '' ? '/' : padWithSlash(path)
35
+ const registeredPageRoutes = pages.map(page => padWithSlash(page.path))
36
+ const exactRouteMatch = registeredPageRoutes.find(route => route === activePathname)
37
+ let activePageLocation
38
+
39
+ if (!!exactRouteMatch) {
40
+ activePageLocation = exactRouteMatch
41
+ } else {
42
+ const activePathnameParts = activePathname.split('/').filter(x => !!x)
43
+ const dynamicRouteMatch = registeredPageRoutes.find(route => (
44
+ Predicates.byLength(activePathnameParts.length)(route) && Predicates.byParamPlaceHolders(activePathname)(route)
45
+ ))
46
+
47
+ activePageLocation = dynamicRouteMatch
48
+ }
49
+
50
+ console.log('useActivePageLocation exactRouteMatch', exactRouteMatch)
51
+ console.log('useActivePageLocation activePageLocation', activePageLocation)
52
+
53
+ return activePageLocation
54
+ }
package/index.cjs.js DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../Resume-220e98c1.js"),n=require("react-router-dom"),r=require("@ossy/cms-client-react");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("react-dom"),require("react-markdown"),require("react-syntax-highlighter"),require("react-syntax-highlighter/dist/esm/styles/hljs");var o=a(e),i={},c={},l={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r;"undefined"!=typeof window&&(void 0===window.gtag&&(window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)}),(r=window).gtag.apply(r,t))};e.default=t}(l);var s={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=e||"";r&&(o=e.toString().trim().replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,(function(e,n,r){return n>0&&n+e.length!==r.length&&e.search(t)>-1&&":"!==r.charAt(n-2)&&("-"!==r.charAt(n+e.length)||"-"===r.charAt(n-1))&&r.charAt(n-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)})));a&&(o=function(e){if(function(e){return"string"==typeof e&&-1!==e.indexOf("@")}(e))return console.warn("This arg looks like an email address, redacting."),n;return e}(o));return o};var t=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;var n="REDACTED (Potential Email Address)"}(s),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.GA4=void 0;var t=i(l),n=i(s),r=["eventCategory","eventAction","eventLabel","eventValue","hitType"],a=["title","location"],o=["page","hitType"];function i(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function d(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||m(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){h(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||m(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,b(r.key),r)}}function h(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){var t=function(e,t){if("object"!==u(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==u(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===u(t)?t:String(t)}var _=function(){function e(){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),h(this,"reset",(function(){i.isInitialized=!1,i._testMode=!1,i._currentMeasurementId,i._hasLoadedGA=!1,i._isQueuing=!1,i._queueGtag=[]})),h(this,"_gtag",(function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];i._testMode||i._isQueuing?i._queueGtag.push(n):t.default.apply(void 0,n)})),h(this,"_loadGA",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"https://www.googletagmanager.com/gtag/js";if("undefined"!=typeof window&&"undefined"!=typeof document&&!i._hasLoadedGA){var r=document.createElement("script");r.async=!0,r.src="".concat(n,"?id=").concat(e),t&&r.setAttribute("nonce",t),document.body.appendChild(r),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)},i._hasLoadedGA=!0}})),h(this,"_toGtagOptions",(function(e){if(e){var t={cookieUpdate:"cookie_update",cookieExpires:"cookie_expires",cookieDomain:"cookie_domain",cookieFlags:"cookie_flags",userId:"user_id",clientId:"client_id",anonymizeIp:"anonymize_ip",contentGroup1:"content_group1",contentGroup2:"content_group2",contentGroup3:"content_group3",contentGroup4:"content_group4",contentGroup5:"content_group5",allowAdFeatures:"allow_google_signals",allowAdPersonalizationSignals:"allow_ad_personalization_signals",nonInteraction:"non_interaction",page:"page_path",hitCallback:"event_callback"};return Object.entries(e).reduce((function(e,n){var r=f(n,2),a=r[0],o=r[1];return t[a]?e[t[a]]=o:e[a]=o,e}),{})}})),h(this,"initialize",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Require GA_MEASUREMENT_ID");var n="string"==typeof e?[{trackingId:e}]:e;i._currentMeasurementId=n[0].trackingId;var r=t.gaOptions,a=t.gtagOptions,o=t.nonce,c=t.testMode,l=void 0!==c&&c,s=t.gtagUrl;if(i._testMode=l,l||i._loadGA(i._currentMeasurementId,o,s),i.isInitialized||(i._gtag("js",new Date),n.forEach((function(e){var t=p(p(p({},i._toGtagOptions(p(p({},r),e.gaOptions))),a),e.gtagOptions);Object.keys(t).length?i._gtag("config",e.trackingId,t):i._gtag("config",e.trackingId)}))),i.isInitialized=!0,!l){var u=d(i._queueGtag);for(i._queueGtag=[],i._isQueuing=!1;u.length;){var g=u.shift();i._gtag.apply(i,d(g)),"get"===g[0]&&(i._isQueuing=!0)}}})),h(this,"set",(function(e){e?"object"===u(e)?(0===Object.keys(e).length&&console.warn("empty `fieldsObject` given to .set()"),i._gaCommand("set",e)):console.warn("Expected `fieldsObject` arg to be an Object"):console.warn("`fieldsObject` is required in .set()")})),h(this,"_gaCommandSendEvent",(function(e,t,n,r,a){i._gtag("event",t,p(p({event_category:e,event_label:n,value:r},a&&{non_interaction:a.nonInteraction}),i._toGtagOptions(a)))})),h(this,"_gaCommandSendEventParameters",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if("string"==typeof t[0])i._gaCommandSendEvent.apply(i,d(t.slice(1)));else{var a=t[0],o=a.eventCategory,l=a.eventAction,s=a.eventLabel,u=a.eventValue;a.hitType;var g=c(a,r);i._gaCommandSendEvent(o,l,s,u,g)}})),h(this,"_gaCommandSendTiming",(function(e,t,n,r){i._gtag("event","timing_complete",{name:t,value:n,event_category:e,event_label:r})})),h(this,"_gaCommandSendPageview",(function(e,t){if(t&&Object.keys(t).length){var n=i._toGtagOptions(t),r=n.title,o=n.location,l=c(n,a);i._gtag("event","page_view",p(p(p(p({},e&&{page_path:e}),r&&{page_title:r}),o&&{page_location:o}),l))}else e?i._gtag("event","page_view",{page_path:e}):i._gtag("event","page_view")})),h(this,"_gaCommandSendPageviewParameters",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if("string"==typeof t[0])i._gaCommandSendPageview.apply(i,d(t.slice(1)));else{var r=t[0],a=r.page;r.hitType;var l=c(r,o);i._gaCommandSendPageview(a,l)}})),h(this,"_gaCommandSend",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r="string"==typeof t[0]?t[0]:t[0].hitType;switch(r){case"event":i._gaCommandSendEventParameters.apply(i,t);break;case"pageview":i._gaCommandSendPageviewParameters.apply(i,t);break;case"timing":i._gaCommandSendTiming.apply(i,d(t.slice(1)));break;case"screenview":case"transaction":case"item":case"social":case"exception":console.warn("Unsupported send command: ".concat(r));break;default:console.warn("Send command doesn't exist: ".concat(r))}})),h(this,"_gaCommandSet",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&(t[0]=h({},t[0],t[1])),i._gtag("set",i._toGtagOptions(t[0]))})),h(this,"_gaCommand",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];switch(e){case"send":i._gaCommandSend.apply(i,n);break;case"set":i._gaCommandSet.apply(i,n);break;default:console.warn("Command doesn't exist: ".concat(e))}})),h(this,"ga",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if("string"==typeof t[0])i._gaCommand.apply(i,t);else{var r=t[0];i._gtag("get",i._currentMeasurementId,"client_id",(function(e){i._isQueuing=!1;var t=i._queueGtag;for(r({get:function(t){return"clientId"===t?e:"trackingId"===t?i._currentMeasurementId:"apiVersion"===t?"1":void 0}});t.length;){var n=t.shift();i._gtag.apply(i,d(n))}})),i._isQueuing=!0}return i.ga})),h(this,"event",(function(e,t){if("string"==typeof e)i._gtag("event",e,i._toGtagOptions(t));else{var r=e.action,a=e.category,o=e.label,c=e.value,l=e.nonInteraction,s=e.transport;if(!a||!r)return void console.warn("args.category AND args.action are required in event()");var u={hitType:"event",eventCategory:(0,n.default)(a),eventAction:(0,n.default)(r)};o&&(u.eventLabel=(0,n.default)(o)),void 0!==c&&("number"!=typeof c?console.warn("Expected `args.value` arg to be a Number."):u.eventValue=c),void 0!==l&&("boolean"!=typeof l?console.warn("`args.nonInteraction` must be a boolean."):u.nonInteraction=l),void 0!==s&&("string"!=typeof s?console.warn("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(s)&&console.warn("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),u.transport=s)),i._gaCommand("send",u)}})),h(this,"send",(function(e){i._gaCommand("send",e)})),this.reset()}var i,l,s;return i=e,l=[{key:"gtag",value:function(){this._gtag.apply(this,arguments)}}],l&&v(i.prototype,l),s&&v(i,s),Object.defineProperty(i,"prototype",{writable:!1}),e}();e.GA4=_;var w=new _;e.default=w}(c),function(e){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.ReactGAImplementation=void 0;var n=function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!==t(e)&&"function"!=typeof e)return{default:e};var a=r(n);if(a&&a.has(e))return a.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,a&&a.set(e,o);return o}(c);function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var a=n.GA4;e.ReactGAImplementation=a;var o=n.default;e.default=o}(i);var u=t.getDefaultExportFromCjs(i);const d=({workspaceId:a,theme:i,themes:c,gaId:l,_apiUrl:s})=>{const d=n.useNavigate();e.useEffect((()=>{l&&(u.initialize(l),u.send({hitType:"pageview",page:window.location.pathname}))}),[l]);return o.default.createElement(t.Theme,{theme:i,themes:c},o.default.createElement(r.WorkspaceProvider,{workspaceId:a,_apiUrl:s},o.default.createElement("div",{onClick:e=>{if("A"!==e.target.tagName)return;const t=e.target.getAttribute("href");!(e.target.hasAttribute("target")||(t||"").includes("."))&&t&&(event.preventDefault(),l&&u.send({hitType:"pageview",page:t}),d(t))},style:{display:"contents"}},o.default.createElement(n.Outlet,null))))},g={sv:{tags:"Erfarenhet med",work:"Arbete",projects:"Projekt",education:"Utbildning",other:"Övrigt",download:"Ladda ner",all:"Alla"},en:{tags:"Experience with",work:"Work",projects:"Projects",education:"Education",other:"Other",download:"Download",all:"All"}},p=e=>{const t=e?.find((e=>e.type.startsWith("image/"))),{id:n,content:r}=e?.find((e=>"resume-summary"===e.type))||{content:{}},a={id:n,name:r.Name||r["Consultant Name"],role:r.Role,image:t?.content?.src,summary:r.Summary,tags:r?.Tags?.split(","),links:[]};return r.Mobile&&a.links.push({icon:"Call",label:r.Mobile}),r.Email&&a.links.push({icon:"Email",label:r.Email,href:`mailto:${r.Email}`}),r.Website&&a.links.push({icon:"Website",label:r.Website.replace("https://","").replace("http://",""),href:r.Website,target:"_blank"}),a},f=e=>e.filter((e=>"resume-experience"===e.type)).map((e=>({id:e.id,title:e.content.Title,subTitle:e.content["Sub Title"],date:e.content.Date,description:e.content.Description,website:e.content.Website,github:e.content.GitHub,tags:e.content?.Tags?.split(",")?.map((e=>e.trim())).filter((e=>!!e)),typeOfExperience:e.content["Type of experience"]}))),m=e=>{const{status:t,resources:n}=r.useResources(e);return{status:t,translations:g.en,profile:p(n),experiences:f(n)}};exports.App=({workspaceId:e,theme:t,themes:r,routes:a=[],gaId:i,_apiUrl:c})=>{const l=[{path:"/",element:o.default.createElement(d,{gaId:i,theme:t,themes:r,workspaceId:e,_apiUrl:c}),children:a.map((e=>"/"!==e.path||"/"===e.path&&e.children?e:{...e,index:!0}))}],s=global.__IS_STORYBOOK__?n.createMemoryRouter:n.createBrowserRouter;return o.default.createElement(n.RouterProvider,{router:s(l)})},exports.ConnectedResume=({path:e,...n})=>{const r=m(e);return"Success"===r.status?o.default.createElement(t.Resume,t._extends({},r,{profileCardVariant:"resume"},n)):o.default.createElement(o.default.Fragment,null)},exports.useConnectedResume=m;
package/index.esm.js DELETED
@@ -1 +0,0 @@
1
- import e,{useEffect as t}from"react";import{g as n,T as r,R as a,_ as o}from"../Resume-23a55554.js";import{RouterProvider as i,useNavigate as c,Outlet as l,createMemoryRouter as s,createBrowserRouter as u}from"react-router-dom";import{WorkspaceProvider as g,useResources as p}from"@ossy/cms-client-react";import"react-dom";import"react-markdown";import"react-syntax-highlighter";import"react-syntax-highlighter/dist/esm/styles/hljs";var d={},f={},m={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r;"undefined"!=typeof window&&(void 0===window.gtag&&(window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)}),(r=window).gtag.apply(r,t))};e.default=t}(m);var y={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=e||"";r&&(o=e.toString().trim().replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,(function(e,n,r){return n>0&&n+e.length!==r.length&&e.search(t)>-1&&":"!==r.charAt(n-2)&&("-"!==r.charAt(n+e.length)||"-"===r.charAt(n-1))&&r.charAt(n-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)})));a&&(o=function(e){if(function(e){return"string"==typeof e&&-1!==e.indexOf("@")}(e))return console.warn("This arg looks like an email address, redacting."),n;return e}(o));return o};var t=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;var n="REDACTED (Potential Email Address)"}(y),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.GA4=void 0;var t=i(m),n=i(y),r=["eventCategory","eventAction","eventLabel","eventValue","hitType"],a=["title","location"],o=["page","hitType"];function i(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function s(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){h(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||d(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,b(r.key),r)}}function h(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e){var t=function(e,t){if("object"!==l(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===l(t)?t:String(t)}var _=function(){function e(){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),h(this,"reset",(function(){i.isInitialized=!1,i._testMode=!1,i._currentMeasurementId,i._hasLoadedGA=!1,i._isQueuing=!1,i._queueGtag=[]})),h(this,"_gtag",(function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];i._testMode||i._isQueuing?i._queueGtag.push(n):t.default.apply(void 0,n)})),h(this,"_loadGA",(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"https://www.googletagmanager.com/gtag/js";if("undefined"!=typeof window&&"undefined"!=typeof document&&!i._hasLoadedGA){var r=document.createElement("script");r.async=!0,r.src="".concat(n,"?id=").concat(e),t&&r.setAttribute("nonce",t),document.body.appendChild(r),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)},i._hasLoadedGA=!0}})),h(this,"_toGtagOptions",(function(e){if(e){var t={cookieUpdate:"cookie_update",cookieExpires:"cookie_expires",cookieDomain:"cookie_domain",cookieFlags:"cookie_flags",userId:"user_id",clientId:"client_id",anonymizeIp:"anonymize_ip",contentGroup1:"content_group1",contentGroup2:"content_group2",contentGroup3:"content_group3",contentGroup4:"content_group4",contentGroup5:"content_group5",allowAdFeatures:"allow_google_signals",allowAdPersonalizationSignals:"allow_ad_personalization_signals",nonInteraction:"non_interaction",page:"page_path",hitCallback:"event_callback"};return Object.entries(e).reduce((function(e,n){var r=p(n,2),a=r[0],o=r[1];return t[a]?e[t[a]]=o:e[a]=o,e}),{})}})),h(this,"initialize",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Require GA_MEASUREMENT_ID");var n="string"==typeof e?[{trackingId:e}]:e;i._currentMeasurementId=n[0].trackingId;var r=t.gaOptions,a=t.gtagOptions,o=t.nonce,c=t.testMode,l=void 0!==c&&c,u=t.gtagUrl;if(i._testMode=l,l||i._loadGA(i._currentMeasurementId,o,u),i.isInitialized||(i._gtag("js",new Date),n.forEach((function(e){var t=g(g(g({},i._toGtagOptions(g(g({},r),e.gaOptions))),a),e.gtagOptions);Object.keys(t).length?i._gtag("config",e.trackingId,t):i._gtag("config",e.trackingId)}))),i.isInitialized=!0,!l){var p=s(i._queueGtag);for(i._queueGtag=[],i._isQueuing=!1;p.length;){var d=p.shift();i._gtag.apply(i,s(d)),"get"===d[0]&&(i._isQueuing=!0)}}})),h(this,"set",(function(e){e?"object"===l(e)?(0===Object.keys(e).length&&console.warn("empty `fieldsObject` given to .set()"),i._gaCommand("set",e)):console.warn("Expected `fieldsObject` arg to be an Object"):console.warn("`fieldsObject` is required in .set()")})),h(this,"_gaCommandSendEvent",(function(e,t,n,r,a){i._gtag("event",t,g(g({event_category:e,event_label:n,value:r},a&&{non_interaction:a.nonInteraction}),i._toGtagOptions(a)))})),h(this,"_gaCommandSendEventParameters",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if("string"==typeof t[0])i._gaCommandSendEvent.apply(i,s(t.slice(1)));else{var a=t[0],o=a.eventCategory,l=a.eventAction,u=a.eventLabel,g=a.eventValue;a.hitType;var p=c(a,r);i._gaCommandSendEvent(o,l,u,g,p)}})),h(this,"_gaCommandSendTiming",(function(e,t,n,r){i._gtag("event","timing_complete",{name:t,value:n,event_category:e,event_label:r})})),h(this,"_gaCommandSendPageview",(function(e,t){if(t&&Object.keys(t).length){var n=i._toGtagOptions(t),r=n.title,o=n.location,l=c(n,a);i._gtag("event","page_view",g(g(g(g({},e&&{page_path:e}),r&&{page_title:r}),o&&{page_location:o}),l))}else e?i._gtag("event","page_view",{page_path:e}):i._gtag("event","page_view")})),h(this,"_gaCommandSendPageviewParameters",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if("string"==typeof t[0])i._gaCommandSendPageview.apply(i,s(t.slice(1)));else{var r=t[0],a=r.page;r.hitType;var l=c(r,o);i._gaCommandSendPageview(a,l)}})),h(this,"_gaCommandSend",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r="string"==typeof t[0]?t[0]:t[0].hitType;switch(r){case"event":i._gaCommandSendEventParameters.apply(i,t);break;case"pageview":i._gaCommandSendPageviewParameters.apply(i,t);break;case"timing":i._gaCommandSendTiming.apply(i,s(t.slice(1)));break;case"screenview":case"transaction":case"item":case"social":case"exception":console.warn("Unsupported send command: ".concat(r));break;default:console.warn("Send command doesn't exist: ".concat(r))}})),h(this,"_gaCommandSet",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&(t[0]=h({},t[0],t[1])),i._gtag("set",i._toGtagOptions(t[0]))})),h(this,"_gaCommand",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];switch(e){case"send":i._gaCommandSend.apply(i,n);break;case"set":i._gaCommandSet.apply(i,n);break;default:console.warn("Command doesn't exist: ".concat(e))}})),h(this,"ga",(function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if("string"==typeof t[0])i._gaCommand.apply(i,t);else{var r=t[0];i._gtag("get",i._currentMeasurementId,"client_id",(function(e){i._isQueuing=!1;var t=i._queueGtag;for(r({get:function(t){return"clientId"===t?e:"trackingId"===t?i._currentMeasurementId:"apiVersion"===t?"1":void 0}});t.length;){var n=t.shift();i._gtag.apply(i,s(n))}})),i._isQueuing=!0}return i.ga})),h(this,"event",(function(e,t){if("string"==typeof e)i._gtag("event",e,i._toGtagOptions(t));else{var r=e.action,a=e.category,o=e.label,c=e.value,l=e.nonInteraction,s=e.transport;if(!a||!r)return void console.warn("args.category AND args.action are required in event()");var u={hitType:"event",eventCategory:(0,n.default)(a),eventAction:(0,n.default)(r)};o&&(u.eventLabel=(0,n.default)(o)),void 0!==c&&("number"!=typeof c?console.warn("Expected `args.value` arg to be a Number."):u.eventValue=c),void 0!==l&&("boolean"!=typeof l?console.warn("`args.nonInteraction` must be a boolean."):u.nonInteraction=l),void 0!==s&&("string"!=typeof s?console.warn("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(s)&&console.warn("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),u.transport=s)),i._gaCommand("send",u)}})),h(this,"send",(function(e){i._gaCommand("send",e)})),this.reset()}var i,u,d;return i=e,u=[{key:"gtag",value:function(){this._gtag.apply(this,arguments)}}],u&&v(i.prototype,u),d&&v(i,d),Object.defineProperty(i,"prototype",{writable:!1}),e}();e.GA4=_;var w=new _;e.default=w}(f),function(e){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.ReactGAImplementation=void 0;var n=function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!==t(e)&&"function"!=typeof e)return{default:e};var a=r(n);if(a&&a.has(e))return a.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var l=i?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(o,c,l):o[c]=e[c]}o.default=e,a&&a.set(e,o);return o}(f);function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var a=n.GA4;e.ReactGAImplementation=a;var o=n.default;e.default=o}(d);var v=n(d);const h=({workspaceId:n,theme:a,themes:o,gaId:i,_apiUrl:s})=>{const u=c();t((()=>{i&&(v.initialize(i),v.send({hitType:"pageview",page:window.location.pathname}))}),[i]);return e.createElement(r,{theme:a,themes:o},e.createElement(g,{workspaceId:n,_apiUrl:s},e.createElement("div",{onClick:e=>{if("A"!==e.target.tagName)return;const t=e.target.getAttribute("href");!(e.target.hasAttribute("target")||(t||"").includes("."))&&t&&(event.preventDefault(),i&&v.send({hitType:"pageview",page:t}),u(t))},style:{display:"contents"}},e.createElement(l,null))))},b=({workspaceId:t,theme:n,themes:r,routes:a=[],gaId:o,_apiUrl:c})=>{const l=[{path:"/",element:e.createElement(h,{gaId:o,theme:n,themes:r,workspaceId:t,_apiUrl:c}),children:a.map((e=>"/"!==e.path||"/"===e.path&&e.children?e:{...e,index:!0}))}],g=global.__IS_STORYBOOK__?s:u;return e.createElement(i,{router:g(l)})},_={sv:{tags:"Erfarenhet med",work:"Arbete",projects:"Projekt",education:"Utbildning",other:"Övrigt",download:"Ladda ner",all:"Alla"},en:{tags:"Experience with",work:"Work",projects:"Projects",education:"Education",other:"Other",download:"Download",all:"All"}},w=e=>{const t=e?.find((e=>e.type.startsWith("image/"))),{id:n,content:r}=e?.find((e=>"resume-summary"===e.type))||{content:{}},a={id:n,name:r.Name||r["Consultant Name"],role:r.Role,image:t?.content?.src,summary:r.Summary,tags:r?.Tags?.split(","),links:[]};return r.Mobile&&a.links.push({icon:"Call",label:r.Mobile}),r.Email&&a.links.push({icon:"Email",label:r.Email,href:`mailto:${r.Email}`}),r.Website&&a.links.push({icon:"Website",label:r.Website.replace("https://","").replace("http://",""),href:r.Website,target:"_blank"}),a},O=e=>e.filter((e=>"resume-experience"===e.type)).map((e=>({id:e.id,title:e.content.Title,subTitle:e.content["Sub Title"],date:e.content.Date,description:e.content.Description,website:e.content.Website,github:e.content.GitHub,tags:e.content?.Tags?.split(",")?.map((e=>e.trim())).filter((e=>!!e)),typeOfExperience:e.content["Type of experience"]}))),j=e=>{const{status:t,resources:n}=p(e);return{status:t,translations:_.en,profile:w(n),experiences:O(n)}},A=({path:t,...n})=>{const r=j(t);return"Success"===r.status?e.createElement(a,o({},r,{profileCardVariant:"resume"},n)):e.createElement(e.Fragment,null)};export{b as App,A as ConnectedResume,j as useConnectedResume};