@edifice.io/react 2.5.15-develop-pedago.20260327124327 → 2.5.15-develop-b2school.20260327180304
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/components/AddAttachments/AddAttachments.d.ts +3 -6
- package/dist/components/AddAttachments/AddAttachments.js +29 -17
- package/dist/components/AddAttachments/models/attachment.d.ts +0 -1
- package/dist/components/Tree/components/SortableTree.js +3 -4
- package/dist/components/Tree/components/Tree.js +3 -4
- package/dist/components/index.d.ts +0 -2
- package/dist/hooks/useDirectory/useDirectory.d.ts +2 -3
- package/dist/hooks/useDropzone/useDropzone.js +4 -4
- package/dist/icons.js +176 -180
- package/dist/index.js +0 -10
- package/dist/modules/icons/components/index.d.ts +0 -2
- package/dist/modules/modals/OnboardingModal/index.d.ts +1 -1
- package/dist/modules/multimedia/Linker/InternalLinker/InternalLinker.d.ts +1 -3
- package/dist/modules/multimedia/Linker/InternalLinker/InternalLinker.js +1 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/utilities/index.d.ts +0 -1
- package/package.json +7 -7
- package/dist/components/AddAttachments/hooks/useFileToAttachment.d.ts +0 -3
- package/dist/components/AddAttachments/hooks/useFileToAttachment.js +0 -16
- package/dist/components/UserRightsList/SaveBookmark.d.ts +0 -5
- package/dist/components/UserRightsList/SaveBookmark.js +0 -29
- package/dist/components/UserRightsList/UserRightsBookmarkRow.d.ts +0 -11
- package/dist/components/UserRightsList/UserRightsBookmarkRow.js +0 -30
- package/dist/components/UserRightsList/UserRightsItem.d.ts +0 -13
- package/dist/components/UserRightsList/UserRightsItem.js +0 -36
- package/dist/components/UserRightsList/UserRightsList.d.ts +0 -19
- package/dist/components/UserRightsList/UserRightsList.js +0 -94
- package/dist/components/UserRightsList/helpers/rightsHelpers.d.ts +0 -9
- package/dist/components/UserRightsList/helpers/rightsHelpers.js +0 -53
- package/dist/components/UserRightsList/hooks/useBookmarkEntries.d.ts +0 -19
- package/dist/components/UserRightsList/hooks/useBookmarkEntries.js +0 -58
- package/dist/components/UserRightsList/hooks/useSharingItems.d.ts +0 -20
- package/dist/components/UserRightsList/hooks/useSharingItems.js +0 -57
- package/dist/components/UserRightsList/index.d.ts +0 -2
- package/dist/components/UserRightsList/types/types.d.ts +0 -34
- package/dist/components/UserRightsList/types/types.js +0 -6
- package/dist/components/UserSearch/UserSearch.d.ts +0 -7
- package/dist/components/UserSearch/UserSearch.js +0 -82
- package/dist/components/UserSearch/index.d.ts +0 -3
- package/dist/components/UserSearch/types/types.d.ts +0 -24
- package/dist/components/UserSearch/types/visible.d.ts +0 -24
- package/dist/components/UserSearch/types/visible.js +0 -4
- package/dist/modules/icons/components/IconParcoursCitoyen.d.ts +0 -7
- package/dist/modules/icons/components/IconParcoursCitoyen.js +0 -14
- package/dist/modules/icons/components/IconParcoursSecours.d.ts +0 -7
- package/dist/modules/icons/components/IconParcoursSecours.js +0 -14
- package/dist/types/sharing.d.ts +0 -8
- package/dist/utilities/rotate-transition-style/get-rotate-transition-style.d.ts +0 -5
- package/dist/utilities/rotate-transition-style/get-rotate-transition-style.js +0 -12
- package/dist/utilities/rotate-transition-style/index.d.ts +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { useState } from "react";
|
|
2
|
-
const useSharingItems = ({
|
|
3
|
-
initialSharings,
|
|
4
|
-
toggleRight,
|
|
5
|
-
applyRight,
|
|
6
|
-
onChange,
|
|
7
|
-
onAddItems,
|
|
8
|
-
onDeleteItems
|
|
9
|
-
}) => {
|
|
10
|
-
const [items, setItems] = useState(initialSharings ?? []);
|
|
11
|
-
return {
|
|
12
|
-
items,
|
|
13
|
-
addItem: (item) => {
|
|
14
|
-
setItems((prev) => {
|
|
15
|
-
if (new Set(prev.map((sharing) => sharing.recipientId)).has(item.recipientId)) return prev;
|
|
16
|
-
const nextItems = [...prev, item];
|
|
17
|
-
return onChange(nextItems), onAddItems([item]), nextItems;
|
|
18
|
-
});
|
|
19
|
-
},
|
|
20
|
-
addItems: (newItems) => {
|
|
21
|
-
setItems((prev) => {
|
|
22
|
-
const existingIds = new Set(prev.map((sharing) => sharing.recipientId)), uniqueItems = newItems.filter((newItem) => !existingIds.has(newItem.recipientId));
|
|
23
|
-
if (uniqueItems.length === 0) return prev;
|
|
24
|
-
const nextItems = [...prev, ...uniqueItems];
|
|
25
|
-
return onChange(nextItems), onAddItems(uniqueItems), nextItems;
|
|
26
|
-
});
|
|
27
|
-
},
|
|
28
|
-
deleteItem: (item) => {
|
|
29
|
-
setItems((prev) => {
|
|
30
|
-
const nextItems = prev.filter((sharing) => sharing.recipientId !== item.recipientId);
|
|
31
|
-
return nextItems.length === prev.length ? prev : (onChange(nextItems), onDeleteItems([item]), nextItems);
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
deleteItemsByIds: (ids) => {
|
|
35
|
-
setItems((prev) => {
|
|
36
|
-
const nextItems = prev.filter((sharing) => !ids.has(sharing.recipientId)), removedItems = prev.filter((sharing) => ids.has(sharing.recipientId));
|
|
37
|
-
return onChange(nextItems), onDeleteItems(removedItems), nextItems;
|
|
38
|
-
});
|
|
39
|
-
},
|
|
40
|
-
changeRight: (item, rightName) => {
|
|
41
|
-
const updatedItem = toggleRight(item, rightName);
|
|
42
|
-
setItems((prevItems) => {
|
|
43
|
-
const nextItems = prevItems.map((prevItem) => prevItem.recipientId === item.recipientId ? updatedItem : prevItem);
|
|
44
|
-
return onChange(nextItems), nextItems;
|
|
45
|
-
});
|
|
46
|
-
},
|
|
47
|
-
applyRightToIds: (ids, rightName, shouldAdd) => {
|
|
48
|
-
setItems((prev) => {
|
|
49
|
-
const nextItems = prev.map((sharing) => ids.has(sharing.recipientId) ? applyRight(sharing, rightName, shouldAdd) : sharing);
|
|
50
|
-
return onChange(nextItems), nextItems;
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
export {
|
|
56
|
-
useSharingItems
|
|
57
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { SharingItem } from '../../../types';
|
|
2
|
-
export type { SearchResultType, SharingItem } from '../../../types';
|
|
3
|
-
export type ResourceRightName = 'read' | 'contrib' | 'publish' | 'manager' | 'comment';
|
|
4
|
-
export type ResourceRightDefinition = {
|
|
5
|
-
priority: number;
|
|
6
|
-
default: boolean;
|
|
7
|
-
requires: ResourceRightName[];
|
|
8
|
-
excludes: ResourceRightName[];
|
|
9
|
-
};
|
|
10
|
-
export type ResourceRights = Record<ResourceRightName, ResourceRightDefinition>;
|
|
11
|
-
export interface BookmarkUser {
|
|
12
|
-
id: string;
|
|
13
|
-
displayName: string;
|
|
14
|
-
profile?: string;
|
|
15
|
-
activationCode?: boolean;
|
|
16
|
-
}
|
|
17
|
-
export interface BookmarkInput {
|
|
18
|
-
id: string;
|
|
19
|
-
name: string;
|
|
20
|
-
notVisibleCount?: number;
|
|
21
|
-
groups?: {
|
|
22
|
-
id: string;
|
|
23
|
-
displayName: string;
|
|
24
|
-
}[];
|
|
25
|
-
users: BookmarkUser[];
|
|
26
|
-
}
|
|
27
|
-
export interface BookmarkState {
|
|
28
|
-
id: string;
|
|
29
|
-
name: string;
|
|
30
|
-
permission: string[];
|
|
31
|
-
userIds: string[];
|
|
32
|
-
isExpanded: boolean;
|
|
33
|
-
}
|
|
34
|
-
export declare function isBookmarkInput(item: SharingItem | BookmarkInput): item is BookmarkInput;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { UserSearchProps, UserSearchRef } from './types/types';
|
|
2
|
-
/**
|
|
3
|
-
* User search component with combobox UI. Supports users, groups and bookmarks,
|
|
4
|
-
* debounced search, and optional sharing/selection tracking.
|
|
5
|
-
* Loading state is managed internally during getSearchResults calls.
|
|
6
|
-
*/
|
|
7
|
-
export declare const UserSearch: import('react').ForwardRefExoticComponent<UserSearchProps & import('react').RefAttributes<UserSearchRef>>;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef, useState, useEffect, useCallback, useImperativeHandle } from "react";
|
|
3
|
-
import SvgIconBookmark from "../../modules/icons/components/IconBookmark.js";
|
|
4
|
-
import SvgIconGroupAvatar from "../../modules/icons/components/IconGroupAvatar.js";
|
|
5
|
-
import SvgIconUser from "../../modules/icons/components/IconUser.js";
|
|
6
|
-
import { VisibleType } from "./types/visible.js";
|
|
7
|
-
import useDebounce from "../../hooks/useDebounce/useDebounce.js";
|
|
8
|
-
import Combobox from "../Combobox/Combobox.js";
|
|
9
|
-
function buildSharedItemsCacheFromInitialSharings(initialSharings) {
|
|
10
|
-
return new Map(initialSharings.map((item) => [item.recipientId, {
|
|
11
|
-
id: item.recipientId,
|
|
12
|
-
displayName: item.displayName,
|
|
13
|
-
type: item.recipientType === "user" ? VisibleType.User : item.recipientType === "group" ? VisibleType.Group : VisibleType.ShareBookmark
|
|
14
|
-
}]));
|
|
15
|
-
}
|
|
16
|
-
const UserSearch = /* @__PURE__ */ forwardRef(({
|
|
17
|
-
placeholder = "Rechercher un utilisateur",
|
|
18
|
-
isAdmlcOrAdmc = !1,
|
|
19
|
-
bookmarks = [],
|
|
20
|
-
initialSharings = [],
|
|
21
|
-
getSearchResults,
|
|
22
|
-
onSearchResultsChange
|
|
23
|
-
}, ref) => {
|
|
24
|
-
const [searchResults, setSearchResults] = useState(bookmarks), [searchInputValue, setSearchInputValue] = useState(""), debouncedSearchInputValue = useDebounce(searchInputValue, 500), [sharingsIds, setSharingsIds] = useState(new Set(initialSharings.map((item) => item.recipientId))), [sharedItemsCache, setSharedItemsCache] = useState(() => buildSharedItemsCacheFromInitialSharings(initialSharings)), [isLoading, setIsLoading] = useState(!1), searchMinLength = isAdmlcOrAdmc ? 3 : 1, getIcon = (type) => {
|
|
25
|
-
switch (type) {
|
|
26
|
-
case VisibleType.User:
|
|
27
|
-
return /* @__PURE__ */ jsx(SvgIconUser, {});
|
|
28
|
-
case VisibleType.Group:
|
|
29
|
-
case VisibleType.BroadcastGroup:
|
|
30
|
-
return /* @__PURE__ */ jsx(SvgIconGroupAvatar, {});
|
|
31
|
-
case VisibleType.ShareBookmark:
|
|
32
|
-
return /* @__PURE__ */ jsx(SvgIconBookmark, {});
|
|
33
|
-
default:
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
}, searchResultsToOptions = (searchResults2) => searchResults2.map((result) => ({
|
|
37
|
-
value: result.id,
|
|
38
|
-
label: result.displayName,
|
|
39
|
-
icon: getIcon(result.type)
|
|
40
|
-
})), filterResults = (results) => results.filter((result) => !sharingsIds.has(result.id));
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
let cancelled = !1;
|
|
43
|
-
async function getResults() {
|
|
44
|
-
setIsLoading(!0);
|
|
45
|
-
try {
|
|
46
|
-
const response = await getSearchResults(debouncedSearchInputValue);
|
|
47
|
-
if (!cancelled) {
|
|
48
|
-
const rawResults = [...bookmarks, ...response.results];
|
|
49
|
-
setSearchResults(filterResults(rawResults));
|
|
50
|
-
}
|
|
51
|
-
} catch {
|
|
52
|
-
cancelled || setSearchResults(filterResults(bookmarks));
|
|
53
|
-
} finally {
|
|
54
|
-
cancelled || setIsLoading(!1);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return debouncedSearchInputValue.length >= searchMinLength ? getResults() : setSearchResults(filterResults(bookmarks)), () => {
|
|
58
|
-
cancelled = !0, setIsLoading(!1);
|
|
59
|
-
};
|
|
60
|
-
}, [debouncedSearchInputValue]);
|
|
61
|
-
const handleSearchInputChange = (event) => {
|
|
62
|
-
setSearchInputValue(event.target.value);
|
|
63
|
-
}, handleRemoveSharing = useCallback((recipientId) => {
|
|
64
|
-
setSharingsIds((prev) => {
|
|
65
|
-
const next = new Set(prev);
|
|
66
|
-
return next.delete(recipientId), next;
|
|
67
|
-
});
|
|
68
|
-
const cached = sharedItemsCache.get(recipientId);
|
|
69
|
-
cached && setSearchResults((prev) => prev.some((r) => r.id === recipientId) ? prev : [...prev, cached]);
|
|
70
|
-
}, [sharedItemsCache]);
|
|
71
|
-
useImperativeHandle(ref, () => ({
|
|
72
|
-
removeSharing: handleRemoveSharing
|
|
73
|
-
}), [handleRemoveSharing]);
|
|
74
|
-
const handleSearchResultsChange = (model) => {
|
|
75
|
-
const searchResultId = model[0], searchResult = searchResults.find((result) => result.id === searchResultId);
|
|
76
|
-
searchResult && (setSharingsIds((prev) => /* @__PURE__ */ new Set([...prev, searchResult.id])), setSharedItemsCache((prev) => new Map(prev).set(searchResult.id, searchResult)), setSearchResults((prev) => prev.filter((result) => result.id !== searchResult.id)), onSearchResultsChange == null || onSearchResultsChange(searchResult));
|
|
77
|
-
};
|
|
78
|
-
return /* @__PURE__ */ jsx(Combobox, { "data-testid": "common-user-search-input-search", value: searchInputValue, placeholder, isLoading, noResult: searchResults.length === 0, options: searchResultsToOptions(searchResults), searchMinLength, onSearchInputChange: handleSearchInputChange, onSearchResultsChange: handleSearchResultsChange });
|
|
79
|
-
});
|
|
80
|
-
export {
|
|
81
|
-
UserSearch
|
|
82
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { SearchResultType, SharingItem } from '../../../types';
|
|
3
|
-
import { Visible } from './visible';
|
|
4
|
-
export type { SearchResultType, SharingItem };
|
|
5
|
-
export interface UserSearchProps {
|
|
6
|
-
placeholder?: string;
|
|
7
|
-
isAdmlcOrAdmc?: boolean;
|
|
8
|
-
bookmarks?: Visible[];
|
|
9
|
-
initialSharings?: SharingItem[];
|
|
10
|
-
getSearchResults: (searchInputValue: string) => Promise<SearchResponse>;
|
|
11
|
-
onSearchResultsChange?: (searchResult: Visible) => void;
|
|
12
|
-
}
|
|
13
|
-
export interface UserSearchRef {
|
|
14
|
-
removeSharing: (recipientId: string) => void;
|
|
15
|
-
}
|
|
16
|
-
export interface SearchResponse {
|
|
17
|
-
results: Visible[];
|
|
18
|
-
}
|
|
19
|
-
export interface SearchResultBase {
|
|
20
|
-
id: string;
|
|
21
|
-
displayName: string;
|
|
22
|
-
icon: ReactNode;
|
|
23
|
-
type: SearchResultType;
|
|
24
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export declare enum VisibleType {
|
|
2
|
-
User = "User",
|
|
3
|
-
Group = "Group",
|
|
4
|
-
ShareBookmark = "ShareBookmark",
|
|
5
|
-
BroadcastGroup = "BroadcastGroup"
|
|
6
|
-
}
|
|
7
|
-
export type Visible = {
|
|
8
|
-
id: string;
|
|
9
|
-
displayName: string;
|
|
10
|
-
type: VisibleType;
|
|
11
|
-
children?: {
|
|
12
|
-
id: string;
|
|
13
|
-
displayName: string;
|
|
14
|
-
}[];
|
|
15
|
-
groupType?: string;
|
|
16
|
-
nbUsers?: number;
|
|
17
|
-
profile?: string;
|
|
18
|
-
relatives?: {
|
|
19
|
-
id: string;
|
|
20
|
-
displayName: string;
|
|
21
|
-
}[];
|
|
22
|
-
structureName?: string;
|
|
23
|
-
usedIn?: ('TO' | 'CC' | 'CCI')[];
|
|
24
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { SVGProps } from 'react';
|
|
2
|
-
interface SVGRProps {
|
|
3
|
-
title?: string;
|
|
4
|
-
titleId?: string;
|
|
5
|
-
}
|
|
6
|
-
declare const SvgIconParcoursCitoyen: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
export default SvgIconParcoursCitoyen;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
const SvgIconParcoursCitoyen = ({
|
|
3
|
-
title,
|
|
4
|
-
titleId,
|
|
5
|
-
...props
|
|
6
|
-
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
-
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
-
/* @__PURE__ */ jsx("path", { fill: "#383838", d: "M10.681 20.838a6.15 6.15 0 0 1 6.149-6.148q.058 0 .114.007a6.15 6.15 0 0 1 6.035 6.145v.248a2.473 2.473 0 0 1-2.47 2.47H11.68a1 1 0 0 1-1-1zm2 .722h7.827c.258 0 .47-.212.471-.47v-.248a4.15 4.15 0 0 0-4.15-4.148l-.051-.003a4.15 4.15 0 0 0-4.097 4.147zM18.81 9.627a2.124 2.124 0 1 0-4.247-.001 2.124 2.124 0 0 0 4.248 0m2 0a4.123 4.123 0 1 1-8.245 0 4.123 4.123 0 0 1 8.246 0" }),
|
|
9
|
-
/* @__PURE__ */ jsx("path", { fill: "#383838", d: "M2.127 21.132a5.276 5.276 0 0 1 7.034-4.975 1 1 0 0 1-.666 1.886 3.276 3.276 0 0 0-4.367 3.089c0 .235.193.428.428.428h7.125a1 1 0 0 1 0 2H4.556a2.43 2.43 0 0 1-2.429-2.428M8.62 11.445a1.408 1.408 0 1 0-2.817.001 1.408 1.408 0 0 0 2.816-.001m2 0a3.409 3.409 0 1 1-6.818-.001 3.409 3.409 0 0 1 6.817 0M12.53 17.006V5.831a1 1 0 1 1 2 0v11.175l-.005.103a1 1 0 0 1-1.99 0z" }),
|
|
10
|
-
/* @__PURE__ */ jsx("path", { fill: "#383838", d: "M13.533.2a1 1 0 0 1 1 1v4.294a1 1 0 0 1-1 1H7.121a1 1 0 0 1-1-1V3.21C6.121 1.53 7.501.2 9.17.2zM8.121 4.494h4.412V2.2H9.17c-.597 0-1.048.469-1.048 1.01z" })
|
|
11
|
-
] });
|
|
12
|
-
export {
|
|
13
|
-
SvgIconParcoursCitoyen as default
|
|
14
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { SVGProps } from 'react';
|
|
2
|
-
interface SVGRProps {
|
|
3
|
-
title?: string;
|
|
4
|
-
titleId?: string;
|
|
5
|
-
}
|
|
6
|
-
declare const SvgIconParcoursSecours: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
export default SvgIconParcoursSecours;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
const SvgIconParcoursSecours = ({
|
|
3
|
-
title,
|
|
4
|
-
titleId,
|
|
5
|
-
...props
|
|
6
|
-
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
-
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
-
/* @__PURE__ */ jsx("path", { fill: "#383838", d: "M21.132 7.766a.616.616 0 0 0-.616-.616H3.859a.616.616 0 0 0-.616.616v13.237c0 .34.275.617.616.617h16.657c.34 0 .616-.276.616-.617zm2 13.237a2.616 2.616 0 0 1-2.616 2.617H3.859a2.616 2.616 0 0 1-2.616-2.617V7.766A2.616 2.616 0 0 1 3.859 5.15h16.657a2.616 2.616 0 0 1 2.616 2.616z" }),
|
|
9
|
-
/* @__PURE__ */ jsx("path", { fill: "#383838", d: "M12.746.548c2.883.047 5.465 1.936 6.39 4.716a1 1 0 0 1-1.897.632c-.659-1.98-2.497-3.314-4.526-3.348h-.197c-2.021.05-3.827 1.387-4.48 3.348a1 1 0 0 1-1.898-.632C7.053 2.514 9.591.62 12.466.549zM11.184 18.026V10.74a1 1 0 1 1 2 0v7.286a1 1 0 1 1-2 0" }),
|
|
10
|
-
/* @__PURE__ */ jsx("path", { fill: "#383838", d: "m15.829 13.381.102.005a1 1 0 0 1 0 1.99l-.102.005H8.542a1 1 0 1 1 0-2z" })
|
|
11
|
-
] });
|
|
12
|
-
export {
|
|
13
|
-
SvgIconParcoursSecours as default
|
|
14
|
-
};
|
package/dist/types/sharing.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './get-rotate-transition-style';
|