@claspo/renderer 16.7.0-theme.13 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/CompositionRoot.d.ts +2 -35
  2. package/CompositionRoot.js +1 -1
  3. package/RouterEvent.d.ts +4 -3
  4. package/StaticEntryModule.d.ts +21 -18
  5. package/StaticEntryModule.js +1 -1
  6. package/UpdatingEntryModule.d.ts +10 -14
  7. package/UpdatingEntryModule.js +1 -1
  8. package/ViewRouter.d.ts +8 -7
  9. package/action/ActionFactory.d.ts +10 -10
  10. package/action/ActionRegister.d.ts +24 -7
  11. package/action/InAppActionFactory.d.ts +1 -1
  12. package/action/SysActionTypes.d.ts +12 -12
  13. package/action/actions/ActionCategory.d.ts +4 -4
  14. package/action/actions/BaseRequestAction.d.ts +9 -9
  15. package/action/actions/BaseRequestAction.js +1 -1
  16. package/action/actions/CloseWidgetAction.d.ts +5 -5
  17. package/action/actions/CloseWidgetAction.js +1 -1
  18. package/action/actions/DispatchEventAction.d.ts +2 -2
  19. package/action/actions/GoToNextViewAction.d.ts +2 -2
  20. package/action/actions/GoToNextViewAction.js +1 -1
  21. package/action/actions/GoToPreviousViewAction.d.ts +2 -2
  22. package/action/actions/GoToPreviousViewAction.js +1 -1
  23. package/action/actions/GoToViewAction.d.ts +3 -4
  24. package/action/actions/GoToViewAction.js +1 -1
  25. package/action/actions/InAppOpenLinkAction.d.ts +2 -2
  26. package/action/actions/OpenLinkAction.d.ts +7 -7
  27. package/action/actions/OpenLinkAction.js +1 -1
  28. package/action/actions/RequestAction.d.ts +3 -1
  29. package/action/actions/ShowWidgetAction.d.ts +2 -2
  30. package/action/actions/SubscribeContactAction.d.ts +4 -1
  31. package/action/asyncAction.d.ts +2 -2
  32. package/backward-compatibility/deprecatedCheckboxVariablesMap.d.ts +1 -1
  33. package/color-libs/color-convert.d.ts +1 -1
  34. package/color-libs/color-string.d.ts +4 -14
  35. package/color-libs/color.d.ts +1 -13
  36. package/color-libs/conversions.d.ts +10 -8
  37. package/color-libs/rgb.d.ts +1 -1
  38. package/color-libs/route.d.ts +1 -1
  39. package/color-libs/simple-swizzle.d.ts +1 -4
  40. package/common/ConfigService.d.ts +5 -3
  41. package/common/ConfigService.js +1 -1
  42. package/common/DefaultState.d.ts +7 -4
  43. package/common/SysEventTypes.d.ts +6 -6
  44. package/common/WaitForKeyboardHide.d.ts +1 -1
  45. package/document-model/ComponentPropsExtractor.d.ts +1 -1
  46. package/document-model/DocumentModelService.d.ts +32 -0
  47. package/document-model/{DocumentModel.js → DocumentModelService.js} +1 -1
  48. package/document-model/DocumentService.d.ts +3 -3
  49. package/document-model/DocumentService.js +1 -1
  50. package/document-model/MergeAdaptiveStylesWithEnvIndependentStyles.d.ts +2 -1
  51. package/document-model/MergeAdaptiveStylesWithEnvIndependentStyles.js +1 -1
  52. package/document-model/ViewEntryType.d.ts +13 -13
  53. package/document-model/systemResultStateNames.d.ts +1 -1
  54. package/form/FormControl.d.ts +22 -25
  55. package/form/FormControl.interface.d.ts +19 -0
  56. package/form/FormControl.interface.js +1 -0
  57. package/form/FormControl.js +1 -1
  58. package/form/FormControlEvents.d.ts +7 -5
  59. package/form/FormControlValidator.d.ts +9 -8
  60. package/form/FormControlValidator.interface.d.ts +23 -0
  61. package/form/FormControlValidator.interface.js +1 -0
  62. package/form/FormGroup.d.ts +18 -13
  63. package/form/FormGroup.interface.d.ts +7 -0
  64. package/form/FormGroup.interface.js +1 -0
  65. package/form/FormGroup.js +1 -1
  66. package/form/FormGroupEvents.d.ts +10 -7
  67. package/generateRandomValue.d.ts +1 -1
  68. package/handler/ClickHandler.d.ts +8 -8
  69. package/handler/ComponentEventHandler.d.ts +1 -1
  70. package/handler/HandlerFactory.d.ts +3 -3
  71. package/i18n/TranslateUtils.d.ts +22 -7
  72. package/i18n/TranslateUtils.js +1 -1
  73. package/package.json +2 -2
  74. package/prize-pool/PrizePool.d.ts +1 -1
  75. package/prize-pool/PrizePoolEvents.d.ts +6 -4
  76. package/prize-pool/PrizePoolFactory.d.ts +2 -2
  77. package/renderer/DragEventListener.d.ts +1 -1
  78. package/renderer/RenderConstants.d.ts +6 -6
  79. package/renderer/ViewRendererActionType.d.ts +15 -15
  80. package/renderer/style/ClDocumentResizeListener.d.ts +5 -4
  81. package/renderer/style/ClDocumentResizeListener.js +1 -1
  82. package/renderer/style/ColorSchemaListener.d.ts +38 -23
  83. package/renderer/style/ColorSchemaListener.js +1 -1
  84. package/renderer/style/CommonStylesService.d.ts +4 -3
  85. package/renderer/style/DefaultMediaQueryListener.d.ts +15 -9
  86. package/renderer/style/DefaultMediaQueryListener.js +1 -1
  87. package/renderer/style/LoopAnimationStylesService.d.ts +1 -1
  88. package/renderer/style/MobileDeviceOrientationListener.d.ts +19 -6
  89. package/renderer/style/MobileDeviceOrientationListener.js +1 -1
  90. package/resource-management/ComponentResourceManager.d.ts +12 -10
  91. package/resource-management/Counter.d.ts +3 -2
  92. package/resource-management/ViewResourcesManager.d.ts +2 -2
  93. package/sdk/ColorUtils.d.ts +7 -7
  94. package/sdk/ComponentType.d.ts +9 -9
  95. package/sdk/FormUtils.d.ts +3 -3
  96. package/sdk/FormUtils.js +1 -1
  97. package/sdk/HtmlStyleUtils.d.ts +27 -7
  98. package/sdk/HtmlStyleUtils.js +1 -1
  99. package/sdk/ModelStyleUtils.d.ts +11 -9
  100. package/sdk/ModelStyleUtils.js +1 -1
  101. package/sdk/OverlayUtils.d.ts +44 -28
  102. package/sdk/OverlayUtils.js +1 -1
  103. package/sdk/PreviewMode.d.ts +6 -5
  104. package/sdk/TooltipUtils.d.ts +10 -4
  105. package/sdk/TooltipUtils.js +1 -1
  106. package/sdk/TranslationUtils.d.ts +9 -4
  107. package/sdk/TranslationUtils.js +1 -1
  108. package/sdk/WcControlledElement.d.ts +48 -23
  109. package/sdk/WcControlledElement.js +1 -1
  110. package/sdk/WcElement.d.ts +123 -56
  111. package/sdk/WcElement.js +1 -1
  112. package/sdk/context/ContextData.d.ts +26 -7
  113. package/sdk/context/ContextEvents.d.ts +6 -5
  114. package/sdk/context/ContextSDK.d.ts +26 -13
  115. package/sdk/context/Record.d.ts +7 -6
  116. package/sdk/getComponentCountOnView.d.ts +2 -1
  117. package/sdk/merge-tags/AbstractMergeTagsProcessor.d.ts +20 -8
  118. package/sdk/merge-tags/AbstractMergeTagsProcessor.js +1 -1
  119. package/sdk/merge-tags/MergeTagsProcessorFactory.d.ts +9 -8
  120. package/sdk/merge-tags/StaticMergeTagsProcessor.d.ts +2 -1
  121. package/sdk/merge-tags/UpdatingMergeTagsProcessor.d.ts +5 -3
  122. package/sdk/merge-tags/UpdatingMergeTagsProcessor.js +1 -1
  123. package/sdk/source/Source.d.ts +14 -6
  124. package/sdk/source/SourceRegistry.d.ts +15 -7
  125. package/sdk/source/sources/DataLayerSource.d.ts +24 -9
  126. package/sdk/source/sources/DataLayerSource.js +1 -1
  127. package/sdk/source/sources/FormSource.d.ts +6 -4
  128. package/sdk/source/sources/JSApiVariablesSource.d.ts +28 -10
  129. package/sdk/source/sources/JSApiVariablesSource.js +1 -1
  130. package/sdk/source/sources/UrlQueryParamsSource.d.ts +23 -10
  131. package/sdk/source/sources/UrlQueryParamsSource.js +1 -1
  132. package/sdk/validators/required.d.ts +4 -4
  133. package/sdk.d.ts +3 -3
  134. package/sdk.js +1 -1
  135. package/wc-renderer/WcFactory.d.ts +17 -17
  136. package/wc-renderer/WcFactory.js +1 -1
  137. package/wc-renderer/WcRegister.d.ts +15 -9
  138. package/wc-renderer/WcRegister.js +1 -1
  139. package/wc-renderer/WcResolver.d.ts +24 -13
  140. package/wc-renderer/WcResolver.js +1 -1
  141. package/wc-renderer/WcViewRenderer.d.ts +4 -5
  142. package/wc-renderer/WcViewRenderer.js +1 -1
  143. package/wc-renderer/decorators/wcStaticDecorator.d.ts +4 -7
  144. package/wc-renderer/decorators/wcStaticDecorator.js +1 -1
  145. package/wc-renderer/decorators/wcUpdatingDecorator.d.ts +8 -8
  146. package/wc-renderer/icons/feedbackIcons.d.ts +10 -23
  147. package/wc-renderer/icons/promoCodeCopyIcons.d.ts +1 -1
  148. package/wc-renderer/icons/promoCodeStrokeIcons.d.ts +1 -1
  149. package/wc-renderer/observers/createObservers.d.ts +6 -4
  150. package/wc-renderer/observers/observerType.d.ts +5 -5
  151. package/wc-renderer/subscriptions/createSubscriptions.d.ts +7 -4
  152. package/wc-renderer/utils/platforms.d.ts +5 -5
  153. package/action/actions/TrackClick.d.ts +0 -5
  154. package/action/actions/TrackClick.js +0 -1
  155. package/document-model/DocumentModel.d.ts +0 -30
  156. package/sdk/ComponentLifeCycleContainerType.d.ts +0 -5
  157. package/sdk/ComponentLifeCycleContainerType.js +0 -1
  158. package/sdk/TranslationUtils.spec.d.ts +0 -1
  159. package/sdk/TranslationUtils.spec.js +0 -1
  160. package/sdk/context/ContextSDK.spec.d.ts +0 -1
  161. package/sdk/context/ContextSDK.spec.js +0 -1
  162. package/wc-renderer/WcFactory.spec.d.ts +0 -1
  163. package/wc-renderer/WcFactory.spec.js +0 -1
  164. package/wc-renderer/WcRegister.spec.d.ts +0 -1
  165. package/wc-renderer/WcRegister.spec.js +0 -1
@@ -1,5 +1,7 @@
1
- export default PrizePoolEvents;
2
- declare namespace PrizePoolEvents {
3
- const PRIZE_POOL_UPDATED: string;
4
- const REQUEST_PRIZE_POOL: string;
1
+ export interface PrizePoolEventsI {
2
+ PRIZE_POOL_UPDATED: 'PRIZE_POOL_UPDATED';
3
+ REQUEST_PRIZE_POOL: 'REQUEST_PRIZE_POOL';
5
4
  }
5
+ export type PrizePoolEventT = PrizePoolEventsI[keyof PrizePoolEventsI];
6
+ declare const PrizePoolEvents: PrizePoolEventsI;
7
+ export default PrizePoolEvents;
@@ -1,7 +1,7 @@
1
+ import PrizePool from "./PrizePool";
1
2
  export default class PrizePoolFactory {
2
- constructor(httpClient: any, configService: any);
3
3
  httpClient: any;
4
4
  configService: any;
5
+ constructor(httpClient: any, configService: any);
5
6
  get(config: any): PrizePool;
6
7
  }
7
- import PrizePool from "./PrizePool";
@@ -1,9 +1,9 @@
1
1
  export default class DragEventListener {
2
- constructor(eventEmitter: any, documentModel: any);
3
2
  eventEmitter: any;
4
3
  documentModel: any;
5
4
  dragStartSubscription: any;
6
5
  dragEndSubscription: any;
6
+ constructor(eventEmitter: any, documentModel: any);
7
7
  updateHovered(type: any): void;
8
8
  destroy(): void;
9
9
  }
@@ -1,6 +1,6 @@
1
- export function applySysClassPrefix(str: any): string;
2
- export function applySysAttrPrefix(str: any): string;
3
- export namespace RenderConstants {
4
- const SYSTEM_CLASS_PREFIX: string;
5
- const SYSTEM_ATTRIBUTE_PREFIX: string;
6
- }
1
+ export declare const RenderConstants: {
2
+ readonly SYSTEM_CLASS_PREFIX: "cl-";
3
+ readonly SYSTEM_ATTRIBUTE_PREFIX: "cl-";
4
+ };
5
+ export declare function applySysClassPrefix(str: string): string;
6
+ export declare function applySysAttrPrefix(str: string): string;
@@ -1,15 +1,15 @@
1
- export namespace ViewRendererActionType {
2
- const COMPONENT_FOCUSED: string;
3
- const REMOVE_FOCUS: string;
4
- const SET_FOCUS: string;
5
- const COMPONENT_MOUSE_MOVE: string;
6
- const COMPONENT_CLICKED: string;
7
- const COMPONENT_DOUBLE_CLICKED: string;
8
- const COMPONENT_DRAGSTART: string;
9
- const COMPONENT_DRAGEND: string;
10
- const COMPONENT_DRAGOVER: string;
11
- const DOCUMENT_DROP: string;
12
- const SHOW_INLINE_EDIT: string;
13
- const VIEW_COMPONENT_RESOURCES_LOADED: string;
14
- const FAILED_TO_LOAD_COMPONENT_RESOURCE: string;
15
- }
1
+ export declare const ViewRendererActionType: {
2
+ COMPONENT_FOCUSED: string;
3
+ REMOVE_FOCUS: string;
4
+ SET_FOCUS: string;
5
+ COMPONENT_MOUSE_MOVE: string;
6
+ COMPONENT_CLICKED: string;
7
+ COMPONENT_DOUBLE_CLICKED: string;
8
+ COMPONENT_DRAGSTART: string;
9
+ COMPONENT_DRAGEND: string;
10
+ COMPONENT_DRAGOVER: string;
11
+ DOCUMENT_DROP: string;
12
+ SHOW_INLINE_EDIT: string;
13
+ VIEW_COMPONENT_RESOURCES_LOADED: string;
14
+ FAILED_TO_LOAD_COMPONENT_RESOURCE: string;
15
+ };
@@ -1,11 +1,12 @@
1
- export default class ClDocumentResizeListener {
1
+ import DefaultEventEmitter from '@claspo/common/DefaultEventEmitter';
2
+ export default class ClDocumentResizeListener extends DefaultEventEmitter {
2
3
  static changeEventName: string;
3
- constructor(documentModel: any, containerElement: any);
4
4
  documentModel: any;
5
5
  containerElement: any;
6
6
  mobileBreakpointWidth: any;
7
- _isMobile: boolean;
8
- isMobile(): boolean;
7
+ _isMobile: any;
8
+ constructor(documentModel: any, containerElement: any);
9
+ isMobile(): any;
9
10
  destroy(): void;
10
11
  _calculateMobileFlag(): boolean;
11
12
  _getElementsWidthPx(element: any): number;
@@ -1 +1 @@
1
- import DefaultEventEmitter from"@claspo/common/DefaultEventEmitter";import{DocumentModelUpdateType}from"../../document-model/DocumentModel";export default class ClDocumentResizeListener extends DefaultEventEmitter{constructor(e,t){super(),this.documentModel=e,this.containerElement=t,this.mobileBreakpointWidth=this.documentModel.getShared().mobileBreakpointWidth,this._isMobile=this._calculateMobileFlag(),this.documentModel.on(DocumentModelUpdateType.ENVIRONMENT_UPDATE,e=>{this._isMobile=e.isMobileEnv,this.emit(ClDocumentResizeListener.changeEventName,this._isMobile)})}isMobile(){return this._isMobile}destroy(){super.destroy()}_calculateMobileFlag(){return this._getElementsWidthPx(this.containerElement)<=this.mobileBreakpointWidth}_getElementsWidthPx(e){return parseInt(getComputedStyle(e).width)}}ClDocumentResizeListener.changeEventName="CHANGE";
1
+ import DefaultEventEmitter from"@claspo/common/DefaultEventEmitter";import{DocumentModelUpdateType}from"../../document-model/DocumentModelService";export default class ClDocumentResizeListener extends DefaultEventEmitter{constructor(e,t){super(),this.documentModel=e,this.containerElement=t,this.mobileBreakpointWidth=this.documentModel.getShared().mobileBreakpointWidth,this._isMobile=this._calculateMobileFlag(),this.documentModel.on(DocumentModelUpdateType.ENVIRONMENT_UPDATE,e=>{this._isMobile=e.isMobileEnv,this.emit(ClDocumentResizeListener.changeEventName,this._isMobile)})}isMobile(){return this._isMobile}destroy(){super.destroy()}_calculateMobileFlag(){return this._getElementsWidthPx(this.containerElement)<=this.mobileBreakpointWidth}_getElementsWidthPx(e){return parseInt(getComputedStyle(e).width)}}ClDocumentResizeListener.changeEventName="CHANGE";
@@ -1,25 +1,40 @@
1
+ import DocumentModelService from "../../document-model/DocumentModelService";
2
+ import HttpClient from "@claspo/common/network/HttpClient";
3
+ import { ClBaseComponentPropsI, ClDocumentSharedI } from "@claspo/common/document/Document.interface";
4
+ import { PlatformEnvT } from "../../sdk/WcElement";
5
+ export interface ParsedBackgroundI {
6
+ url: string | null;
7
+ positionOptions: string | null;
8
+ }
9
+ export interface EnvUrlMapValueI {
10
+ originalSVGResourceURL: string;
11
+ inlineSvgString: string | null;
12
+ positionOptions: string | null;
13
+ }
14
+ export interface EnvUrlMapsI {
15
+ desktop: Map<string, EnvUrlMapValueI>;
16
+ mobile: Map<string, EnvUrlMapValueI>;
17
+ }
18
+ export interface SubscriptionI {
19
+ off(): void;
20
+ }
21
+ export type GetSharedCallbackT = () => ClDocumentSharedI;
22
+ export type GetPropsCallbackT = () => ClBaseComponentPropsI;
23
+ export type GetEnvCallbackT = () => PlatformEnvT;
1
24
  export default class ColorSchemaListener {
2
- constructor(documentModel: any, hostElement: any, getSharedCb: any, getPropsCb: any, getEnvCb: any, httpClient: any);
3
- hostElement: any;
4
- documentModel: any;
5
- getSharedCb: any;
6
- getPropsCb: any;
7
- getEnvCb: any;
8
- httpClient: any;
9
- subscription: any;
10
- envUrlMaps: {
11
- desktop: Map<any, any>;
12
- mobile: Map<any, any>;
13
- };
14
- parseBackground(background: any): {
15
- url: string;
16
- positionOptions: string;
17
- } | {
18
- url: null;
19
- positionOptions: null;
20
- };
21
- apply(env: any): Promise<void>;
22
- on(): ColorSchemaListener;
23
- _applyHostElementBackground(value: any, cssVarsMap?: {}): void;
24
- _buildBackgroundUrl(value: any, cssVarsMap: any): string;
25
+ hostElement: HTMLElement;
26
+ documentModel: DocumentModelService;
27
+ getSharedCb: GetSharedCallbackT;
28
+ getPropsCb: GetPropsCallbackT;
29
+ getEnvCb: GetEnvCallbackT;
30
+ httpClient: typeof HttpClient;
31
+ subscription: SubscriptionI | null;
32
+ envUrlMaps: EnvUrlMapsI;
33
+ constructor(documentModel: DocumentModelService, hostElement: HTMLElement, getSharedCb: GetSharedCallbackT, getPropsCb: GetPropsCallbackT, getEnvCb: GetEnvCallbackT, httpClient: typeof HttpClient);
34
+ parseBackground(background: string | undefined): ParsedBackgroundI;
35
+ apply(env: PlatformEnvT): Promise<void>;
36
+ on(): this;
37
+ _applyHostElementBackground(value: EnvUrlMapValueI | undefined, cssVarsMap: Record<string, string> | undefined): void;
38
+ _buildBackgroundUrl(value: EnvUrlMapValueI, cssVarsMap: Record<string, string>): string;
39
+ off(): void;
25
40
  }
@@ -1 +1 @@
1
- import{DocumentModelUpdateType}from"../../document-model/DocumentModel";import ErrorLogger from"../../error/ErrorLogger";export default class ColorSchemaListener{constructor(t,e,n,o,i,s){this.hostElement=e,this.documentModel=t,this.getSharedCb=n,this.getPropsCb=o,this.getEnvCb=i,this.httpClient=s,this.subscription=null,this.envUrlMaps={desktop:new Map,mobile:new Map}}parseBackground(t){const e=String(t||"");if(e.includes("url")){const[t,n]=e.split("(")[1].split(")");return{url:t.replace(/['"]+/g,""),positionOptions:n.replace(";","")}}return{url:null,positionOptions:null}}apply(t){const e=this.getPropsCb();return e.backgroundDynamicInlineSVGElements[t].forEach(n=>{var o,i,s,l,r;const a=null===(i=null===(o=e.adaptiveStyles)||void 0===o?void 0:o[t])||void 0===i?void 0:i.find(t=>t.element===n),c=(null===(s=e.styles)||void 0===s?void 0:s.find(t=>t.element===n))||{},u=(null===(l=null==c?void 0:c.styleAttributes)||void 0===l?void 0:l.background)||(null===(r=null==a?void 0:a.styleAttributes)||void 0===r?void 0:r.background),p=this.parseBackground(u);p.url&&this.envUrlMaps[t].set(n,{originalSVGResourceURL:p.url,inlineSvgString:null,positionOptions:p.positionOptions})}),Promise.all([...this.envUrlMaps[t].entries()].map(([e,n])=>this.httpClient.execute(n.originalSVGResourceURL).then(t=>t.text()).then(o=>{this.envUrlMaps[t].set(e,Object.assign(Object.assign({},n),{inlineSvgString:o}))}))).then(()=>{var e;this._applyHostElementBackground(this.envUrlMaps[t].get("host"),null===(e=this.getSharedCb().theme)||void 0===e?void 0:e.schema)}).catch(t=>{console.error(t),ErrorLogger.log(`Failed to load/apply backgroundDynamicInlineSVGElements[${this.getPropsCb().backgroundDynamicInlineSVGElements}] ${t}`)})}on(){return this.subscription=this.documentModel.on(DocumentModelUpdateType.THEME_UPDATE,t=>{this._applyHostElementBackground(this.envUrlMaps[this.getEnvCb()].get("host"),t.schema)}),this}_applyHostElementBackground(t,e={}){t&&(this.hostElement.style.background=this._buildBackgroundUrl(t,e))}_buildBackgroundUrl(t,e){const n=t.inlineSvgString.trim().replace("var(--cl-schema-accent)",e.accent);return`url('data:image/svg+xml,${encodeURIComponent(n)}')${t.positionOptions}`}}
1
+ import{DocumentModelUpdateType}from"../../document-model/DocumentModelService";import ErrorLogger from"../../error/ErrorLogger";export default class ColorSchemaListener{constructor(t,e,n,o,i,s){this.hostElement=e,this.documentModel=t,this.getSharedCb=n,this.getPropsCb=o,this.getEnvCb=i,this.httpClient=s,this.subscription=null,this.envUrlMaps={desktop:new Map,mobile:new Map}}parseBackground(t){const e=String(t||"");if(e.includes("url")){const[t,n]=e.split("(")[1].split(")");return{url:t.replace(/['"]+/g,""),positionOptions:n.replace(";","")}}return{url:null,positionOptions:null}}apply(t){const e=this.getPropsCb();return e.backgroundDynamicInlineSVGElements[t].forEach(n=>{var o,i,s,r,l;const a=null===(i=null===(o=e.adaptiveStyles)||void 0===o?void 0:o[t])||void 0===i?void 0:i.find(t=>t.element===n),c=(null===(s=e.styles)||void 0===s?void 0:s.find(t=>t.element===n))||{},u=(null===(r=null==c?void 0:c.styleAttributes)||void 0===r?void 0:r.background)||(null===(l=null==a?void 0:a.styleAttributes)||void 0===l?void 0:l.background),p=this.parseBackground(u);p.url&&this.envUrlMaps[t].set(n,{originalSVGResourceURL:p.url,inlineSvgString:null,positionOptions:p.positionOptions})}),Promise.all([...this.envUrlMaps[t].entries()].map(([e,n])=>this.httpClient.execute(n.originalSVGResourceURL).then(t=>t.text()).then(o=>{this.envUrlMaps[t].set(e,Object.assign(Object.assign({},n),{inlineSvgString:o}))}))).then(()=>{this._applyHostElementBackground(this.envUrlMaps[t].get("host"),this.getSharedCb().cssVars)}).catch(t=>{console.error(t),ErrorLogger.log(`Failed to load/apply backgroundDynamicInlineSVGElements[${this.getPropsCb().backgroundDynamicInlineSVGElements}] ${t}`)})}on(){return this.subscription=this.documentModel.on(DocumentModelUpdateType.COLOR_SCHEMA_UPDATE,t=>{this._applyHostElementBackground(this.envUrlMaps[this.getEnvCb()].get("host"),t)}),this}_applyHostElementBackground(t,e){t&&e&&(this.hostElement.style.background=this._buildBackgroundUrl(t,e))}_buildBackgroundUrl(t,e){const n=t.inlineSvgString.trim().replace("var(--cl-schema-accent)",e["cl-schema-accent"]);return`url('data:image/svg+xml,${encodeURIComponent(n)}')${t.positionOptions}`}off(){var t;null===(t=this.subscription)||void 0===t||t.off()}}
@@ -1,6 +1,7 @@
1
1
  export default class CommonStylesService {
2
- static applyHostStyles(componentType: any, element: any, componentModel: null | undefined, layoutType: any): void;
3
- styles: string;
2
+ styles: any;
3
+ static applyHostStyles(componentType: any, element: any, componentModel: any, layoutType: any): void;
4
+ constructor();
4
5
  setStyles(additionalStyles?: string): void;
5
- getStyles(): string;
6
+ getStyles(): any;
6
7
  }
@@ -1,12 +1,18 @@
1
- export default class DefaultMediaQueryListener {
1
+ import DefaultEventEmitter from "@claspo/common/DefaultEventEmitter";
2
+ import DocumentModelService from "../../document-model/DocumentModelService";
3
+ import { WidgetInitConfigI } from "@claspo/common/WidgetInitConfig.interface";
4
+ export interface EnvironmentUpdatePayloadI {
5
+ isMobileEnv: boolean;
6
+ }
7
+ export default class DefaultMediaQueryListener extends DefaultEventEmitter {
2
8
  static changeEventName: string;
3
- constructor(documentModel: any, config: any);
4
- config: any;
5
- _isMobile: any;
6
- handleMobileBreakpoint(mobileBreakpointWidth: any): void;
7
- mobileBreakpointWidth: any;
8
- mediaQueryList: MediaQueryList | undefined;
9
- isMobile(): any;
10
- listener(mediaQueryListEvent: any): void;
9
+ config: WidgetInitConfigI;
10
+ mobileBreakpointWidth: number | string;
11
+ mediaQueryList: MediaQueryList;
12
+ _isMobile: boolean;
13
+ constructor(documentModel: DocumentModelService, config: WidgetInitConfigI);
14
+ handleMobileBreakpoint(mobileBreakpointWidth: number | string): void;
15
+ isMobile(): boolean;
16
+ listener(mediaQueryListEvent: MediaQueryListEvent): void;
11
17
  destroy(): void;
12
18
  }
@@ -1 +1 @@
1
- import DefaultEventEmitter from"@claspo/common/DefaultEventEmitter";import{DocumentModelUpdateType}from"../../document-model/DocumentModel";export default class DefaultMediaQueryListener extends DefaultEventEmitter{constructor(e,i){super(),this.config=i,this.handleMobileBreakpoint(e.getShared().mobileBreakpointWidth),e.on(DocumentModelUpdateType.ENVIRONMENT_UPDATE,({isMobileEnv:e})=>{this._isMobile=e,this.emit(DefaultMediaQueryListener.changeEventName,this._isMobile)})}handleMobileBreakpoint(e){this.mobileBreakpointWidth=e;const i=Number.isInteger(this.mobileBreakpointWidth)?`${this.mobileBreakpointWidth}px`:this.mobileBreakpointWidth;this.mediaQueryList=window.matchMedia(`(max-width: ${i})`),this.mediaQueryList.addListener(this.listener.bind(this)),this._isMobile=this.mediaQueryList.matches,this.emit(DefaultMediaQueryListener.changeEventName,this._isMobile)}isMobile(){return this.config.forceMobileEnv||this._isMobile}listener(e){this._isMobile=e.matches,this.emit(DefaultMediaQueryListener.changeEventName,this._isMobile)}destroy(){super.destroy(),this.mediaQueryList.removeListener(this.listener.bind(this))}}DefaultMediaQueryListener.changeEventName="CHANGE";
1
+ import DefaultEventEmitter from"@claspo/common/DefaultEventEmitter";import{DocumentModelUpdateType}from"../../document-model/DocumentModelService";export default class DefaultMediaQueryListener extends DefaultEventEmitter{constructor(e,i){super(),this.config=i,this.handleMobileBreakpoint(e.getShared().mobileBreakpointWidth),e.on(DocumentModelUpdateType.ENVIRONMENT_UPDATE,({isMobileEnv:e})=>{this._isMobile=e,this.emit(DefaultMediaQueryListener.changeEventName,this._isMobile)})}handleMobileBreakpoint(e){this.mobileBreakpointWidth=e;const i=Number.isInteger(this.mobileBreakpointWidth)?`${this.mobileBreakpointWidth}px`:this.mobileBreakpointWidth;this.mediaQueryList=window.matchMedia(`(max-width: ${i})`),this.mediaQueryList.addListener(this.listener.bind(this)),this._isMobile=this.mediaQueryList.matches,this.emit(DefaultMediaQueryListener.changeEventName,this._isMobile)}isMobile(){return this.config.forceMobileEnv||this._isMobile}listener(e){this._isMobile=e.matches,this.emit(DefaultMediaQueryListener.changeEventName,this._isMobile)}destroy(){super.destroy(),this.mediaQueryList.removeListener(this.listener.bind(this))}}DefaultMediaQueryListener.changeEventName="CHANGE";
@@ -1,4 +1,4 @@
1
- export class LoopAnimationStylesService {
1
+ export declare class LoopAnimationStylesService {
2
2
  static animationClassPrefix: string;
3
3
  static CL_DEFAULT_LOOP_ANIMATION_PULSE_BORDER_RADIUS: string;
4
4
  static CL_DEFAULT_LOOP_ANIMATION_PULSE_COLOR: string;
@@ -1,11 +1,24 @@
1
- export default class MobileDeviceOrientationListener {
1
+ import DefaultEventEmitter from '@claspo/common/DefaultEventEmitter';
2
+ import DocumentModelService from '../../document-model/DocumentModelService';
3
+ import ConfigService from '../../common/ConfigService';
4
+ export type OrientationT = 'PORTRAIT' | 'LANDSCAPE';
5
+ export interface EnvironmentUpdateValueI {
6
+ orientation?: OrientationT;
7
+ [key: string]: unknown;
8
+ }
9
+ export interface OrientationEventI {
10
+ detail?: {
11
+ orientation?: OrientationT;
12
+ };
13
+ }
14
+ export default class MobileDeviceOrientationListener extends DefaultEventEmitter {
2
15
  static changeEventName: string;
3
- constructor(documentModel: any, configService: any);
4
- documentModel: any;
5
- _orientation: any;
6
- handleOrientationChangeBound: (event: any) => void;
16
+ documentModel: DocumentModelService;
17
+ _orientation: OrientationT;
18
+ handleOrientationChangeBound: () => void;
19
+ constructor(documentModel: DocumentModelService, configService: ConfigService);
7
20
  isPortrait(): boolean;
8
- handleOrientationChange(event: any): void;
21
+ handleOrientationChange(event?: OrientationEventI): void;
9
22
  addOrientationChangeListener(): void;
10
23
  removeOrientationChangeListener(): void;
11
24
  destroy(): void;
@@ -1 +1 @@
1
- import DefaultEventEmitter from"@claspo/common/DefaultEventEmitter";import{detectOrientation}from"@claspo/common/utils/orientationUtils";import{isIOS}from"@claspo/common/utils/deviceUtils";import{DocumentModelUpdateType}from"../../document-model/DocumentModel";export default class MobileDeviceOrientationListener extends DefaultEventEmitter{constructor(e,t){var n;super(),this.documentModel=e,this._orientation=null!==(n=t.config.defaultOrientation)&&void 0!==n?n:detectOrientation(),this.documentModel.on(DocumentModelUpdateType.ENVIRONMENT_UPDATE,e=>{e.orientation&&(this._orientation=e.orientation,this.emit(MobileDeviceOrientationListener.changeEventName,this._orientation))}),this.handleOrientationChangeBound=this.handleOrientationChange.bind(this),this.addOrientationChangeListener()}isPortrait(){return"PORTRAIT"===this._orientation}handleOrientationChange(e){var t,n;this._orientation=null!==(n=null===(t=null==e?void 0:e.detail)||void 0===t?void 0:t.orientation)&&void 0!==n?n:detectOrientation(),this.emit(MobileDeviceOrientationListener.changeEventName,this._orientation)}addOrientationChangeListener(){!isIOS()&&window.screen.orientation?window.screen.orientation.addEventListener("change",this.handleOrientationChangeBound):"orientation"in window&&window.addEventListener("orientationchange",this.handleOrientationChangeBound)}removeOrientationChangeListener(){!isIOS()&&window.screen.orientation?window.screen.orientation.removeEventListener("change",this.handleOrientationChangeBound):"orientation"in window&&window.removeEventListener("orientationchange",this.handleOrientationChangeBound)}destroy(){super.destroy(),this.removeOrientationChangeListener()}}MobileDeviceOrientationListener.changeEventName="CHANGE";
1
+ import DefaultEventEmitter from"@claspo/common/DefaultEventEmitter";import{detectOrientation}from"@claspo/common/utils/orientationUtils";import{isIOS}from"@claspo/common/utils/deviceUtils";import{DocumentModelUpdateType}from"../../document-model/DocumentModelService";export default class MobileDeviceOrientationListener extends DefaultEventEmitter{constructor(e,t){var n;super(),this.documentModel=e,this._orientation=null!==(n=t.config.defaultOrientation)&&void 0!==n?n:detectOrientation(),this.documentModel.on(DocumentModelUpdateType.ENVIRONMENT_UPDATE,e=>{e.orientation&&(this._orientation=e.orientation,this.emit(MobileDeviceOrientationListener.changeEventName,this._orientation))}),this.handleOrientationChangeBound=this.handleOrientationChange.bind(this),this.addOrientationChangeListener()}isPortrait(){return"PORTRAIT"===this._orientation}handleOrientationChange(e){var t,n;this._orientation=null!==(n=null===(t=null==e?void 0:e.detail)||void 0===t?void 0:t.orientation)&&void 0!==n?n:detectOrientation(),this.emit(MobileDeviceOrientationListener.changeEventName,this._orientation)}addOrientationChangeListener(){!isIOS()&&window.screen.orientation?window.screen.orientation.addEventListener("change",this.handleOrientationChangeBound):"orientation"in window&&window.addEventListener("orientationchange",this.handleOrientationChangeBound)}removeOrientationChangeListener(){!isIOS()&&window.screen.orientation?window.screen.orientation.removeEventListener("change",this.handleOrientationChangeBound):"orientation"in window&&window.removeEventListener("orientationchange",this.handleOrientationChangeBound)}destroy(){super.destroy(),this.removeOrientationChangeListener()}}MobileDeviceOrientationListener.changeEventName="CHANGE";
@@ -1,13 +1,15 @@
1
+ import Counter from "./Counter";
2
+ import DefaultEventEmitter from '@claspo/common/DefaultEventEmitter';
3
+ export interface ResourceCountersI {
4
+ pending: Counter;
5
+ }
1
6
  export default class ComponentResourceManager {
2
- constructor(componentId: any, systemEventEmitter: any, isStaticEntryModule: any);
3
- componentId: any;
4
- systemEventEmitter: any;
5
- isStaticEntryModule: any;
6
- counters: {
7
- pending: Counter;
8
- };
7
+ componentId: string;
8
+ systemEventEmitter: DefaultEventEmitter;
9
+ isStaticEntryModule: boolean;
10
+ counters: ResourceCountersI;
11
+ constructor(componentId: string, systemEventEmitter: DefaultEventEmitter, isStaticEntryModule: boolean);
9
12
  getPending: () => Counter;
10
- onCounterStateUpdate: (count: any) => void;
11
- onResourceLoadFailure: (src: any) => void;
13
+ onCounterStateUpdate: (count: number) => void;
14
+ onResourceLoadFailure: (src: string) => void;
12
15
  }
13
- import Counter from "./Counter";
@@ -1,7 +1,8 @@
1
+ export type CounterUpdateCallbackT = (count: number) => void;
1
2
  export default class Counter {
2
- constructor(onUpdateCb: any);
3
3
  _count: number;
4
- onUpdateCb: any;
4
+ onUpdateCb: CounterUpdateCallbackT;
5
+ constructor(onUpdateCb: CounterUpdateCallbackT);
5
6
  increment(): void;
6
7
  decrement(): void;
7
8
  count(): number;
@@ -1,7 +1,7 @@
1
1
  export default class ViewResourcesManager {
2
- constructor(systemEventEmitter: any);
3
2
  systemEventEmitter: any;
4
- componentResourcesMap: Map<any, any>;
3
+ componentResourcesMap: any;
4
+ constructor(systemEventEmitter: any);
5
5
  registerComponent(id: any, componentResourceManager: any): void;
6
6
  _onComponentResourcesLoaded: (componentId: any) => void;
7
7
  viewHasPendingResources(): boolean;
@@ -1,7 +1,7 @@
1
- export function changeAlpha(color: any, value: any): any;
2
- export function getAlpha(color: any): any;
3
- export function lighten(color: any, value: any): any;
4
- export function darken(color: any, value: any): any;
5
- export function getContrastRatio(color1: any, color2: any): number;
6
- export const whiteColor: "rgb(255, 255, 255)";
7
- export const blackColor: "rgb(0, 0, 0)";
1
+ export declare const whiteColor = "rgb(255, 255, 255)";
2
+ export declare const blackColor = "rgb(0, 0, 0)";
3
+ export declare function changeAlpha(color: string, value: number): string;
4
+ export declare function getAlpha(color: string): number;
5
+ export declare function lighten(color: string, value: number): string;
6
+ export declare function darken(color: string, value: number): string;
7
+ export declare function getContrastRatio(color1: string, color2: string): number;
@@ -1,10 +1,10 @@
1
+ declare const ComponentType: {
2
+ CONTAINER: string;
3
+ TEXT: string;
4
+ INPUT: string;
5
+ BUTTON: string;
6
+ IMAGE: string;
7
+ VIDEO: string;
8
+ COLUMN: string;
9
+ };
1
10
  export default ComponentType;
2
- declare namespace ComponentType {
3
- const CONTAINER: string;
4
- const TEXT: string;
5
- const INPUT: string;
6
- const BUTTON: string;
7
- const IMAGE: string;
8
- const VIDEO: string;
9
- const COLUMN: string;
10
- }
@@ -1,3 +1,3 @@
1
- export function setValidStyles(inputElement: any, tooltipElement: any): void;
2
- export function setInvalidStyle(inputElement: any, tooltipElement: any, error: any, htmlDocumentObject: any): void;
3
- export function setPendingStyle(inputElement: any, tooltipElement: any): void;
1
+ export declare function setValidStyles(inputElement: HTMLElement, tooltipElement: HTMLElement | null): void;
2
+ export declare function setInvalidStyle(inputElement: HTMLElement, tooltipElement: HTMLElement | null, error: string, htmlDocumentObject?: Document): void;
3
+ export declare function setPendingStyle(inputElement: HTMLElement, tooltipElement: HTMLElement | null): void;
package/sdk/FormUtils.js CHANGED
@@ -1 +1 @@
1
- import{addTooltipStyles,createTooltipText,removeTooltipStyles,setTooltipPosition}from"./TooltipUtils";export function setValidStyles(t,i){t.classList.remove("invalid"),i.style.visibility="hidden"}export function setInvalidStyle(t,i,e,o){let l;o=o||document,t.classList.add("invalid"),i.style.visibility="visible";i.onmouseenter=()=>{addTooltipStyles(o),l=createTooltipText(e),o.body.append(l),l.style.visibility="visible",setTooltipPosition({triggerElement:i,tooltipElement:l,htmlDocumentObject:o})},i.onmouseleave=()=>{l&&(l.remove(),removeTooltipStyles(o))}}export function setPendingStyle(t,i){i.style.visibility="hidden",t.classList.contains("invalid")&&t.classList.remove("invalid")}
1
+ import{addTooltipStyles,createTooltipText,removeTooltipStyles,setTooltipPosition}from"./TooltipUtils";export function setValidStyles(t,i){t.classList.remove("invalid"),i&&(i.style.visibility="hidden")}export function setInvalidStyle(t,i,e,o){o=o||document;let l=null;t.classList.add("invalid"),i&&(i.style.visibility="visible");const s=()=>{addTooltipStyles(o),l=createTooltipText(e),o.body.append(l),l.style.visibility="visible",setTooltipPosition({triggerElement:i,tooltipElement:l,htmlDocumentObject:o})},n=()=>{l&&(l.remove(),removeTooltipStyles(o))};i&&(i.onmouseenter=s,i.onmouseleave=n)}export function setPendingStyle(t,i){i&&(i.style.visibility="hidden"),t.classList.contains("invalid")&&t.classList.remove("invalid")}
@@ -1,7 +1,27 @@
1
- export function setStylesToElement(element: any, style: any): void;
2
- export function getStylesFromElement(element: any, properties: any): any;
3
- export function getLabelParamsFromProps(props: any, env: any): any;
4
- export function applyInputLabelStyles(props: any, env: any, rootElement: any, selector: any): void;
5
- export function resizeElementTextToFitContainer(params: any, ...args: any[]): void;
6
- export function setInputHostSize(props: any, env: any, hostElement: any, inputElement: any, labelElement: any): void;
7
- export function setFocusOutline(element: any, elementToApplyVariable: any): any;
1
+ import { PlatformEnvT } from './WcElement';
2
+ import { ClBaseComponentPropsI } from '@claspo/common/document/Document.interface';
3
+ export interface LabelParamsI {
4
+ enabled?: boolean;
5
+ position?: 'TOP' | 'LEFT';
6
+ margin?: number;
7
+ }
8
+ export interface PaddingsI {
9
+ top?: number;
10
+ right?: number;
11
+ bottom?: number;
12
+ left?: number;
13
+ }
14
+ export interface ResizeTextParamsI {
15
+ childElement: HTMLElement;
16
+ parentElement: HTMLElement;
17
+ paddings?: PaddingsI;
18
+ allowMultiline?: boolean;
19
+ }
20
+ export declare function setStylesToElement(element: HTMLElement, style: Record<string, string>): void;
21
+ export declare function getStylesFromElement(element: HTMLElement, properties: string[]): Record<string, string>;
22
+ export declare function getLabelParamsFromProps(props: ClBaseComponentPropsI, env: PlatformEnvT): LabelParamsI | undefined;
23
+ export declare function applyInputLabelStyles(props: ClBaseComponentPropsI, env: PlatformEnvT, rootElement: Element | ShadowRoot, selector: string): void;
24
+ export declare function resizeElementTextToFitContainer(params: ResizeTextParamsI): void;
25
+ export declare function resizeElementTextToFitContainer(childElement: HTMLElement, parentElement: HTMLElement, paddings?: PaddingsI): void;
26
+ export declare function setInputHostSize(props: ClBaseComponentPropsI, env: PlatformEnvT, hostElement: HTMLElement, inputElement: HTMLElement, labelElement: HTMLElement | null): void;
27
+ export declare function setFocusOutline(element: HTMLElement | null, elementToApplyVariable?: HTMLElement): string | null;
@@ -1 +1 @@
1
- import{changeAlpha}from"./ColorUtils";import insertHtmlIntoElement from"@claspo/common/dom/insertHtmlIntoElement";export function setStylesToElement(t,e){Object.keys(e).forEach(l=>{t.style[l]=e[l]})}export function getStylesFromElement(t,e){const l=window.getComputedStyle(t);return e.reduce((t,e)=>(t[e]=l.getPropertyValue(e),t),{})}export function getLabelParamsFromProps(t,e){var l,o;let n;return t.styles&&(n=null===(l=t.styles.find(t=>"label"===t.element))||void 0===l?void 0:l.params),t.adaptiveStyles&&!n&&(n=null===(o=t.adaptiveStyles[e].find(t=>"label"===t.element))||void 0===o?void 0:o.params),n}export function applyInputLabelStyles(t,e,l,o){const n=l.querySelector(o),i=getLabelParamsFromProps(t,e);if(!i)return;const r=l.querySelector(".label");insertHtmlIntoElement({element:r,html:t.content.label}),"TOP"===i.position?(n.style.flexDirection="column",n.style.alignItems="unset",setStylesToElement(r,{marginRight:0,marginBottom:`${i.margin}px`})):(n.style.flexDirection="row",n.style.alignItems="center",setStylesToElement(r,{marginRight:`${i.margin}px`,marginBottom:0})),i.enabled?r.style.display="":r.style.display="none"}export function resizeElementTextToFitContainer(t){let e,l,o,n;1===arguments.length?(e=t.childElement,l=t.parentElement,o=t.paddings,n=t.allowMultiline):(e=arguments[0],l=arguments[1],o=arguments[2]);if(n){let t=120,n=!1;for(;!n&&t>12;)t--,e.style.fontSize=`${t}px`,e.style.lineHeight=`${t}px`,n=checkIfTextFitting(e,l,o);return}let i=12,r=!1;for(;!r&&i<120;)i++,e.style.fontSize=`${i}px`,e.style.lineHeight=`${i}px`,r=getIsOverflown(e,l,o);r&&(i--,e.style.fontSize=`${i}px`,e.style.lineHeight=`${i}px`)}function checkIfTextFitting(t,e,{top:l=0,right:o=0,bottom:n=0,left:i=0}={top:0,right:0,bottom:0,left:0}){return t.offsetWidth<=e.clientWidth-(i+o)&&t.offsetHeight<=e.clientHeight-(l+n)}function getIsOverflown(t,e,{top:l=0,right:o=0,bottom:n=0,left:i=0}={top:0,right:0,bottom:0,left:0}){return t.offsetWidth>e.clientWidth-(i+o)||t.offsetHeight>e.clientHeight-(l+n)}function getInputStylesWithSizeFromProps(t,e){var l;let o;if(t.styles){const e=null===(l=t.styles.find(t=>"input"===t.element))||void 0===l?void 0:l.styleAttributes;(null==e?void 0:e.width)&&(o=e)}if(t.adaptiveStyles&&!o){const l=t.adaptiveStyles[e].find(t=>"input"===t.element).styleAttributes;(null==l?void 0:l.width)&&(o=l)}return o}export function setInputHostSize(t,e,l,o,n){const i=getInputStylesWithSizeFromProps(t,e);if(!i)return;const r=getLabelParamsFromProps(t,e),s=n&&r&&r.enabled&&"TOP"===r.position?n.getBoundingClientRect().height+r.margin:0;i.width&&(i.width.includes("100%")?(o.style.width="100%",l.style.width=i.width):l.style.width="auto"),i.height&&(i.height.includes("100%")?(o.style.height="100%",l.style.height=i.height):l.style.height=`${parseFloat(i.height)+s}px`)}export function setFocusOutline(t,e){let l;const o=e||t,n=["transparent","initial"];if(t)return t.style.borderColor&&!n.includes(t.style.borderColor)&&(parseFloat(t.style.borderWidth)||parseFloat(t.style.borderBottomWidth))&&(l=setElementOutlineData(o,t,"borderColor")),!l&&t.style.getPropertyValue("--borderBottomColor")&&!n.includes(t.style.getPropertyValue("--borderBottomColor"))&&parseFloat(t.style.getPropertyValue("--borderBottomWidth"))&&(l=setElementOutlineData(o,t,"--borderBottomColor")),l||!t.style.backgroundColor||n.includes(t.style.backgroundColor)||(l=setElementOutlineData(o,t,"backgroundColor")),l||!t.style.color||n.includes(t.style.color)||(l=setElementOutlineData(o,t,"color")),l||(o.classList.remove("focus-outline-defined"),null)}function setElementOutlineData(t,e,l){const o=parseColorValue(e,l);if(o){const e=changeAlpha(o,.5);return t.classList.add("focus-outline-defined"),t.style.setProperty("--clFocusOutline",`3px solid ${e}`),e}return null}function parseColorValue(t,e){const l=getComputedStyle(t)[e]||t.style.getPropertyValue(e);if(l&&l.includes("rgb")&&(!(l.split("rgb").length>2)||l.includes("#")))return l}
1
+ import{changeAlpha}from"./ColorUtils";import insertHtmlIntoElement from"@claspo/common/dom/insertHtmlIntoElement";export function setStylesToElement(t,e){Object.keys(e).forEach(l=>{t.style[l]=e[l]})}export function getStylesFromElement(t,e){const l=window.getComputedStyle(t);return e.reduce((t,e)=>(t[e]=l.getPropertyValue(e),t),{})}export function getLabelParamsFromProps(t,e){var l,o;let n;return t.styles&&(n=null===(l=t.styles.find(t=>"label"===t.element))||void 0===l?void 0:l.params),t.adaptiveStyles&&!n&&(n=null===(o=t.adaptiveStyles[e].find(t=>"label"===t.element))||void 0===o?void 0:o.params),n}export function applyInputLabelStyles(t,e,l,o){var n;const i=l.querySelector(o),r=getLabelParamsFromProps(t,e);if(!r)return;const s=l.querySelector(".label");s&&(insertHtmlIntoElement({element:s,html:(null===(n=t.content)||void 0===n?void 0:n.label)||""}),"TOP"===r.position?(i.style.flexDirection="column",i.style.alignItems="unset",setStylesToElement(s,{marginRight:"0",marginBottom:`${r.margin}px`})):(i.style.flexDirection="row",i.style.alignItems="center",setStylesToElement(s,{marginRight:`${r.margin}px`,marginBottom:"0"})),r.enabled?s.style.display="":s.style.display="none")}export function resizeElementTextToFitContainer(t,e,l){let o,n,i,r;if(1===arguments.length&&"object"==typeof t&&"childElement"in t){const e=t;o=e.childElement,n=e.parentElement,i=e.paddings,r=e.allowMultiline}else o=t,n=e,i=l;if(r){let t=120,e=!1;for(;!e&&t>12;)t--,o.style.fontSize=`${t}px`,o.style.lineHeight=`${t}px`,e=checkIfTextFitting(o,n,i);return}let s=12,a=!1;for(;!a&&s<120;)s++,o.style.fontSize=`${s}px`,o.style.lineHeight=`${s}px`,a=getIsOverflown(o,n,i);a&&(s--,o.style.fontSize=`${s}px`,o.style.lineHeight=`${s}px`)}function checkIfTextFitting(t,e,{top:l=0,right:o=0,bottom:n=0,left:i=0}={top:0,right:0,bottom:0,left:0}){return t.offsetWidth<=e.clientWidth-(i+o)&&t.offsetHeight<=e.clientHeight-(l+n)}function getIsOverflown(t,e,{top:l=0,right:o=0,bottom:n=0,left:i=0}={top:0,right:0,bottom:0,left:0}){return t.offsetWidth>e.clientWidth-(i+o)||t.offsetHeight>e.clientHeight-(l+n)}function getInputStylesWithSizeFromProps(t,e){var l;let o;if(t.styles){const e=null===(l=t.styles.find(t=>"input"===t.element))||void 0===l?void 0:l.styleAttributes;(null==e?void 0:e.width)&&(o=e)}if(t.adaptiveStyles&&!o){const l=t.adaptiveStyles[e].find(t=>"input"===t.element),n=null==l?void 0:l.styleAttributes;(null==n?void 0:n.width)&&(o=n)}return o}export function setInputHostSize(t,e,l,o,n){const i=getInputStylesWithSizeFromProps(t,e);if(!i)return;const r=getLabelParamsFromProps(t,e),s=n&&r&&r.enabled&&"TOP"===r.position?n.getBoundingClientRect().height+(r.margin||0):0;i.width&&(i.width.includes("100%")?(o.style.width="100%",l.style.width=i.width):l.style.width="auto"),i.height&&(i.height.includes("100%")?(o.style.height="100%",l.style.height=i.height):l.style.height=`${parseFloat(i.height)+s}px`)}export function setFocusOutline(t,e){let l=null;const o=e||t,n=["transparent","initial"];return t?(t.style.borderColor&&!n.includes(t.style.borderColor)&&(parseFloat(t.style.borderWidth)||parseFloat(t.style.borderBottomWidth))&&(l=setElementOutlineData(o,t,"borderColor")),!l&&t.style.getPropertyValue("--borderBottomColor")&&!n.includes(t.style.getPropertyValue("--borderBottomColor"))&&parseFloat(t.style.getPropertyValue("--borderBottomWidth"))&&(l=setElementOutlineData(o,t,"--borderBottomColor")),l||!t.style.backgroundColor||n.includes(t.style.backgroundColor)||(l=setElementOutlineData(o,t,"backgroundColor")),l||!t.style.color||n.includes(t.style.color)||(l=setElementOutlineData(o,t,"color")),l||(o.classList.remove("focus-outline-defined"),null)):null}function setElementOutlineData(t,e,l){const o=parseColorValue(e,l);if(o){const e=changeAlpha(o,.5);return t.classList.add("focus-outline-defined"),t.style.setProperty("--clFocusOutline",`3px solid ${e}`),e}return null}function parseColorValue(t,e){const l=getComputedStyle(t)[e]||t.style.getPropertyValue(e);if(l&&l.includes("rgb")&&(!(l.split("rgb").length>2)||l.includes("#")))return l}
@@ -1,9 +1,11 @@
1
- export function getAdaptiveStylesForPlatform(adaptiveStyles: any, platform: any, element: any): any;
2
- export function cloneAdaptiveStyles(adaptiveStyles?: any[]): any[];
3
- export function replaceStyleAttributes(adaptiveStyles: any, platform: any, element: any, styles?: {}): any;
4
- export function patchStyleAttributes(adaptiveStyles: any, platform: any, element: any, styles?: {}): any;
5
- export function cloneToAllPlatforms(value: any): {
6
- [x: string]: never[];
7
- };
8
- export function applySharedClasses(elementModel: any, shared: any): any;
9
- export function getPlaceholderColor(props: any, env: any, shared: any): any;
1
+ import { PlatformEnvT } from './WcElement';
2
+ import { BaseComponentAdaptiveStylesI, ClBaseComponentElementParamsI, ClComponentStyleAttributesI, ClDocumentSharedI } from '@claspo/common/document/Document.interface';
3
+ export declare function getAdaptiveStylesForPlatform(adaptiveStyles: BaseComponentAdaptiveStylesI | undefined, platform: PlatformEnvT, element: string): ClBaseComponentElementParamsI | undefined;
4
+ export declare function cloneAdaptiveStyles(adaptiveStyles?: ClBaseComponentElementParamsI[]): ClBaseComponentElementParamsI[];
5
+ export declare function replaceStyleAttributes(adaptiveStyles: BaseComponentAdaptiveStylesI, platform: PlatformEnvT, element: string, styles?: ClComponentStyleAttributesI): BaseComponentAdaptiveStylesI;
6
+ export declare function patchStyleAttributes(adaptiveStyles: BaseComponentAdaptiveStylesI, platform: PlatformEnvT, element: string, styles?: ClComponentStyleAttributesI): BaseComponentAdaptiveStylesI;
7
+ export declare function cloneToAllPlatforms(value: ClBaseComponentElementParamsI[]): BaseComponentAdaptiveStylesI;
8
+ export declare function applySharedClasses(elementModel: ClBaseComponentElementParamsI, shared: ClDocumentSharedI): ClBaseComponentElementParamsI;
9
+ export declare function getPlaceholderColor(props: {
10
+ adaptiveStyles: BaseComponentAdaptiveStylesI;
11
+ }, env: PlatformEnvT, shared: ClDocumentSharedI): string;
@@ -1 +1 @@
1
- import{PLATFORMS}from"../wc-renderer/utils/platforms";import{RenderConstants}from"../renderer/RenderConstants";export function getAdaptiveStylesForPlatform(t,e,s){var i;return null===(i=t[e])||void 0===i?void 0:i.find(t=>t.element===s)}export function cloneAdaptiveStyles(t=[]){return t.map(t=>Object.assign(Object.assign({},t),{styleAttributes:Object.assign({},t.styleAttributes)}))}export function replaceStyleAttributes(t,e,s,i={}){return Object.assign(Object.assign({},t),{[e]:t[e].map(t=>t.element===s?Object.assign(Object.assign({},t),{styleAttributes:Object.assign({},i)}):t)})}export function patchStyleAttributes(t,e,s,i={}){return Object.assign(Object.assign({},t),{[e]:t[e].map(t=>t.element===s?Object.assign(Object.assign({},t),{styleAttributes:Object.assign(Object.assign({},t.styleAttributes),i)}):t)})}export function cloneToAllPlatforms(t){return Object.values(PLATFORMS).reduce((e,s)=>Object.assign(e,{[s]:cloneAdaptiveStyles(t)}),{[PLATFORMS.DESKTOP]:[],[PLATFORMS.MOBILE]:[]})}export function applySharedClasses(t,e){let s=t;return(s.classes||"").split(" ").filter(t=>t.startsWith(RenderConstants.SYSTEM_CLASS_PREFIX)).forEach(t=>{var i;let l=null===(i=e.textClasses)||void 0===i?void 0:i[t];l&&(l.styleAttributes.fontFamily||(l.isHeader&&e.headerFontFamily&&(l=Object.assign(Object.assign({},l),{styleAttributes:Object.assign(Object.assign({},l.styleAttributes),{fontFamily:e.headerFontFamily})})),!l.isHeader&&e.textFontFamily&&(l=Object.assign(Object.assign({},l),{styleAttributes:Object.assign(Object.assign({},l.styleAttributes),{fontFamily:e.textFontFamily})}))),s=Object.assign(Object.assign({},s),{styleAttributes:Object.assign(Object.assign({},s.styleAttributes),l.styleAttributes),placeholderStyleAttributes:Object.assign(Object.assign({},s.placeholderStyleAttributes),l.placeholderStyleAttributes)}))}),s.styleAttributes.fontFamily||(s=Object.assign(Object.assign({},s),{styleAttributes:Object.assign(Object.assign({},s.styleAttributes),{fontFamily:e.textFontFamily})})),s}export function getPlaceholderColor(t,e,s){let i="rgb(0, 0, 0)";const l=t.adaptiveStyles[e].find(t=>"input"===t.element);if(l.placeholderStyleAttributes&&l.placeholderStyleAttributes.color)return l.placeholderStyleAttributes.color;const r=(l.classes||"").split(" ").filter(t=>t.startsWith(RenderConstants.SYSTEM_CLASS_PREFIX));if(!r.length)return i;let n=s.textClasses[r[0]];return n&&n.placeholderStyleAttributes&&n.placeholderStyleAttributes.color?n.placeholderStyleAttributes.color:i}
1
+ import{PLATFORMS}from"../wc-renderer/utils/platforms";import{RenderConstants}from"../renderer/RenderConstants";export function getAdaptiveStylesForPlatform(t,e,s){var i;return null===(i=null==t?void 0:t[e])||void 0===i?void 0:i.find(t=>t.element===s)}export function cloneAdaptiveStyles(t=[]){return t.map(t=>Object.assign(Object.assign({},t),{styleAttributes:Object.assign({},t.styleAttributes)}))}export function replaceStyleAttributes(t,e,s,i={}){return Object.assign(Object.assign({},t),{[e]:t[e].map(t=>t.element===s?Object.assign(Object.assign({},t),{styleAttributes:Object.assign({},i)}):t)})}export function patchStyleAttributes(t,e,s,i={}){return Object.assign(Object.assign({},t),{[e]:t[e].map(t=>t.element===s?Object.assign(Object.assign({},t),{styleAttributes:Object.assign(Object.assign({},t.styleAttributes),i)}):t)})}export function cloneToAllPlatforms(t){return Object.values(PLATFORMS).reduce((e,s)=>Object.assign(e,{[s]:cloneAdaptiveStyles(t)}),{desktop:[],mobile:[]})}export function applySharedClasses(t,e){let s=t;return(s.classes||"").split(" ").filter(t=>t.startsWith(RenderConstants.SYSTEM_CLASS_PREFIX)).forEach(t=>{var i;let l=null===(i=e.textClasses)||void 0===i?void 0:i[t];l&&(l.styleAttributes.fontFamily||(l.isHeader&&e.headerFontFamily&&(l=Object.assign(Object.assign({},l),{styleAttributes:Object.assign(Object.assign({},l.styleAttributes),{fontFamily:e.headerFontFamily})})),!l.isHeader&&e.textFontFamily&&(l=Object.assign(Object.assign({},l),{styleAttributes:Object.assign(Object.assign({},l.styleAttributes),{fontFamily:e.textFontFamily})}))),s=Object.assign(Object.assign({},s),{styleAttributes:Object.assign(Object.assign({},s.styleAttributes),l.styleAttributes),placeholderStyleAttributes:Object.assign(Object.assign({},s.placeholderStyleAttributes),l.placeholderStyleAttributes)}))}),s.styleAttributes.fontFamily||(s=Object.assign(Object.assign({},s),{styleAttributes:Object.assign(Object.assign({},s.styleAttributes),{fontFamily:e.textFontFamily})})),s}export function getPlaceholderColor(t,e,s){var i;let l="rgb(0, 0, 0)";const r=t.adaptiveStyles[e].find(t=>"input"===t.element);if(!r)return l;if(r.placeholderStyleAttributes&&r.placeholderStyleAttributes.color)return r.placeholderStyleAttributes.color;const n=(r.classes||"").split(" ").filter(t=>t.startsWith(RenderConstants.SYSTEM_CLASS_PREFIX));if(!n.length)return l;let a=null===(i=s.textClasses)||void 0===i?void 0:i[n[0]];return a&&a.placeholderStyleAttributes&&a.placeholderStyleAttributes.color?a.placeholderStyleAttributes.color:l}
@@ -1,28 +1,44 @@
1
- export function getMenuOverlayContentClassName(): string;
2
- export function createBackdrop(isBackdropDisabledOnUI: any): HTMLDivElement;
3
- export function createMenuOverlay(params: any): {
4
- backdrop: HTMLDivElement;
5
- overlay: HTMLDivElement;
6
- };
7
- export function getOverlayMenuPlacementData(triggerElement: any, overlayContent: any, offset: any, positionByDefault: any, isHorizontallyCentered: any, htmlDocumentObject: any): {
8
- coordinates: {
9
- left: string;
10
- top: string;
11
- bottom?: undefined;
12
- right?: undefined;
13
- } | {
14
- left: string;
15
- bottom: string;
16
- top?: undefined;
17
- right?: undefined;
18
- } | {
19
- right: string;
20
- top: string;
21
- left?: undefined;
22
- bottom?: undefined;
23
- } | undefined;
24
- position: string;
25
- };
26
- export function getOverlayBackgroundColor(backgroundColor: any, textColor: any): any;
27
- export function getOverlayBorderRadius(triggerHeight: any, overlayStyles: any): number;
28
- export function getMenuItemHoverColor(backgroundColor: any): any;
1
+ export type OverlayPositionT = 'top' | 'bottom' | 'left' | 'right' | 'undefined';
2
+ export interface MenuOverlayParamsI {
3
+ triggerElement: HTMLElement;
4
+ overlayStyles: string;
5
+ createOverlayContent: (backdrop: HTMLElement, overlayContent: HTMLElement) => void;
6
+ overlayWidth?: number;
7
+ overlayHeight?: number;
8
+ offset?: number;
9
+ onDestroy?: () => void;
10
+ positionByDefault?: OverlayPositionT;
11
+ isHorizontallyCentered?: boolean;
12
+ isBackdropDisabledOnUI?: boolean;
13
+ htmlDocumentObject?: Document;
14
+ }
15
+ export interface MenuOverlayResultI {
16
+ backdrop: HTMLElement;
17
+ overlay: HTMLElement;
18
+ }
19
+ export interface OverlayPlacementDataI {
20
+ coordinates: Record<string, string>;
21
+ position: OverlayPositionT;
22
+ }
23
+ export interface HorizontalOffsetDataI {
24
+ horizontalOffset: number;
25
+ contentWidth: number;
26
+ availableSpaceToTheLeftSideOfTheTrigger: number;
27
+ availableSpaceToTheRightSideOfTheTrigger: number;
28
+ }
29
+ export interface VerticalOffsetDataI {
30
+ verticalOffset: number;
31
+ contentHeight: number;
32
+ availableSpaceAboveTriggerElem: number;
33
+ availableSpaceBelowTriggerElem: number;
34
+ }
35
+ export interface OverlayPositionDataI extends HorizontalOffsetDataI, VerticalOffsetDataI {
36
+ position: OverlayPositionT;
37
+ }
38
+ export declare function getMenuOverlayContentClassName(): string;
39
+ export declare function createBackdrop(isBackdropDisabledOnUI?: boolean): HTMLDivElement;
40
+ export declare function createMenuOverlay(params: MenuOverlayParamsI): MenuOverlayResultI;
41
+ export declare function getOverlayMenuPlacementData(triggerElement: HTMLElement, overlayContent: HTMLElement, offset: number, positionByDefault?: OverlayPositionT, isHorizontallyCentered?: boolean, htmlDocumentObject?: Document): OverlayPlacementDataI;
42
+ export declare function getOverlayBackgroundColor(backgroundColor: string, textColor: string): string;
43
+ export declare function getOverlayBorderRadius(triggerHeight: string | number, overlayStyles: CSSStyleDeclaration): number;
44
+ export declare function getMenuItemHoverColor(backgroundColor: string): string;
@@ -1 +1 @@
1
- import{applySysClassPrefix}from"../renderer/RenderConstants";import ViewportSize from"@claspo/common/dom/ViewportSize";import nullishCoalescingOperator from"@claspo/common/utils/NullishCoalescingOperator";import{blackColor,changeAlpha,darken,getAlpha,getContrastRatio,lighten,whiteColor}from"./ColorUtils";import{setStylesToElement}from"./HtmlStyleUtils";import insertHtmlIntoElement from"@claspo/common/dom/insertHtmlIntoElement";export function getMenuOverlayContentClassName(){return applySysClassPrefix("overlay-menu-content")}export function createBackdrop(e){const t=document.createElement("div");return t.style.position="fixed",t.style.zIndex=String(Number.MAX_SAFE_INTEGER-1),t.style.top="0",t.style.left="0",t.style.width=e?"0px":"100%",t.style.height=e?"0px":"100%",t}export function createMenuOverlay(e){const{triggerElement:t,overlayStyles:o,createOverlayContent:i,overlayWidth:n,overlayHeight:r,offset:a,onDestroy:l,positionByDefault:s,isHorizontallyCentered:g,isBackdropDisabledOnUI:p}=e,c=e.htmlDocumentObject||document,m=createBackdrop(p),h=document.createElement("div");h.style.position="fixed",h.style.display="block",h.style.zIndex=String(Number.MAX_SAFE_INTEGER),n&&(h.style.width=`${n}px`),r&&(h.style.height=`${r}px`);const d=h.attachShadow({mode:"open"}),u=document.createElement("style");insertHtmlIntoElement({element:u,html:o}),d.append(u);const f=document.createElement("div");f.classList.add(getMenuOverlayContentClassName()),c.body.append(m),c.body.append(h),d.append(f),i(m,f);(()=>{const e=getOverlayMenuPlacementData(t,f,nullishCoalescingOperator(a,5),s,g,c);setPositionAttr(f,e.position),setStylesToElement(h,e.coordinates)})(),h.addEventListener("click",e=>{e.stopPropagation(),e.preventDefault()});const v=e=>{m.remove(),h.remove(),l&&l(),window.removeEventListener("keyup",e,!0)},T=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopImmediatePropagation(),v(T))};return m.addEventListener("click",()=>v(T)),window.addEventListener("keyup",T,!0),{backdrop:m,overlay:h}}export function getOverlayMenuPlacementData(e,t,o,i,n,r){const a=calcOverlayMenuPosition(e,t,o,i,r=r||document);return updateOverlayContentMargins(a,t),{coordinates:getOverlayMenuPosition(a,e.getBoundingClientRect(),t.getBoundingClientRect(),n,r),position:a.position}}function calcOverlayMenuPosition(e,t,o,i,n){const r=getOverlayMenuHorizontalOffset(e,t,o,n),a=getOverlayMenuVerticalOffset(e,t,o,n);let l="undefined";const s={bottom:a.availableSpaceBelowTriggerElem>=a.contentHeight,top:a.availableSpaceAboveTriggerElem>=a.contentHeight,right:r.availableSpaceToTheRightSideOfTheTrigger>=r.contentWidth,left:r.availableSpaceToTheLeftSideOfTheTrigger>=r.contentWidth};if(s.top?l="top":s.bottom?l="bottom":s.right?l="right":s.left&&(l="left"),s[i]&&(l=i),"undefined"===l){const e=Math.max(a.availableSpaceBelowTriggerElem,a.availableSpaceAboveTriggerElem,r.availableSpaceToTheRightSideOfTheTrigger,r.availableSpaceToTheLeftSideOfTheTrigger);e===a.availableSpaceBelowTriggerElem?l="bottom":e===a.availableSpaceAboveTriggerElem?l="top":e===r.availableSpaceToTheRightSideOfTheTrigger?l="right":e===r.availableSpaceToTheLeftSideOfTheTrigger&&(l="left")}return Object.assign(Object.assign(Object.assign({},a),r),{position:l})}function getOverlayMenuHorizontalOffset(e,t,o,i){const n=ViewportSize.width(i),{right:r}=e.getBoundingClientRect(),a=n-o-r-ViewportSize.scrollbarWidth(i);return{horizontalOffset:o,contentWidth:getOverlayMenuDimensions(t).width,availableSpaceToTheLeftSideOfTheTrigger:r-o,availableSpaceToTheRightSideOfTheTrigger:a}}function getOverlayMenuDimensions(e){const{width:t,height:o}=e.getBoundingClientRect(),{marginBottom:i,marginTop:n,marginLeft:r,marginRight:a}=window.getComputedStyle(e);return{width:t+parseInt(r,10)+parseInt(a,10),height:o+parseInt(n,10)+parseInt(i,10)}}function getOverlayMenuVerticalOffset(e,t,o,i){const n=ViewportSize.height(i),{top:r,bottom:a}=e.getBoundingClientRect();return{verticalOffset:o,contentHeight:getOverlayMenuDimensions(t).height,availableSpaceAboveTriggerElem:r-o,availableSpaceBelowTriggerElem:n-a-o}}function getOverlayMenuPosition(e,t,o,i,n){switch(e.position){case"top":return{left:`${getLeftPositionTBForOverlayMenu(t,o,i,n)}px`,top:e.availableSpaceAboveTriggerElem-e.contentHeight-e.verticalOffset+"px"};case"bottom":return{left:`${getLeftPositionTBForOverlayMenu(t,o,i,n)}px`,bottom:e.availableSpaceBelowTriggerElem-e.contentHeight-e.verticalOffset+"px"};case"left":return{left:e.availableSpaceToTheLeftSideOfTheTrigger-t.width-e.contentWidth-e.horizontalOffset+"px",top:`${getTopPositionLRForOverlayMenu(t,e)}px`};case"right":return{right:e.availableSpaceToTheRightSideOfTheTrigger-e.contentWidth-e.horizontalOffset+"px",top:`${getTopPositionLRForOverlayMenu(t,e)}px`}}}function getLeftPositionTBForOverlayMenu(e,t,o,i){let n=o?e.x+e.width/2-t.width/2:e.x;return n<0&&(n=0),n+t.width>ViewportSize.width(i)&&(n-=n+t.width-ViewportSize.width(i)),n}function getTopPositionLRForOverlayMenu(e,t){let o=t.availableSpaceAboveTriggerElem;return t.contentHeight>t.availableSpaceBelowTriggerElem&&(o-=t.contentHeight-t.availableSpaceBelowTriggerElem),o}function setPositionAttr(e,t){e.setAttribute("cl-overlay-position",t)}export function getOverlayBackgroundColor(e,t){if(e.startsWith("transparent")||e.startsWith("none")||!e.startsWith("rgb")||1!==getAlpha(e.slice(0,e.match(/\)/).index+1))){return getContrastRatio(t,whiteColor)>getContrastRatio(t,blackColor)?whiteColor:blackColor}return e}export function getOverlayBorderRadius(e,t){return Math.min(Math.floor(parseInt(e)/2),parseInt(t["border-top-left-radius"]),parseInt(t["border-top-right-radius"]),parseInt(t["border-bottom-left-radius"]),parseInt(t["border-bottom-right-radius"]))}export function getMenuItemHoverColor(e){const t=getContrastRatio(e,whiteColor),o=getContrastRatio(e,blackColor);let i,n;if(t>o)for(i=whiteColor,n=t;n>5;)i=darken(i,.1),n=getContrastRatio(e,i);else for(i="rgb(10, 10, 10)",n=o;n>5;)i=lighten(i,.1),n=getContrastRatio(e,i);return changeAlpha(i,.2)}function updateOverlayContentMargins(e,t){const{marginBottom:o,marginTop:i}=window.getComputedStyle(t);if("top"===e.position)setStylesToElement(t,{"margin-top":`${parseInt(i,10)+parseInt(o,10)}px`}),setStylesToElement(t,{"margin-bottom":"0px"});else if("bottom"===e.position)setStylesToElement(t,{"margin-bottom":`${parseInt(o,10)+parseInt(i,10)}px`}),setStylesToElement(t,{"margin-top":"0px"});else{const e=(parseInt(o,10)+parseInt(i,10))/2+"px";setStylesToElement(t,{"margin-top":e,"margin-bottom":e})}}
1
+ import{applySysClassPrefix}from"../renderer/RenderConstants";import ViewportSize from"@claspo/common/dom/ViewportSize";import nullishCoalescingOperator from"@claspo/common/utils/NullishCoalescingOperator";import{blackColor,changeAlpha,darken,getAlpha,getContrastRatio,lighten,whiteColor}from"./ColorUtils";import{setStylesToElement}from"./HtmlStyleUtils";import insertHtmlIntoElement from"@claspo/common/dom/insertHtmlIntoElement";export function getMenuOverlayContentClassName(){return applySysClassPrefix("overlay-menu-content")}export function createBackdrop(e){const t=document.createElement("div");return t.style.position="fixed",t.style.zIndex=String(Number.MAX_SAFE_INTEGER-1),t.style.top="0",t.style.left="0",t.style.width=e?"0px":"100%",t.style.height=e?"0px":"100%",t}export function createMenuOverlay(e){const{triggerElement:t,overlayStyles:o,createOverlayContent:i,overlayWidth:n,overlayHeight:r,offset:a,onDestroy:l,positionByDefault:s,isHorizontallyCentered:g,isBackdropDisabledOnUI:p}=e,c=e.htmlDocumentObject||document,m=createBackdrop(p),h=document.createElement("div");h.style.position="fixed",h.style.display="block",h.style.zIndex=String(Number.MAX_SAFE_INTEGER),n&&(h.style.width=`${n}px`),r&&(h.style.height=`${r}px`);const d=h.attachShadow({mode:"open"}),u=document.createElement("style");insertHtmlIntoElement({element:u,html:o}),d.append(u);const f=document.createElement("div");f.classList.add(getMenuOverlayContentClassName()),c.body.append(m),c.body.append(h),d.append(f),i(m,f);(()=>{const e=getOverlayMenuPlacementData(t,f,nullishCoalescingOperator(a,5),s,g,c);setPositionAttr(f,e.position),setStylesToElement(h,e.coordinates)})(),h.addEventListener("click",e=>{e.stopPropagation(),e.preventDefault()});const v=e=>{m.remove(),h.remove(),l&&l(),window.removeEventListener("keyup",e,!0)},T=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopImmediatePropagation(),v(T))};return m.addEventListener("click",()=>v(T)),window.addEventListener("keyup",T,!0),{backdrop:m,overlay:h}}export function getOverlayMenuPlacementData(e,t,o,i,n,r){const a=calcOverlayMenuPosition(e,t,o,i,r=r||document);return updateOverlayContentMargins(a,t),{coordinates:getOverlayMenuPosition(a,e.getBoundingClientRect(),t.getBoundingClientRect(),n,r),position:a.position}}function calcOverlayMenuPosition(e,t,o,i,n){const r=getOverlayMenuHorizontalOffset(e,t,o,n),a=getOverlayMenuVerticalOffset(e,t,o,n);let l="undefined";const s={bottom:a.availableSpaceBelowTriggerElem>=a.contentHeight,top:a.availableSpaceAboveTriggerElem>=a.contentHeight,right:r.availableSpaceToTheRightSideOfTheTrigger>=r.contentWidth,left:r.availableSpaceToTheLeftSideOfTheTrigger>=r.contentWidth};if(s.top?l="top":s.bottom?l="bottom":s.right?l="right":s.left&&(l="left"),i&&s[i]&&(l=i),"undefined"===l){const e=Math.max(a.availableSpaceBelowTriggerElem,a.availableSpaceAboveTriggerElem,r.availableSpaceToTheRightSideOfTheTrigger,r.availableSpaceToTheLeftSideOfTheTrigger);e===a.availableSpaceBelowTriggerElem?l="bottom":e===a.availableSpaceAboveTriggerElem?l="top":e===r.availableSpaceToTheRightSideOfTheTrigger?l="right":e===r.availableSpaceToTheLeftSideOfTheTrigger&&(l="left")}return Object.assign(Object.assign(Object.assign({},a),r),{position:l})}function getOverlayMenuHorizontalOffset(e,t,o,i){const n=ViewportSize.width(i),{right:r}=e.getBoundingClientRect(),a=n-o-r-ViewportSize.scrollbarWidth(i);return{horizontalOffset:o,contentWidth:getOverlayMenuDimensions(t).width,availableSpaceToTheLeftSideOfTheTrigger:r-o,availableSpaceToTheRightSideOfTheTrigger:a}}function getOverlayMenuDimensions(e){const{width:t,height:o}=e.getBoundingClientRect(),{marginBottom:i,marginTop:n,marginLeft:r,marginRight:a}=window.getComputedStyle(e);return{width:t+parseInt(r,10)+parseInt(a,10),height:o+parseInt(n,10)+parseInt(i,10)}}function getOverlayMenuVerticalOffset(e,t,o,i){const n=ViewportSize.height(i),{top:r,bottom:a}=e.getBoundingClientRect();return{verticalOffset:o,contentHeight:getOverlayMenuDimensions(t).height,availableSpaceAboveTriggerElem:r-o,availableSpaceBelowTriggerElem:n-a-o}}function getOverlayMenuPosition(e,t,o,i,n){switch(e.position){case"top":return{left:`${getLeftPositionTBForOverlayMenu(t,o,i,n)}px`,top:e.availableSpaceAboveTriggerElem-e.contentHeight-e.verticalOffset+"px"};case"bottom":return{left:`${getLeftPositionTBForOverlayMenu(t,o,i,n)}px`,bottom:e.availableSpaceBelowTriggerElem-e.contentHeight-e.verticalOffset+"px"};case"left":return{left:e.availableSpaceToTheLeftSideOfTheTrigger-t.width-e.contentWidth-e.horizontalOffset+"px",top:`${getTopPositionLRForOverlayMenu(t,e)}px`};case"right":return{right:e.availableSpaceToTheRightSideOfTheTrigger-e.contentWidth-e.horizontalOffset+"px",top:`${getTopPositionLRForOverlayMenu(t,e)}px`}}}function getLeftPositionTBForOverlayMenu(e,t,o,i){let n=o?e.x+e.width/2-t.width/2:e.x;return n<0&&(n=0),n+t.width>ViewportSize.width(i)&&(n-=n+t.width-ViewportSize.width(i)),n}function getTopPositionLRForOverlayMenu(e,t){let o=t.availableSpaceAboveTriggerElem;return t.contentHeight>t.availableSpaceBelowTriggerElem&&(o-=t.contentHeight-t.availableSpaceBelowTriggerElem),o}function setPositionAttr(e,t){e.setAttribute("cl-overlay-position",t)}export function getOverlayBackgroundColor(e,t){if(e.startsWith("transparent")||e.startsWith("none")||!e.startsWith("rgb")||1!==getAlpha(e.slice(0,e.match(/\)/).index+1))){return getContrastRatio(t,whiteColor)>getContrastRatio(t,blackColor)?whiteColor:blackColor}return e}export function getOverlayBorderRadius(e,t){return Math.min(Math.floor(parseInt(String(e))/2),parseInt(t.borderTopLeftRadius),parseInt(t.borderTopRightRadius),parseInt(t.borderBottomLeftRadius),parseInt(t.borderBottomRightRadius))}export function getMenuItemHoverColor(e){const t=getContrastRatio(e,whiteColor),o=getContrastRatio(e,blackColor);let i,n;if(t>o)for(i=whiteColor,n=t;n>5;)i=darken(i,.1),n=getContrastRatio(e,i);else for(i="rgb(10, 10, 10)",n=o;n>5;)i=lighten(i,.1),n=getContrastRatio(e,i);return changeAlpha(i,.2)}function updateOverlayContentMargins(e,t){const{marginBottom:o,marginTop:i}=window.getComputedStyle(t);if("top"===e.position)setStylesToElement(t,{"margin-top":`${parseInt(i,10)+parseInt(o,10)}px`}),setStylesToElement(t,{"margin-bottom":"0px"});else if("bottom"===e.position)setStylesToElement(t,{"margin-bottom":`${parseInt(o,10)+parseInt(i,10)}px`}),setStylesToElement(t,{"margin-top":"0px"});else{const e=(parseInt(o,10)+parseInt(i,10))/2+"px";setStylesToElement(t,{"margin-top":e,"margin-bottom":e})}}