@bigbinary/neeto-molecules 5.3.16 → 5.3.18
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.
- package/dist/BrowserSupport.js +116 -51
- package/dist/BrowserSupport.js.map +1 -1
- package/dist/cjs/BrowserSupport.js +119 -51
- package/dist/cjs/BrowserSupport.js.map +1 -1
- package/dist/cjs/v2/BrowserSupport.js +119 -51
- package/dist/cjs/v2/BrowserSupport.js.map +1 -1
- package/dist/cjs/v2/Engagements.js +9 -6
- package/dist/cjs/v2/Engagements.js.map +1 -1
- package/dist/v2/BrowserSupport.js +116 -51
- package/dist/v2/BrowserSupport.js.map +1 -1
- package/dist/v2/Engagements.js +9 -6
- package/dist/v2/Engagements.js.map +1 -1
- package/package.json +1 -1
- package/types/BrowserSupport.d.ts +128 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Engagements.js","sources":["../../src/v2/components/Engagements/Activity/Icon.jsx","../../src/v2/components/Engagements/Activity/index.jsx","../../src/v2/components/Engagements/Comment/Header.jsx","../../src/v2/components/Engagements/Comment/Reactions.jsx","../../src/v2/components/Engagements/constants.js","../../src/v2/components/Engagements/utils.js","../../src/v2/components/Engagements/Comment/index.jsx","../../src/v2/components/Engagements/index.jsx"],"sourcesContent":["import classNames from \"classnames\";\n\nconst ActivityIcon = ({ icon, unread }) => (\n <div className=\"bg-card relative z-10 mx-0.5 flex-shrink-0 rounded-full\">\n <span\n className={classNames(\n \"nm-activity-node-icon bg-muted text-muted-foreground relative flex h-7 w-7 items-center justify-center rounded-full p-1 [&>svg]:size-4\",\n { \"text-primary bg-primary/10\": unread }\n )}\n >\n {icon}\n {unread && (\n <span className=\"bg-primary absolute -end-0.5 -top-0.5 h-2 w-2 rounded-full\" />\n )}\n </span>\n </div>\n);\n\nexport default ActivityIcon;\n","import { Avatar } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport ActivityIcon from \"./Icon\";\n\nconst Activity = ({\n user,\n icon,\n unread = false,\n className,\n children,\n userIcon,\n}) => (\n <div\n className={classNames(\n \"nm-engagements-node relative -mt-4 flex items-center gap-2 px-4 py-4\",\n \"before:bg-border before:absolute before:start-[31px] before:top-0 before:h-full before:w-0.5 before:content-['']\",\n className\n )}\n >\n <ActivityIcon {...{ icon, unread }} />\n {userIcon || (\n <Avatar\n className=\"!size-[18px] [&_[data-slot=avatar-fallback]]:text-[10px]\"\n size=\"sm\"\n user={{ name: user.name, imageUrl: user.profileImageUrl }}\n />\n )}\n <div className=\"nm-engagements-node__children\">{children}</div>\n </div>\n);\n\nActivity.propTypes = {\n user: PropTypes.shape({ name: PropTypes.string.isRequired }).isRequired,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n unread: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default Activity;\n","import { Avatar, Typography } from \"@bigbinary/neeto-atoms\";\nimport { isPresent } from \"neetocist\";\n\nimport DateFormat from \"../../DateFormat\";\nimport MoreDropdown from \"../../MoreDropdown\";\n\nconst CommentHeader = ({ user, comment, info, actions }) => {\n const avatar = { name: user.name, imageUrl: user.profileImageUrl };\n\n return (\n <div className=\"bg-muted/40 border-border flex items-center justify-between rounded-t-md border-b py-1 ps-4 pe-1\">\n <div className=\"flex min-w-0 flex-grow flex-wrap items-center gap-2\">\n <Avatar size=\"sm\" user={avatar} />\n <Typography as=\"span\" variant=\"body3\" weight=\"medium\">\n {user.name}\n </Typography>\n <Typography as=\"span\" color=\"muted\" variant=\"body3\">\n •\n </Typography>\n {info && (\n <>\n <Typography\n as=\"span\"\n className=\"lowercase\"\n color=\"muted\"\n variant=\"body3\"\n >\n {info}\n </Typography>\n <Typography as=\"span\" color=\"muted\" variant=\"body3\">\n •\n </Typography>\n </>\n )}\n {comment.createdAt && (\n <DateFormat.FromNow\n date={comment.createdAt}\n typographyProps={{ color: \"muted\", variant: \"body3\" }}\n />\n )}\n </div>\n {isPresent(actions) && (\n <MoreDropdown\n dropdownButtonProps={{ className: \"self-start flex-shrink-0\" }}\n dropdownProps={{ position: \"bottom-start\" }}\n menuItems={actions}\n />\n )}\n </div>\n );\n};\n\nexport default CommentHeader;\n","import { memo } from \"react\";\n\nimport { Button, Tooltip } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { findIndexBy } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { collectBy, eqProps, pathEq, prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport EmojiPicker from \"../../EmojiPicker\";\n\nconst findOwnIndex = findIndexBy({ userId: globalProps.user.id });\nconst groupReactions = collectBy(prop(\"unified\"));\n\nconst Reactions = ({ reactions, onAdd, onRemove }) => {\n const { t } = useTranslation();\n const groups = groupReactions(reactions);\n\n const onSelect = emoji => {\n const group = groups.find(pathEq(emoji.unified, [0, \"unified\"]));\n if (group && findOwnIndex(group) >= 0) return;\n onAdd({ ...emoji, emoji: emoji.native });\n };\n\n return (\n <div className=\"mt-3 flex flex-wrap items-center gap-1\">\n <div className=\"bg-muted rounded-full\">\n <EmojiPicker {...{ onSelect }} />\n </div>\n {groups.map(reactionsGroup => {\n const ownIndex = findOwnIndex(reactionsGroup);\n const selected = ownIndex >= 0;\n const reaction = selected\n ? reactionsGroup[ownIndex]\n : reactionsGroup[0];\n\n const names = reactionsGroup\n .map(({ reactor }) =>\n typeof reactor === \"string\" ? reactor : reactor?.name\n )\n .filter(Boolean)\n .join(\", \");\n\n return (\n <Tooltip\n content={t(\"neetoMolecules.engagements.namesReacted\", { names })}\n key={reaction.unified}\n position=\"top\"\n >\n <Button\n aria-pressed={selected}\n size=\"xs\"\n variant=\"ghost\"\n className={classNames(\n \"h-7 rounded-full px-2 text-sm font-normal\",\n {\n \"!bg-muted !hover:bg-muted/80\": selected,\n \"!bg-muted/50\": !selected,\n }\n )}\n onClick={() => (selected ? onRemove : onAdd)(reaction)}\n >\n <span>{reaction.emoji}</span>\n <span>{reactionsGroup.length}</span>\n </Button>\n </Tooltip>\n );\n })}\n </div>\n );\n};\n\nexport default memo(Reactions, eqProps(\"reactions\"));\n","export const ACTIVITY_TYPES = {\n TIMELINE: \"Timeline\",\n FIELD_VALUE: \"FieldValue\",\n TASK: \"Task\",\n ASSIGNEE: \"Assignee\",\n CHECKLIST: \"Checklist\",\n FIELD: \"Field\",\n PROJECT: \"Project\",\n COMMENT: \"Comment\",\n DOCUMENT: \"Document\",\n CHAT_MESSAGE: \"ChatMessage\",\n MESSAGE: \"Message\",\n SECTION: \"Section\",\n PROJECT_MEMBER: \"ProjectMember\",\n PULL_REQUEST: \"NeetoGithubEngine::PullRequest\",\n};\n\nexport const ENGAGEMENT_TYPES = {\n COMMENT: \"comment\",\n ACTIVITY: \"activity\",\n};\n","import { ENGAGEMENT_TYPES } from \"./constants\";\n\nexport const createCommentElementId = comment =>\n `nm-engagement-comment--${comment.id}`;\n\nexport const defaultMatchType = engagement => {\n if (engagement.commenter) return ENGAGEMENT_TYPES.COMMENT;\n else if (engagement.creator) return ENGAGEMENT_TYPES.ACTIVITY;\n\n return null;\n};\n","import { forwardRef } from \"react\";\n\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport CommentHeader from \"./Header\";\nimport Reactions from \"./Reactions\";\n\nimport { createCommentElementId } from \"../utils\";\n\nconst Comment = forwardRef(\n (\n {\n user,\n comment,\n reactions,\n info,\n actions,\n className,\n children,\n onAddReaction,\n onRemoveReaction,\n },\n ref\n ) => (\n <div\n {...{ ref }}\n id={createCommentElementId(comment)}\n className={classNames(\n \"nm-comments-node bg-card border-border relative mb-4 w-full rounded-md border\",\n \"before:bg-border before:absolute before:start-[30px] before:top-[calc(100%+1px)] before:h-4 before:w-0.5 before:content-['']\",\n className\n )}\n >\n <CommentHeader {...{ actions, comment, info, user }} />\n <div className=\"nm-comments-node__inner p-4\">\n {children}\n {reactions !== false && (\n <Reactions\n {...{ reactions }}\n onAdd={onAddReaction}\n onRemove={onRemoveReaction}\n />\n )}\n </div>\n </div>\n )\n);\n\nComment.displayName = \"Comment\";\nComment.propTypes = {\n user: PropTypes.shape({ name: PropTypes.string.isRequired }).isRequired,\n comment: PropTypes.shape({\n id: PropTypes.string.isRequired,\n createdAt: PropTypes.string,\n }).isRequired,\n reactions: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n info: PropTypes.string,\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n isVisible: PropTypes.bool,\n key: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n })\n ),\n className: PropTypes.string,\n onAddReaction: PropTypes.func,\n onRemoveReaction: PropTypes.func,\n};\n\nexport default Comment;\n","import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport Activity from \"./Activity\";\nimport Comment from \"./Comment\";\nimport { ENGAGEMENT_TYPES } from \"./constants\";\nimport { defaultMatchType } from \"./utils\";\n\nconst Engagements = ({\n data,\n isActivitiesEnabled = false,\n matchType = defaultMatchType,\n renderComment,\n renderActivity,\n}) => {\n const rendererHashmap = {\n [ENGAGEMENT_TYPES.COMMENT]: renderComment,\n [ENGAGEMENT_TYPES.ACTIVITY]: isActivitiesEnabled ? renderActivity : noop,\n };\n\n return (\n <>\n {data.map((engagement, index) => {\n const type = matchType(engagement);\n const renderer = rendererHashmap[type];\n if (!renderer) return null;\n\n return (\n <React.Fragment key={engagement.id}>\n {renderer(engagement, index)}\n </React.Fragment>\n );\n })}\n </>\n );\n};\n\nEngagements.displayName = \"Engagements\";\nEngagements.Comment = Comment;\nEngagements.Activity = Activity;\nEngagements.TYPES = ENGAGEMENT_TYPES;\n\nEngagements.propTypes = {\n data: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.string.isRequired }))\n .isRequired,\n isActivitiesEnabled: PropTypes.bool,\n matchType: PropTypes.func,\n renderComment: PropTypes.func.isRequired,\n renderActivity: PropTypes.func.isRequired,\n};\n\nexport default Engagements;\n"],"names":["ActivityIcon","_ref","icon","unread","_jsx","className","children","_jsxs","classNames","Activity","user","_ref$unread","userIcon","Avatar","size","name","imageUrl","profileImageUrl","CommentHeader","comment","info","actions","avatar","Typography","as","variant","weight","color","_Fragment","createdAt","DateFormat","FromNow","date","typographyProps","isPresent","MoreDropdown","dropdownButtonProps","dropdownProps","position","menuItems","findOwnIndex","findIndexBy","userId","globalProps","id","groupReactions","collectBy","prop","Reactions","reactions","onAdd","onRemove","_useTranslation","useTranslation","t","groups","onSelect","emoji","group","find","pathEq","unified","_objectSpread","EmojiPicker","map","reactionsGroup","ownIndex","selected","reaction","names","_ref2","reactor","filter","Boolean","join","Tooltip","content","Button","onClick","length","memo","eqProps","ENGAGEMENT_TYPES","COMMENT","ACTIVITY","createCommentElementId","concat","defaultMatchType","engagement","commenter","creator","Comment","forwardRef","ref","onAddReaction","onRemoveReaction","displayName","propTypes","PropTypes","shape","string","isRequired","oneOfType","array","bool","arrayOf","isVisible","key","label","func","Engagements","data","_ref$isActivitiesEnab","isActivitiesEnabled","_ref$matchType","matchType","renderComment","renderActivity","rendererHashmap","_defineProperty","noop","index","type","renderer","React","Fragment","TYPES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Engagements.js","sources":["../../src/v2/components/Engagements/Activity/Icon.jsx","../../src/v2/components/Engagements/Activity/index.jsx","../../src/v2/components/Engagements/Comment/Header.jsx","../../src/v2/components/Engagements/Comment/Reactions.jsx","../../src/v2/components/Engagements/constants.js","../../src/v2/components/Engagements/utils.js","../../src/v2/components/Engagements/Comment/index.jsx","../../src/v2/components/Engagements/index.jsx"],"sourcesContent":["import classNames from \"classnames\";\n\nconst ActivityIcon = ({ icon, unread }) => (\n <div className=\"bg-card relative z-10 mx-0.5 flex-shrink-0 rounded-full\">\n <span\n className={classNames(\n \"nm-activity-node-icon bg-muted text-muted-foreground relative flex h-7 w-7 items-center justify-center rounded-full p-1 [&>svg]:size-4\",\n { \"text-primary bg-primary/10\": unread }\n )}\n >\n {icon}\n {unread && (\n <span className=\"bg-primary absolute -end-0.5 -top-0.5 h-2 w-2 rounded-full\" />\n )}\n </span>\n </div>\n);\n\nexport default ActivityIcon;\n","import { Avatar } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport ActivityIcon from \"./Icon\";\n\nconst Activity = ({\n user,\n icon,\n unread = false,\n className,\n children,\n userIcon,\n}) => (\n <div\n className={classNames(\n \"nm-engagements-node relative -mt-4 flex items-center gap-2 px-4 py-4\",\n \"before:bg-border before:absolute before:start-[31px] before:top-0 before:h-full before:w-0.5 before:content-['']\",\n className\n )}\n >\n <ActivityIcon {...{ icon, unread }} />\n {userIcon || (\n <Avatar\n className=\"!size-[18px] [&_[data-slot=avatar-fallback]]:text-[10px]\"\n size=\"sm\"\n user={{ name: user.name, imageUrl: user.profileImageUrl }}\n />\n )}\n <div className=\"nm-engagements-node__children\">{children}</div>\n </div>\n);\n\nActivity.propTypes = {\n user: PropTypes.shape({ name: PropTypes.string.isRequired }).isRequired,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n unread: PropTypes.bool,\n className: PropTypes.string,\n};\n\nexport default Activity;\n","import { Avatar, Typography } from \"@bigbinary/neeto-atoms\";\nimport { isPresent } from \"neetocist\";\n\nimport DateFormat from \"../../DateFormat\";\nimport MoreDropdown from \"../../MoreDropdown\";\n\nconst CommentHeader = ({ user, comment, info, actions }) => {\n const avatar = { name: user.name, imageUrl: user.profileImageUrl };\n\n return (\n <div className=\"bg-muted/40 border-border flex items-center justify-between rounded-t-md border-b py-1 ps-4 pe-1\">\n <div className=\"flex min-w-0 flex-grow flex-wrap items-center gap-2\">\n <Avatar size=\"sm\" user={avatar} />\n <Typography as=\"span\" variant=\"body3\" weight=\"medium\">\n {user.name}\n </Typography>\n <Typography as=\"span\" color=\"muted\" variant=\"body3\">\n •\n </Typography>\n {info && (\n <>\n <Typography\n as=\"span\"\n className=\"lowercase\"\n color=\"muted\"\n variant=\"body3\"\n >\n {info}\n </Typography>\n <Typography as=\"span\" color=\"muted\" variant=\"body3\">\n •\n </Typography>\n </>\n )}\n {comment.createdAt && (\n <DateFormat.FromNow\n date={comment.createdAt}\n typographyProps={{ color: \"muted\", variant: \"body3\" }}\n />\n )}\n </div>\n {isPresent(actions) && (\n <MoreDropdown\n dropdownButtonProps={{ className: \"self-start flex-shrink-0\" }}\n dropdownProps={{ position: \"bottom-start\" }}\n menuItems={actions}\n />\n )}\n </div>\n );\n};\n\nexport default CommentHeader;\n","import { memo } from \"react\";\n\nimport { Button, Tooltip } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { findIndexBy } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { collectBy, eqProps, pathEq, prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport EmojiPicker from \"../../EmojiPicker\";\n\nconst findOwnIndex = findIndexBy({ userId: globalProps.user.id });\nconst groupReactions = collectBy(prop(\"unified\"));\n\nconst Reactions = ({ reactions, onAdd, onRemove }) => {\n const { t } = useTranslation();\n const groups = groupReactions(reactions);\n\n const onSelect = emoji => {\n const group = groups.find(pathEq(emoji.unified, [0, \"unified\"]));\n if (group && findOwnIndex(group) >= 0) return;\n onAdd({ ...emoji, emoji: emoji.native });\n };\n\n return (\n <div className=\"mt-3 flex flex-wrap items-center gap-1\">\n <div className=\"bg-muted rounded-full\">\n <EmojiPicker {...{ onSelect }} />\n </div>\n {groups.map(reactionsGroup => {\n const ownIndex = findOwnIndex(reactionsGroup);\n const selected = ownIndex >= 0;\n const reaction = selected\n ? reactionsGroup[ownIndex]\n : reactionsGroup[0];\n\n const names = reactionsGroup\n .map(({ reactor }) =>\n typeof reactor === \"string\" ? reactor : reactor?.name\n )\n .filter(Boolean)\n .join(\", \");\n\n return (\n <Tooltip\n content={t(\"neetoMolecules.engagements.namesReacted\", { names })}\n key={reaction.unified}\n position=\"top\"\n >\n <Button\n aria-pressed={selected}\n size=\"xs\"\n variant=\"ghost\"\n className={classNames(\n \"h-7 rounded-full px-2 text-sm font-normal\",\n {\n \"!bg-muted !hover:bg-muted/80\": selected,\n \"!bg-muted/50\": !selected,\n }\n )}\n onClick={() => (selected ? onRemove : onAdd)(reaction)}\n >\n <span className=\"flex items-center gap-x-1\">\n <span>{reaction.emoji}</span>\n <span>{reactionsGroup.length}</span>\n </span>\n </Button>\n </Tooltip>\n );\n })}\n </div>\n );\n};\n\nexport default memo(Reactions, eqProps(\"reactions\"));\n","export const ACTIVITY_TYPES = {\n TIMELINE: \"Timeline\",\n FIELD_VALUE: \"FieldValue\",\n TASK: \"Task\",\n ASSIGNEE: \"Assignee\",\n CHECKLIST: \"Checklist\",\n FIELD: \"Field\",\n PROJECT: \"Project\",\n COMMENT: \"Comment\",\n DOCUMENT: \"Document\",\n CHAT_MESSAGE: \"ChatMessage\",\n MESSAGE: \"Message\",\n SECTION: \"Section\",\n PROJECT_MEMBER: \"ProjectMember\",\n PULL_REQUEST: \"NeetoGithubEngine::PullRequest\",\n};\n\nexport const ENGAGEMENT_TYPES = {\n COMMENT: \"comment\",\n ACTIVITY: \"activity\",\n};\n","import { ENGAGEMENT_TYPES } from \"./constants\";\n\nexport const createCommentElementId = comment =>\n `nm-engagement-comment--${comment.id}`;\n\nexport const defaultMatchType = engagement => {\n if (engagement.commenter) return ENGAGEMENT_TYPES.COMMENT;\n else if (engagement.creator) return ENGAGEMENT_TYPES.ACTIVITY;\n\n return null;\n};\n","import { forwardRef } from \"react\";\n\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport CommentHeader from \"./Header\";\nimport Reactions from \"./Reactions\";\n\nimport { createCommentElementId } from \"../utils\";\n\nconst Comment = forwardRef(\n (\n {\n user,\n comment,\n reactions,\n info,\n actions,\n className,\n children,\n onAddReaction,\n onRemoveReaction,\n },\n ref\n ) => (\n <div\n {...{ ref }}\n id={createCommentElementId(comment)}\n className={classNames(\n \"nm-comments-node bg-card border-border relative mb-4 w-full rounded-md border\",\n \"before:bg-border before:absolute before:start-[30px] before:top-[calc(100%+1px)] before:h-4 before:w-0.5 before:content-['']\",\n className\n )}\n >\n <CommentHeader {...{ actions, comment, info, user }} />\n <div className=\"nm-comments-node__inner p-4\">\n {children}\n {reactions !== false && (\n <Reactions\n {...{ reactions }}\n onAdd={onAddReaction}\n onRemove={onRemoveReaction}\n />\n )}\n </div>\n </div>\n )\n);\n\nComment.displayName = \"Comment\";\nComment.propTypes = {\n user: PropTypes.shape({ name: PropTypes.string.isRequired }).isRequired,\n comment: PropTypes.shape({\n id: PropTypes.string.isRequired,\n createdAt: PropTypes.string,\n }).isRequired,\n reactions: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n info: PropTypes.string,\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n isVisible: PropTypes.bool,\n key: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n })\n ),\n className: PropTypes.string,\n onAddReaction: PropTypes.func,\n onRemoveReaction: PropTypes.func,\n};\n\nexport default Comment;\n","import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport Activity from \"./Activity\";\nimport Comment from \"./Comment\";\nimport { ENGAGEMENT_TYPES } from \"./constants\";\nimport { defaultMatchType } from \"./utils\";\n\nconst Engagements = ({\n data,\n isActivitiesEnabled = false,\n matchType = defaultMatchType,\n renderComment,\n renderActivity,\n}) => {\n const rendererHashmap = {\n [ENGAGEMENT_TYPES.COMMENT]: renderComment,\n [ENGAGEMENT_TYPES.ACTIVITY]: isActivitiesEnabled ? renderActivity : noop,\n };\n\n return (\n <>\n {data.map((engagement, index) => {\n const type = matchType(engagement);\n const renderer = rendererHashmap[type];\n if (!renderer) return null;\n\n return (\n <React.Fragment key={engagement.id}>\n {renderer(engagement, index)}\n </React.Fragment>\n );\n })}\n </>\n );\n};\n\nEngagements.displayName = \"Engagements\";\nEngagements.Comment = Comment;\nEngagements.Activity = Activity;\nEngagements.TYPES = ENGAGEMENT_TYPES;\n\nEngagements.propTypes = {\n data: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.string.isRequired }))\n .isRequired,\n isActivitiesEnabled: PropTypes.bool,\n matchType: PropTypes.func,\n renderComment: PropTypes.func.isRequired,\n renderActivity: PropTypes.func.isRequired,\n};\n\nexport default Engagements;\n"],"names":["ActivityIcon","_ref","icon","unread","_jsx","className","children","_jsxs","classNames","Activity","user","_ref$unread","userIcon","Avatar","size","name","imageUrl","profileImageUrl","CommentHeader","comment","info","actions","avatar","Typography","as","variant","weight","color","_Fragment","createdAt","DateFormat","FromNow","date","typographyProps","isPresent","MoreDropdown","dropdownButtonProps","dropdownProps","position","menuItems","findOwnIndex","findIndexBy","userId","globalProps","id","groupReactions","collectBy","prop","Reactions","reactions","onAdd","onRemove","_useTranslation","useTranslation","t","groups","onSelect","emoji","group","find","pathEq","unified","_objectSpread","EmojiPicker","map","reactionsGroup","ownIndex","selected","reaction","names","_ref2","reactor","filter","Boolean","join","Tooltip","content","Button","onClick","length","memo","eqProps","ENGAGEMENT_TYPES","COMMENT","ACTIVITY","createCommentElementId","concat","defaultMatchType","engagement","commenter","creator","Comment","forwardRef","ref","onAddReaction","onRemoveReaction","displayName","propTypes","PropTypes","shape","string","isRequired","oneOfType","array","bool","arrayOf","isVisible","key","label","func","Engagements","data","_ref$isActivitiesEnab","isActivitiesEnabled","_ref$matchType","matchType","renderComment","renderActivity","rendererHashmap","_defineProperty","noop","index","type","renderer","React","Fragment","TYPES"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAMC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,MAAM,GAAAF,IAAA,CAANE,MAAM;AAAA,EAAA,oBAClCC,GAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,yDAAyD;AAAAC,IAAAA,QAAA,eACtEC,IAAA,CAAA,MAAA,EAAA;AACEF,MAAAA,SAAS,EAAEG,UAAU,CACnB,wIAAwI,EACxI;AAAE,QAAA,4BAA4B,EAAEL;AAAO,OACzC,CAAE;AAAAG,MAAAA,QAAA,EAAA,CAEDJ,IAAI,EACJC,MAAM,iBACLC,GAAA,CAAA,MAAA,EAAA;AAAMC,QAAAA,SAAS,EAAC;AAA4D,OAAE,CAC/E;KACG;AAAC,GACJ,CAAC;AAAA,CACP;;ACVD,IAAMI,QAAQ,GAAG,SAAXA,QAAQA,CAAAR,IAAA,EAAA;AAAA,EAAA,IACZS,IAAI,GAAAT,IAAA,CAAJS,IAAI;IACJR,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAAS,WAAA,GAAAV,IAAA,CACJE,MAAM;AAANA,IAAAA,MAAM,GAAAQ,WAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,WAAA;IACdN,SAAS,GAAAJ,IAAA,CAATI,SAAS;IACTC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACRM,QAAQ,GAAAX,IAAA,CAARW,QAAQ;AAAA,EAAA,oBAERL,IAAA,CAAA,KAAA,EAAA;IACEF,SAAS,EAAEG,UAAU,CACnB,sEAAsE,EACtE,kHAAkH,EAClHH,SACF,CAAE;IAAAC,QAAA,EAAA,cAEFF,GAAA,CAACJ,YAAY,EAAA;AAAOE,MAAAA,IAAI,EAAJA,IAAI;AAAEC,MAAAA,MAAM,EAANA;AAAM,KAAK,CAAC,EACrCS,QAAQ,iBACPR,GAAA,CAACS,MAAM,EAAA;AACLR,MAAAA,SAAS,EAAC,0DAA0D;AACpES,MAAAA,IAAI,EAAC,IAAI;AACTJ,MAAAA,IAAI,EAAE;QAAEK,IAAI,EAAEL,IAAI,CAACK,IAAI;QAAEC,QAAQ,EAAEN,IAAI,CAACO;AAAgB;KACzD,CACF,eACDb,GAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,+BAA+B;AAAAC,MAAAA,QAAA,EAAEA;AAAQ,KAAM,CAAC;AAAA,GAC5D,CAAC;AAAA,CACP;;ACzBD,IAAMY,aAAa,GAAG,SAAhBA,aAAaA,CAAAjB,IAAA,EAAyC;AAAA,EAAA,IAAnCS,IAAI,GAAAT,IAAA,CAAJS,IAAI;IAAES,OAAO,GAAAlB,IAAA,CAAPkB,OAAO;IAAEC,IAAI,GAAAnB,IAAA,CAAJmB,IAAI;IAAEC,OAAO,GAAApB,IAAA,CAAPoB,OAAO;AACnD,EAAA,IAAMC,MAAM,GAAG;IAAEP,IAAI,EAAEL,IAAI,CAACK,IAAI;IAAEC,QAAQ,EAAEN,IAAI,CAACO;GAAiB;AAElE,EAAA,oBACEV,IAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,SAAS,EAAC,kGAAkG;AAAAC,IAAAA,QAAA,gBAC/GC,IAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,qDAAqD;MAAAC,QAAA,EAAA,cAClEF,GAAA,CAACS,MAAM,EAAA;AAACC,QAAAA,IAAI,EAAC,IAAI;AAACJ,QAAAA,IAAI,EAAEY;AAAO,OAAE,CAAC,eAClClB,GAAA,CAACmB,UAAU,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;AAACC,QAAAA,OAAO,EAAC,OAAO;AAACC,QAAAA,MAAM,EAAC,QAAQ;QAAApB,QAAA,EAClDI,IAAI,CAACK;AAAI,OACA,CAAC,eACbX,GAAA,CAACmB,UAAU,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;AAACG,QAAAA,KAAK,EAAC,OAAO;AAACF,QAAAA,OAAO,EAAC,OAAO;AAAAnB,QAAAA,QAAA,EAAC;AAEpD,OAAY,CAAC,EACZc,IAAI,iBACHb,IAAA,CAAAqB,QAAA,EAAA;QAAAtB,QAAA,EAAA,cACEF,GAAA,CAACmB,UAAU,EAAA;AACTC,UAAAA,EAAE,EAAC,MAAM;AACTnB,UAAAA,SAAS,EAAC,WAAW;AACrBsB,UAAAA,KAAK,EAAC,OAAO;AACbF,UAAAA,OAAO,EAAC,OAAO;AAAAnB,UAAAA,QAAA,EAEdc;AAAI,SACK,CAAC,eACbhB,GAAA,CAACmB,UAAU,EAAA;AAACC,UAAAA,EAAE,EAAC,MAAM;AAACG,UAAAA,KAAK,EAAC,OAAO;AAACF,UAAAA,OAAO,EAAC,OAAO;AAAAnB,UAAAA,QAAA,EAAC;AAEpD,SAAY,CAAC;OACb,CACH,EACAa,OAAO,CAACU,SAAS,iBAChBzB,GAAA,CAAC0B,UAAU,CAACC,OAAO,EAAA;QACjBC,IAAI,EAAEb,OAAO,CAACU,SAAU;AACxBI,QAAAA,eAAe,EAAE;AAAEN,UAAAA,KAAK,EAAE,OAAO;AAAEF,UAAAA,OAAO,EAAE;AAAQ;AAAE,OACvD,CACF;KACE,CAAC,EACLS,SAAS,CAACb,OAAO,CAAC,iBACjBjB,GAAA,CAAC+B,YAAY,EAAA;AACXC,MAAAA,mBAAmB,EAAE;AAAE/B,QAAAA,SAAS,EAAE;OAA6B;AAC/DgC,MAAAA,aAAa,EAAE;AAAEC,QAAAA,QAAQ,EAAE;OAAiB;AAC5CC,MAAAA,SAAS,EAAElB;AAAQ,KACpB,CACF;AAAA,GACE,CAAC;AAEV,CAAC;;;;ACvCD,IAAMmB,YAAY,GAAGC,WAAW,CAAC;AAAEC,EAAAA,MAAM,EAAEC,WAAW,CAACjC,IAAI,CAACkC;AAAG,CAAC,CAAC;AACjE,IAAMC,cAAc,GAAGC,SAAS,CAACC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEjD,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAA/C,IAAA,EAAuC;AAAA,EAAA,IAAjCgD,SAAS,GAAAhD,IAAA,CAATgD,SAAS;IAAEC,KAAK,GAAAjD,IAAA,CAALiD,KAAK;IAAEC,QAAQ,GAAAlD,IAAA,CAARkD,QAAQ;AAC7C,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AACT,EAAA,IAAMC,MAAM,GAAGV,cAAc,CAACI,SAAS,CAAC;AAExC,EAAA,IAAMO,QAAQ,GAAG,SAAXA,QAAQA,CAAGC,KAAK,EAAI;AACxB,IAAA,IAAMC,KAAK,GAAGH,MAAM,CAACI,IAAI,CAACC,MAAM,CAACH,KAAK,CAACI,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,IAAIH,KAAK,IAAIlB,YAAY,CAACkB,KAAK,CAAC,IAAI,CAAC,EAAE;AACvCR,IAAAA,KAAK,CAAAY,aAAA,CAAAA,aAAA,KAAML,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEA,MAAAA,KAAK,EAAEA,KAAK,CAAA,QAAA;AAAO,KAAA,CAAE,CAAC;EAC1C,CAAC;AAED,EAAA,oBACElD,IAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,SAAS,EAAC,wCAAwC;AAAAC,IAAAA,QAAA,gBACrDF,GAAA,CAAA,KAAA,EAAA;AAAKC,MAAAA,SAAS,EAAC,uBAAuB;MAAAC,QAAA,eACpCF,GAAA,CAAC2D,WAAW,EAAA;AAAOP,QAAAA,QAAQ,EAARA;OAAa;KAC7B,CAAC,EACLD,MAAM,CAACS,GAAG,CAAC,UAAAC,cAAc,EAAI;AAC5B,MAAA,IAAMC,QAAQ,GAAG1B,YAAY,CAACyB,cAAc,CAAC;AAC7C,MAAA,IAAME,QAAQ,GAAGD,QAAQ,IAAI,CAAC;AAC9B,MAAA,IAAME,QAAQ,GAAGD,QAAQ,GACrBF,cAAc,CAACC,QAAQ,CAAC,GACxBD,cAAc,CAAC,CAAC,CAAC;AAErB,MAAA,IAAMI,KAAK,GAAGJ,cAAc,CACzBD,GAAG,CAAC,UAAAM,KAAA,EAAA;AAAA,QAAA,IAAGC,OAAO,GAAAD,KAAA,CAAPC,OAAO;AAAA,QAAA,OACb,OAAOA,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGA,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAExD,IAAI;MAAA,CACvD,CAAC,CACAyD,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,IAAI,CAAC;MAEb,oBACEtE,GAAA,CAACuE,OAAO,EAAA;AACNC,QAAAA,OAAO,EAAEtB,CAAC,CAAC,yCAAyC,EAAE;AAAEe,UAAAA,KAAK,EAALA;AAAM,SAAC,CAAE;AAEjE/B,QAAAA,QAAQ,EAAC,KAAK;QAAAhC,QAAA,eAEdF,GAAA,CAACyE,MAAM,EAAA;AACL,UAAA,cAAA,EAAcV,QAAS;AACvBrD,UAAAA,IAAI,EAAC,IAAI;AACTW,UAAAA,OAAO,EAAC,OAAO;AACfpB,UAAAA,SAAS,EAAEG,UAAU,CACnB,2CAA2C,EAC3C;AACE,YAAA,8BAA8B,EAAE2D,QAAQ;AACxC,YAAA,cAAc,EAAE,CAACA;AACnB,WACF,CAAE;UACFW,OAAO,EAAE,SAATA,OAAOA,GAAA;YAAA,OAAQ,CAACX,QAAQ,GAAGhB,QAAQ,GAAGD,KAAK,EAAEkB,QAAQ,CAAC;UAAA,CAAC;AAAA9D,UAAAA,QAAA,eAEvDC,IAAA,CAAA,MAAA,EAAA;AAAMF,YAAAA,SAAS,EAAC,2BAA2B;AAAAC,YAAAA,QAAA,gBACzCF,GAAA,CAAA,MAAA,EAAA;cAAAE,QAAA,EAAO8D,QAAQ,CAACX;aAAY,CAAC,eAC7BrD,GAAA,CAAA,MAAA,EAAA;cAAAE,QAAA,EAAO2D,cAAc,CAACc;AAAM,aAAO,CAAC;WAChC;SACA;OAAC,EApBJX,QAAQ,CAACP,OAqBP,CAAC;AAEd,IAAA,CAAC,CAAC;AAAA,GACC,CAAC;AAEV,CAAC;AAED,kBAAA,aAAemB,IAAI,CAAChC,SAAS,EAAEiC,OAAO,CAAC,WAAW,CAAC,CAAC;;ACzD7C,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,QAAQ,EAAE;AACZ,CAAC;;AClBM,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAGlE,OAAO,EAAA;AAAA,EAAA,OAAA,yBAAA,CAAAmE,MAAA,CACjBnE,OAAO,CAACyB,EAAE,CAAA;AAAA,CAAE;AAEjC,IAAM2C,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGC,UAAU,EAAI;AAC5C,EAAA,IAAIA,UAAU,CAACC,SAAS,EAAE,OAAOP,gBAAgB,CAACC,OAAO,CAAC,KACrD,IAAIK,UAAU,CAACE,OAAO,EAAE,OAAOR,gBAAgB,CAACE,QAAQ;AAE7D,EAAA,OAAO,IAAI;AACb,CAAC;;ACAD,IAAMO,OAAO,gBAAGC,UAAU,CACxB,UAAA3F,IAAA,EAYE4F,GAAG,EAAA;AAAA,EAAA,IAVDnF,IAAI,GAAAT,IAAA,CAAJS,IAAI;IACJS,OAAO,GAAAlB,IAAA,CAAPkB,OAAO;IACP8B,SAAS,GAAAhD,IAAA,CAATgD,SAAS;IACT7B,IAAI,GAAAnB,IAAA,CAAJmB,IAAI;IACJC,OAAO,GAAApB,IAAA,CAAPoB,OAAO;IACPhB,SAAS,GAAAJ,IAAA,CAATI,SAAS;IACTC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACRwF,aAAa,GAAA7F,IAAA,CAAb6F,aAAa;IACbC,gBAAgB,GAAA9F,IAAA,CAAhB8F,gBAAgB;AAAA,EAAA,oBAIlBxF,IAAA,CAAA,KAAA,EAAA;AACQsF,IAAAA,GAAG,EAAHA,GAAG;AACTjD,IAAAA,EAAE,EAAEyC,sBAAsB,CAAClE,OAAO,CAAE;IACpCd,SAAS,EAAEG,UAAU,CACnB,+EAA+E,EAC/E,8HAA8H,EAC9HH,SACF,CAAE;IAAAC,QAAA,EAAA,cAEFF,GAAA,CAACc,aAAa,EAAA;AAAOG,MAAAA,OAAO,EAAPA,OAAO;AAAEF,MAAAA,OAAO,EAAPA,OAAO;AAAEC,MAAAA,IAAI,EAAJA,IAAI;AAAEV,MAAAA,IAAI,EAAJA;KAAS,CAAC,eACvDH,IAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,6BAA6B;MAAAC,QAAA,EAAA,CACzCA,QAAQ,EACR2C,SAAS,KAAK,KAAK,iBAClB7C,GAAA,CAAC4C,WAAS,EAAA;AACFC,QAAAA,SAAS,EAATA,SAAS;AACfC,QAAAA,KAAK,EAAE4C,aAAc;AACrB3C,QAAAA,QAAQ,EAAE4C;AAAiB,OAC5B,CACF;AAAA,KACE,CAAC;AAAA,GACH,CAAC;AAAA,CAEV,CAAC;AAEDJ,OAAO,CAACK,WAAW,GAAG,SAAS;AAC/BL,OAAO,CAACM,SAAS,GAAG;AAClBvF,EAAAA,IAAI,EAAEwF,SAAS,CAACC,KAAK,CAAC;AAAEpF,IAAAA,IAAI,EAAEmF,SAAS,CAACE,MAAM,CAACC;GAAY,CAAC,CAACA,UAAU;AACvElF,EAAAA,OAAO,EAAE+E,SAAS,CAACC,KAAK,CAAC;AACvBvD,IAAAA,EAAE,EAAEsD,SAAS,CAACE,MAAM,CAACC,UAAU;IAC/BxE,SAAS,EAAEqE,SAAS,CAACE;GACtB,CAAC,CAACC,UAAU;AACbpD,EAAAA,SAAS,EAAEiD,SAAS,CAACI,SAAS,CAAC,CAACJ,SAAS,CAACK,KAAK,EAAEL,SAAS,CAACM,IAAI,CAAC,CAAC;EACjEpF,IAAI,EAAE8E,SAAS,CAACE,MAAM;EACtB/E,OAAO,EAAE6E,SAAS,CAACO,OAAO,CACxBP,SAAS,CAACC,KAAK,CAAC;IACdO,SAAS,EAAER,SAAS,CAACM,IAAI;AACzBG,IAAAA,GAAG,EAAET,SAAS,CAACE,MAAM,CAACC,UAAU;AAChCO,IAAAA,KAAK,EAAEV,SAAS,CAACE,MAAM,CAACC,UAAU;AAClCvB,IAAAA,OAAO,EAAEoB,SAAS,CAACW,IAAI,CAACR;AAC1B,GAAC,CACH,CAAC;EACDhG,SAAS,EAAE6F,SAAS,CAACE,MAAM;EAC3BN,aAAa,EAAEI,SAAS,CAACW,IAAI;EAC7Bd,gBAAgB,EAAEG,SAAS,CAACW;AAC9B,CAAC;;AC3DD,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA7G,IAAA,EAMX;AAAA,EAAA,IALJ8G,IAAI,GAAA9G,IAAA,CAAJ8G,IAAI;IAAAC,qBAAA,GAAA/G,IAAA,CACJgH,mBAAmB;AAAnBA,IAAAA,mBAAmB,GAAAD,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAE,cAAA,GAAAjH,IAAA,CAC3BkH,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG3B,gBAAgB,GAAA2B,cAAA;IAC5BE,aAAa,GAAAnH,IAAA,CAAbmH,aAAa;IACbC,cAAc,GAAApH,IAAA,CAAdoH,cAAc;EAEd,IAAMC,eAAe,GAAAC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAClBrC,gBAAgB,CAACC,OAAO,EAAGiC,aAAa,CAAA,EACxClC,gBAAgB,CAACE,QAAQ,EAAG6B,mBAAmB,GAAGI,cAAc,GAAGG,IAAI,CACzE;EAED,oBACEpH,GAAA,CAAAwB,QAAA,EAAA;IAAAtB,QAAA,EACGyG,IAAI,CAAC/C,GAAG,CAAC,UAACwB,UAAU,EAAEiC,KAAK,EAAK;AAC/B,MAAA,IAAMC,IAAI,GAAGP,SAAS,CAAC3B,UAAU,CAAC;AAClC,MAAA,IAAMmC,QAAQ,GAAGL,eAAe,CAACI,IAAI,CAAC;AACtC,MAAA,IAAI,CAACC,QAAQ,EAAE,OAAO,IAAI;AAE1B,MAAA,oBACEvH,GAAA,CAACwH,cAAK,CAACC,QAAQ,EAAA;AAAAvH,QAAAA,QAAA,EACZqH,QAAQ,CAACnC,UAAU,EAAEiC,KAAK;OAAC,EADTjC,UAAU,CAAC5C,EAEhB,CAAC;IAErB,CAAC;AAAC,GACF,CAAC;AAEP;AAEAkE,WAAW,CAACd,WAAW,GAAG,aAAa;AACvCc,WAAW,CAACnB,OAAO,GAAGA,OAAO;AAC7BmB,WAAW,CAACrG,QAAQ,GAAGA,QAAQ;AAC/BqG,WAAW,CAACgB,KAAK,GAAG5C,gBAAgB;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-molecules",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.18",
|
|
4
4
|
"description": "A package of reusable molecular components for neeto products.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-molecules.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
|
@@ -4,6 +4,19 @@ type VersionLimits = {
|
|
|
4
4
|
softLimit?: number;
|
|
5
5
|
hardLimit?: number;
|
|
6
6
|
};
|
|
7
|
+
type BrowserVersionOverrides = {
|
|
8
|
+
Chrome?: VersionLimits;
|
|
9
|
+
MobileChrome?: VersionLimits;
|
|
10
|
+
Edge?: VersionLimits;
|
|
11
|
+
Firefox?: VersionLimits;
|
|
12
|
+
MobileFirefox?: VersionLimits;
|
|
13
|
+
Safari?: VersionLimits;
|
|
14
|
+
MobileSafari?: VersionLimits;
|
|
15
|
+
Opera?: VersionLimits;
|
|
16
|
+
SamsungInternet?: VersionLimits;
|
|
17
|
+
Electron?: VersionLimits;
|
|
18
|
+
WebKit?: VersionLimits;
|
|
19
|
+
};
|
|
7
20
|
/**
|
|
8
21
|
*
|
|
9
22
|
* A wrapper that displays a callout message for partially supported browsers
|
|
@@ -29,59 +42,142 @@ type VersionLimits = {
|
|
|
29
42
|
* <Main />
|
|
30
43
|
* )
|
|
31
44
|
* @endexample
|
|
32
|
-
*
|
|
45
|
+
* This placement handles browsers that load the app but cannot render it properly.
|
|
46
|
+
*
|
|
47
|
+
* It cannot help when the browser is too old to parse the app chunk at all — see
|
|
48
|
+
*
|
|
49
|
+
* the next section, which is the placement most products actually want.
|
|
50
|
+
*
|
|
51
|
+
* Wrapping Main in <BrowserSupport> cannot help when the browser is old enough
|
|
52
|
+
*
|
|
53
|
+
* that the app chunk fails to parse. mount() rejects on the dynamic import and
|
|
54
|
+
*
|
|
55
|
+
* React never renders, so the user gets a blank page rather than an explanation.
|
|
33
56
|
*
|
|
34
|
-
*
|
|
57
|
+
* For that case call renderBrowserSupportGate from the pack, before mount(),
|
|
58
|
+
*
|
|
59
|
+
* where only the entry chunk has had to parse. It returns true when the browser
|
|
60
|
+
*
|
|
61
|
+
* was blocked, meaning the app must not be mounted:
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
*
|
|
65
|
+
* import mount from "neetocommons/react-utils/mount";
|
|
66
|
+
* import { renderBrowserSupportGate } from "@bigbinary/neeto-molecules/v2/BrowserSupport";
|
|
67
|
+
*
|
|
68
|
+
* const initializeAndMount = async () => {
|
|
69
|
+
* await initializeApplication();
|
|
70
|
+
*
|
|
71
|
+
* if (renderBrowserSupportGate()) return;
|
|
72
|
+
*
|
|
73
|
+
* mount(componentMap);
|
|
74
|
+
* };
|
|
75
|
+
* @endexample
|
|
76
|
+
* It renders into [data-react-class] by default, the same element mount()
|
|
77
|
+
*
|
|
78
|
+
* uses; pass element to override. When it blocks it also removes
|
|
79
|
+
*
|
|
80
|
+
* #neeto-page-loader, the loader rendered by shared/_page_loader in
|
|
81
|
+
*
|
|
82
|
+
* neeto-commons-backend, which sits outside the react root and would otherwise
|
|
83
|
+
*
|
|
84
|
+
* keep spinning over the message; pass loaderSelector if your product renders a
|
|
85
|
+
*
|
|
86
|
+
* different one. overrides and unsupportedBrowsers behave as they do on the
|
|
87
|
+
*
|
|
88
|
+
* component, and products should not normally need either — the defaults are the
|
|
89
|
+
*
|
|
90
|
+
* floor the shared stack imposes, so a product that overrides them is opting out
|
|
91
|
+
*
|
|
92
|
+
* of the guarantee rather than configuring it. Whatever the pack imports has to
|
|
93
|
+
*
|
|
94
|
+
* stay parseable on the browsers being guarded against, so keep the entry chunk
|
|
95
|
+
*
|
|
96
|
+
* free of syntax newer than the floor you are enforcing.
|
|
97
|
+
*
|
|
98
|
+
* The overrides prop changes the limits for a specific browser. The usual reason
|
|
99
|
+
*
|
|
100
|
+
* to reach for it is to open a partial band, where a browser below softLimit but
|
|
101
|
+
*
|
|
102
|
+
* at or above hardLimit gets a callout and still sees the page:
|
|
35
103
|
*
|
|
36
104
|
* @example
|
|
37
105
|
*
|
|
38
106
|
* <BrowserSupport
|
|
39
107
|
* overrides={{
|
|
40
|
-
* Chrome: { softLimit:
|
|
41
|
-
* Safari: { softLimit:
|
|
108
|
+
* Chrome: { softLimit: 120, hardLimit: 111 },
|
|
109
|
+
* Safari: { softLimit: 17, hardLimit: 16.4 },
|
|
42
110
|
* }}
|
|
43
|
-
* unsupportedBrowsers={["
|
|
111
|
+
* unsupportedBrowsers={["SamsungInternet"]}
|
|
44
112
|
* />
|
|
45
113
|
* @endexample
|
|
46
|
-
*
|
|
114
|
+
* Here Chrome 111 to 119 and Safari 16.4 to 16.6 get the callout along with the
|
|
47
115
|
*
|
|
48
|
-
*
|
|
116
|
+
* page contents. Chrome below 111 and Safari below 16.4 get the full-page message
|
|
49
117
|
*
|
|
50
|
-
*
|
|
118
|
+
* and no content. Every version of Samsung Internet is blocked outright.
|
|
51
119
|
*
|
|
52
|
-
*
|
|
120
|
+
* Lowering hardLimit below the defaults is possible but rarely a good idea. The
|
|
53
121
|
*
|
|
54
|
-
*
|
|
122
|
+
* defaults are the point at which the generated CSS stops applying, so lowering
|
|
55
123
|
*
|
|
56
|
-
*
|
|
124
|
+
* them serves a visibly broken page instead of a message explaining why.
|
|
57
125
|
*
|
|
58
|
-
*
|
|
126
|
+
* The default minimum versions are set by Tailwind v4, which hardcodes its
|
|
59
127
|
*
|
|
60
|
-
*
|
|
128
|
+
* Lightning CSS targets to Safari/iOS 16.4, Chrome 111 and Firefox 128 and exposes
|
|
61
129
|
*
|
|
62
|
-
*
|
|
130
|
+
* no option to lower them. Below that floor the generated CSS (@property,
|
|
131
|
+
*
|
|
132
|
+
* oklch(), :has(), @container) is dropped by the parser without an error, so
|
|
133
|
+
*
|
|
134
|
+
* the app renders broken rather than degraded. The remaining engines are pinned to
|
|
135
|
+
*
|
|
136
|
+
* the first release built on an equivalent core.
|
|
137
|
+
*
|
|
138
|
+
* | Browser name | Min supported version |
|
|
63
139
|
*
|
|
64
140
|
* | :-------------- | :-------------------- |
|
|
65
141
|
*
|
|
66
|
-
* | Chrome |
|
|
142
|
+
* | Chrome | 111 |
|
|
143
|
+
*
|
|
144
|
+
* | MobileChrome | 111 |
|
|
67
145
|
*
|
|
68
|
-
* |
|
|
146
|
+
* | Edge | 111 |
|
|
69
147
|
*
|
|
70
|
-
* |
|
|
148
|
+
* | Firefox | 128 |
|
|
71
149
|
*
|
|
72
|
-
* |
|
|
150
|
+
* | MobileFirefox | 128 |
|
|
73
151
|
*
|
|
74
|
-
* | Safari |
|
|
152
|
+
* | Safari | 16.4 |
|
|
75
153
|
*
|
|
76
|
-
* |
|
|
154
|
+
* | MobileSafari | 16.4 |
|
|
77
155
|
*
|
|
78
|
-
* |
|
|
156
|
+
* | Opera | 98 |
|
|
79
157
|
*
|
|
80
|
-
* |
|
|
158
|
+
* | SamsungInternet | 22 |
|
|
81
159
|
*
|
|
82
|
-
* |
|
|
160
|
+
* | Electron | 24 |
|
|
83
161
|
*
|
|
84
|
-
*
|
|
162
|
+
* | WebKit | 605 |
|
|
163
|
+
*
|
|
164
|
+
* softLimit and hardLimit are equal by default, so a browser below the floor
|
|
165
|
+
*
|
|
166
|
+
* gets the full-page message rather than a callout. There is no meaningful
|
|
167
|
+
*
|
|
168
|
+
* "degraded but usable" band below it — the CSS either applies or it does not. Set
|
|
169
|
+
*
|
|
170
|
+
* an explicit overrides entry if a product wants a partial band.
|
|
171
|
+
*
|
|
172
|
+
* Safari freezes the WebKit build number in its user agent (605.1.15 since
|
|
173
|
+
*
|
|
174
|
+
* Safari 12), so the WebKit entry cannot discriminate versions. It exists only
|
|
175
|
+
*
|
|
176
|
+
* to keep generic WebKit clients out of the unknown-browser branch.
|
|
177
|
+
*
|
|
178
|
+
* The default unsupported browsers are given below. These cannot reach the floor
|
|
179
|
+
*
|
|
180
|
+
* at any released version, and are blocked before overrides are consulted:
|
|
85
181
|
*
|
|
86
182
|
* Any other browser which is not in the above lists will be considered as unknown
|
|
87
183
|
*
|
|
@@ -89,22 +185,15 @@ type VersionLimits = {
|
|
|
89
185
|
*
|
|
90
186
|
*/
|
|
91
187
|
declare const BrowserSupport: React.FC<{
|
|
92
|
-
overrides?:
|
|
93
|
-
Chrome?: VersionLimits;
|
|
94
|
-
Edge?: VersionLimits;
|
|
95
|
-
Firefox?: VersionLimits;
|
|
96
|
-
IE?: VersionLimits;
|
|
97
|
-
Opera?: VersionLimits;
|
|
98
|
-
Safari?: VersionLimits;
|
|
99
|
-
AndroidBrowser?: VersionLimits;
|
|
100
|
-
OperaMini?: VersionLimits;
|
|
101
|
-
MobileChrome?: VersionLimits;
|
|
102
|
-
MobileFirefox?: VersionLimits;
|
|
103
|
-
UCBrowser?: VersionLimits;
|
|
104
|
-
SamsungInternet?: VersionLimits;
|
|
105
|
-
};
|
|
188
|
+
overrides?: BrowserVersionOverrides;
|
|
106
189
|
unsupportedBrowsers?: string[];
|
|
107
190
|
children?: React.ReactNode | React.ReactNode[];
|
|
108
191
|
}>;
|
|
192
|
+
declare const renderBrowserSupportGate: (options?: {
|
|
193
|
+
overrides?: BrowserVersionOverrides;
|
|
194
|
+
unsupportedBrowsers?: string[];
|
|
195
|
+
element?: HTMLElement | null;
|
|
196
|
+
loaderSelector?: string;
|
|
197
|
+
}) => boolean;
|
|
109
198
|
|
|
110
|
-
export { BrowserSupport as default };
|
|
199
|
+
export { BrowserSupport as default, renderBrowserSupportGate };
|