yuyeon 0.1.1 → 0.1.2-rc.1

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 (33) hide show
  1. package/dist/yuyeon.js +1265 -1263
  2. package/dist/yuyeon.umd.cjs +11 -11
  3. package/lib/components/dropdown/YDropdown.mjs +4 -5
  4. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  5. package/lib/components/img/YImg.mjs +174 -0
  6. package/lib/components/img/YImg.mjs.map +1 -0
  7. package/lib/components/img/YImg.scss +31 -0
  8. package/lib/components/img/index.mjs +2 -0
  9. package/lib/components/img/index.mjs.map +1 -0
  10. package/lib/components/layer/YLayer.mjs +2 -2
  11. package/lib/components/layer/YLayer.mjs.map +1 -1
  12. package/lib/components/menu/YMenu.mjs +4 -5
  13. package/lib/components/menu/YMenu.mjs.map +1 -1
  14. package/lib/components/text-ellipsis/YTextEllipsis.mjs +1 -1
  15. package/lib/components/text-ellipsis/YTextEllipsis.mjs.map +1 -1
  16. package/lib/components/tooltip/YTooltip.mjs +4 -5
  17. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  18. package/lib/composables/resize-observer.mjs +2 -1
  19. package/lib/composables/resize-observer.mjs.map +1 -1
  20. package/lib/composables/transition.mjs +3 -2
  21. package/lib/composables/transition.mjs.map +1 -1
  22. package/lib/util/environments.mjs +8 -0
  23. package/lib/util/environments.mjs.map +1 -0
  24. package/package.json +1 -1
  25. package/types/components/dropdown/YDropdown.d.ts +43 -15
  26. package/types/components/img/YImg.d.ts +173 -0
  27. package/types/components/img/index.d.ts +0 -0
  28. package/types/components/layer/YLayer.d.ts +4 -4
  29. package/types/components/menu/YMenu.d.ts +20 -6
  30. package/types/components/select/YSelect.d.ts +213 -94
  31. package/types/components/tooltip/YTooltip.d.ts +20 -6
  32. package/types/composables/transition.d.ts +20 -2
  33. package/types/util/environments.d.ts +6 -0
@@ -4,7 +4,7 @@ import { pressItemsPropsOptions } from "../../abstract/items.mjs";
4
4
  import { useModelDuplex } from "../../composables/communication.mjs";
5
5
  import { useRender } from "../../composables/component.mjs";
6
6
  import { pressCoordinateProps } from "../../composables/coordinate/index.mjs";
7
- import { polyTransitionPropOptions } from "../../composables/transition.mjs";
7
+ import { pressPolyTransitionPropsOptions } from "../../composables/transition.mjs";
8
8
  import { getObjectValueByPath, omit } from "../../util/common.mjs";
9
9
  import { bindClasses, chooseProps, propsFactory } from "../../util/vue-component.mjs";
10
10
  import { YButton } from "../button/index.mjs";
@@ -26,10 +26,9 @@ export const pressYDropdownPropsOptions = propsFactory({
26
26
  default: '$dropdown'
27
27
  },
28
28
  ...pressItemsPropsOptions(),
29
- transition: {
30
- ...polyTransitionPropOptions.transition,
31
- default: 'fade'
32
- }
29
+ ...pressPolyTransitionPropsOptions({
30
+ transition: 'fade'
31
+ })
33
32
  }, 'YDropdown');
34
33
  export const YDropdown = defineComponent({
35
34
  name: 'YDropdown',
@@ -1 +1 @@
1
- {"version":3,"file":"YDropdown.mjs","names":["defineComponent","mergeProps","pressItemsPropsOptions","useModelDuplex","useRender","pressCoordinateProps","polyTransitionPropOptions","getObjectValueByPath","omit","bindClasses","chooseProps","propsFactory","YButton","YCard","YIcon","YList","YListItem","YMenu","YMenuPropOptions","pressYDropdownPropsOptions","modelValue","Boolean","variation","String","color","position","dropdownIcon","type","Array","Object","default","transition","YDropdown","name","inheritAttrs","components","props","slots","emits","setup","_ref","attrs","emit","opened","onClickItem","item","value","menuProps","dropdownIconProps","_createVNode","_Fragment","_mergeProps","$event","contentClasses","base","_len","arguments","length","args","_key","menu","isArray","items","map","text","itemText","e","_createTextVNode"],"sources":["../../../src/components/dropdown/YDropdown.tsx"],"sourcesContent":["import { PropType, SlotsType, defineComponent, mergeProps } from 'vue';\n\nimport { pressItemsPropsOptions } from '../../abstract/items';\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { getObjectValueByPath, omit } from '../../util/common';\nimport {\n bindClasses,\n chooseProps,\n propsFactory,\n} from '../../util/vue-component';\nimport { YButton } from '../button';\nimport { YCard } from '../card';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu, YMenuPropOptions } from '../menu';\n\nimport './YDropdown.scss';\n\nexport const pressYDropdownPropsOptions = propsFactory(\n {\n ...omit(YMenuPropOptions, ['modelValue', 'coordinateStrategy']),\n modelValue: Boolean as PropType<boolean>,\n variation: String as PropType<string>,\n color: String as PropType<string>,\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\n },\n ...pressItemsPropsOptions(),\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n 'YDropdown',\n);\n\nexport const YDropdown = defineComponent({\n name: 'YDropdown',\n inheritAttrs: false,\n components: {\n YMenu,\n },\n props: {\n ...pressYDropdownPropsOptions(),\n },\n slots: Object as SlotsType<{\n base: any;\n default: any;\n 'dropdown-icon': any;\n menu: any;\n item: { text: string; item: any };\n }>,\n emits: ['update:modelValue', 'click'],\n setup(props, { slots, attrs, emit }) {\n const opened = useModelDuplex(props);\n\n function onClickItem(item: any) {\n opened.value = false;\n emit('click', item);\n }\n\n useRender(() => {\n const menuProps = chooseProps(props, YMenu.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <>\n <YMenu\n {...menuProps}\n v-model={opened.value}\n content-classes={bindClasses([\n 'y-dropdown__content',\n props.contentClasses,\n ])}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YButton\n variation={props.variation}\n color={props.color}\n class={[\n 'y-dropdown',\n { 'y-dropdown--opened': opened.value },\n ]}\n {...attrs}\n >\n {\n <span class=\"y-dropdown__default\">\n {slots.default?.()}\n </span>\n }\n {slots['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-dropdown__icon']}\n ></YIcon>\n )}\n </YButton>\n ),\n default: () =>\n slots.menu ? (\n slots.menu()\n ) : (\n <YCard>\n {Array.isArray(props.items) && props.items.length > 0 ? (\n <YList>\n {props.items.map((item) => {\n const text = getObjectValueByPath(\n item,\n props.itemText,\n );\n return (\n <YListItem onClick={(e) => onClickItem(item)}>\n {slots.item ? slots.item({ text, item }) : text}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-dropdown__no-options\">항목이 없습니다.</div>\n )}\n </YCard>\n ),\n }}\n </YMenu>\n </>\n );\n });\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDropdown.mjs","names":["defineComponent","mergeProps","pressItemsPropsOptions","useModelDuplex","useRender","pressCoordinateProps","pressPolyTransitionPropsOptions","getObjectValueByPath","omit","bindClasses","chooseProps","propsFactory","YButton","YCard","YIcon","YList","YListItem","YMenu","YMenuPropOptions","pressYDropdownPropsOptions","modelValue","Boolean","variation","String","color","position","dropdownIcon","type","Array","Object","default","transition","YDropdown","name","inheritAttrs","components","props","slots","emits","setup","_ref","attrs","emit","opened","onClickItem","item","value","menuProps","dropdownIconProps","_createVNode","_Fragment","_mergeProps","$event","contentClasses","base","_len","arguments","length","args","_key","menu","isArray","items","map","text","itemText","e","_createTextVNode"],"sources":["../../../src/components/dropdown/YDropdown.tsx"],"sourcesContent":["import { PropType, SlotsType, defineComponent, mergeProps } from 'vue';\n\nimport { pressItemsPropsOptions } from '../../abstract/items';\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport { pressPolyTransitionPropsOptions } from '../../composables/transition';\nimport { getObjectValueByPath, omit } from '../../util/common';\nimport {\n bindClasses,\n chooseProps,\n propsFactory,\n} from '../../util/vue-component';\nimport { YButton } from '../button';\nimport { YCard } from '../card';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu, YMenuPropOptions } from '../menu';\n\nimport './YDropdown.scss';\n\nexport const pressYDropdownPropsOptions = propsFactory(\n {\n ...omit(YMenuPropOptions, ['modelValue', 'coordinateStrategy']),\n modelValue: Boolean as PropType<boolean>,\n variation: String as PropType<string>,\n color: String as PropType<string>,\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\n },\n ...pressItemsPropsOptions(),\n ...pressPolyTransitionPropsOptions({\n transition: 'fade'\n }),\n },\n 'YDropdown',\n);\n\nexport const YDropdown = defineComponent({\n name: 'YDropdown',\n inheritAttrs: false,\n components: {\n YMenu,\n },\n props: {\n ...pressYDropdownPropsOptions(),\n },\n slots: Object as SlotsType<{\n base: any;\n default: any;\n 'dropdown-icon': any;\n menu: any;\n item: { text: string; item: any };\n }>,\n emits: ['update:modelValue', 'click'],\n setup(props, { slots, attrs, emit }) {\n const opened = useModelDuplex(props);\n\n function onClickItem(item: any) {\n opened.value = false;\n emit('click', item);\n }\n\n useRender(() => {\n const menuProps = chooseProps(props, YMenu.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <>\n <YMenu\n {...menuProps}\n v-model={opened.value}\n content-classes={bindClasses([\n 'y-dropdown__content',\n props.contentClasses,\n ])}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YButton\n variation={props.variation}\n color={props.color}\n class={[\n 'y-dropdown',\n { 'y-dropdown--opened': opened.value },\n ]}\n {...attrs}\n >\n {\n <span class=\"y-dropdown__default\">\n {slots.default?.()}\n </span>\n }\n {slots['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-dropdown__icon']}\n ></YIcon>\n )}\n </YButton>\n ),\n default: () =>\n slots.menu ? (\n slots.menu()\n ) : (\n <YCard>\n {Array.isArray(props.items) && props.items.length > 0 ? (\n <YList>\n {props.items.map((item) => {\n const text = getObjectValueByPath(\n item,\n props.itemText,\n );\n return (\n <YListItem onClick={(e) => onClickItem(item)}>\n {slots.item ? slots.item({ text, item }) : text}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-dropdown__no-options\">항목이 없습니다.</div>\n )}\n </YCard>\n ),\n }}\n </YMenu>\n </>\n );\n });\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
+ import { shallowRef } from '@vue/runtime-core';
3
+ import { computed, defineComponent, getCurrentInstance, nextTick, onBeforeMount, onBeforeUnmount, ref, vShow, watch, withDirectives } from 'vue';
4
+ import { useRender } from "../../composables/component.mjs";
5
+ import { pressDimensionPropsOptions } from "../../composables/dimension.mjs";
6
+ import { PolyTransition, pressPolyTransitionPropsOptions, usePolyTransition } from "../../composables/transition.mjs";
7
+ import Environments from "../../util/environments.mjs";
8
+ import { propsFactory } from "../../util/vue-component.mjs";
9
+ import "./YImg.scss";
10
+ export const pressYImgPropsOptions = propsFactory({
11
+ src: String,
12
+ crossorigin: String,
13
+ referrerpolicy: String,
14
+ ...pressPolyTransitionPropsOptions({
15
+ transition: 'fade'
16
+ }),
17
+ objectFit: {
18
+ type: String,
19
+ default: 'contain'
20
+ },
21
+ eager: Boolean,
22
+ ...pressDimensionPropsOptions()
23
+ }, 'YImg');
24
+ export const YImg = defineComponent({
25
+ name: 'YImg',
26
+ props: {
27
+ ...pressYImgPropsOptions()
28
+ },
29
+ slots: Object,
30
+ emits: ['load', 'loaded', 'error'],
31
+ setup(props, _ref) {
32
+ let {
33
+ slots,
34
+ attrs,
35
+ emit
36
+ } = _ref;
37
+ const vm = getCurrentInstance();
38
+ const image$ = ref();
39
+ const status = shallowRef(props.eager ? 'loading' : 'idle');
40
+ const imgSrc = shallowRef('');
41
+ const naturalWidth = shallowRef();
42
+ const naturalHeight = shallowRef();
43
+ const {
44
+ polyTransitionBindProps
45
+ } = usePolyTransition(props);
46
+ const srcMeta = computed(() => {
47
+ const src = props.src;
48
+ return {
49
+ src
50
+ };
51
+ });
52
+ const imgClasses = computed(() => {
53
+ return {
54
+ 'y-img--cover': props.objectFit === 'cover',
55
+ 'y-img--contain': props.objectFit === 'contain',
56
+ 'y-img--fill': props.objectFit === 'fill',
57
+ 'y-img--scale-down': props.objectFit === 'scale-down'
58
+ };
59
+ });
60
+ function getImgSrc() {
61
+ const imgEl = image$.value;
62
+ if (imgEl) {
63
+ imgSrc.value = imgEl.currentSrc || imgEl.src;
64
+ }
65
+ }
66
+ function inspectImage(imgEl) {
67
+ if (imgEl.naturalWidth || imgEl.naturalHeight) {
68
+ naturalWidth.value = imgEl.naturalWidth;
69
+ naturalHeight.value = imgEl.naturalHeight;
70
+ } else if (!imgEl.complete && status.value === 'loading') {
71
+ return false;
72
+ } else if (imgEl.currentSrc.endsWith('.svg') || imgEl.currentSrc.startsWith('data:image/svg+xml')) {
73
+ naturalWidth.value = 1;
74
+ naturalHeight.value = 1;
75
+ }
76
+ return true;
77
+ }
78
+ watch(() => props.src, () => {
79
+ initIntersect();
80
+ });
81
+ const _Placeholder = () => {
82
+ if (!slots.placeholder) return null;
83
+ return _createVNode(PolyTransition, _mergeProps(polyTransitionBindProps.value, {
84
+ "appear": true
85
+ }), {
86
+ default: () => [(status.value === 'idle' || status.value === 'error') && _createVNode("div", {
87
+ "class": "y-img__placeholder"
88
+ }, [slots.placeholder?.({
89
+ status: status.value
90
+ })])]
91
+ });
92
+ };
93
+ function onLoad() {
94
+ if (vm.isUnmounted) return;
95
+ status.value = 'loaded';
96
+ }
97
+ function onError(event) {
98
+ if (vm.isUnmounted) return;
99
+ status.value = 'error';
100
+ emit('error', event);
101
+ }
102
+ const _Image = () => {
103
+ const Img = _createVNode("img", {
104
+ "ref": image$,
105
+ "src": srcMeta.value.src,
106
+ "crossorigin": props.crossorigin,
107
+ "referrerpolicy": props.referrerpolicy,
108
+ "draggable": attrs.draggable,
109
+ "alt": attrs.alt,
110
+ "class": ['y-img__img', imgClasses.value],
111
+ "onLoad": onLoad,
112
+ "onError": onError
113
+ }, null);
114
+ return _createVNode(PolyTransition, _mergeProps(polyTransitionBindProps.value, {
115
+ "appear": true
116
+ }), {
117
+ default: () => [withDirectives(Img, [[vShow, status.value === 'loaded']])]
118
+ });
119
+ };
120
+ let requestTimer = -1;
121
+
122
+ /**
123
+ *
124
+ * @param imgEl
125
+ * @param timeout null: once
126
+ */
127
+ function requestInspectImage(imgEl) {
128
+ let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
129
+ const _request = () => {
130
+ clearTimeout(requestTimer);
131
+ if (vm.isUnmounted) return;
132
+ if (!inspectImage(imgEl) && timeout != null) {
133
+ requestTimer = window.setTimeout(_request, timeout);
134
+ }
135
+ };
136
+ _request();
137
+ }
138
+ function initIntersect(isIntersection) {
139
+ if (props.eager && isIntersection) return;
140
+ if (Environments.canUseIntersectionObserver && !isIntersection && !props.eager) return;
141
+ status.value = 'loading';
142
+ if (!srcMeta.value.src) return;
143
+ nextTick(() => {
144
+ emit('load', image$.value?.currentSrc || srcMeta.value.src);
145
+ setTimeout(() => {
146
+ if (vm.isUnmounted) return;
147
+ if (image$.value?.complete) {
148
+ if (!image$.value?.naturalWidth) {
149
+ onError();
150
+ }
151
+ if (status.value === 'error') return;
152
+ requestInspectImage(image$.value, null);
153
+ if (status.value === 'loading') onLoad();
154
+ } else if (image$.value) {
155
+ requestInspectImage(image$.value);
156
+ getImgSrc();
157
+ }
158
+ });
159
+ });
160
+ }
161
+ onBeforeMount(() => {
162
+ initIntersect();
163
+ });
164
+ onBeforeUnmount(() => {
165
+ clearTimeout(requestTimer);
166
+ });
167
+ useRender(() => {
168
+ return _createVNode("div", {
169
+ "class": ['y-img']
170
+ }, [_createVNode(_Placeholder, null, null), _createVNode(_Image, null, null)]);
171
+ });
172
+ }
173
+ });
174
+ //# sourceMappingURL=YImg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YImg.mjs","names":["shallowRef","computed","defineComponent","getCurrentInstance","nextTick","onBeforeMount","onBeforeUnmount","ref","vShow","watch","withDirectives","useRender","pressDimensionPropsOptions","PolyTransition","pressPolyTransitionPropsOptions","usePolyTransition","Environments","propsFactory","pressYImgPropsOptions","src","String","crossorigin","referrerpolicy","transition","objectFit","type","default","eager","Boolean","YImg","name","props","slots","Object","emits","setup","_ref","attrs","emit","vm","image$","status","imgSrc","naturalWidth","naturalHeight","polyTransitionBindProps","srcMeta","imgClasses","getImgSrc","imgEl","value","currentSrc","inspectImage","complete","endsWith","startsWith","initIntersect","_Placeholder","placeholder","_createVNode","_mergeProps","onLoad","isUnmounted","onError","event","_Image","Img","draggable","alt","requestTimer","requestInspectImage","timeout","arguments","length","undefined","_request","clearTimeout","window","setTimeout","isIntersection","canUseIntersectionObserver"],"sources":["../../../src/components/img/YImg.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue';\nimport type {\n CSSProperties,\n ImgHTMLAttributes,\n PropType,\n SlotsType,\n} from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { pressDimensionPropsOptions } from '../../composables/dimension';\nimport {\n PolyTransition,\n pressPolyTransitionPropsOptions,\n usePolyTransition,\n} from '../../composables/transition';\nimport Environments from '../../util/environments';\nimport { propsFactory } from '../../util/vue-component';\n\nimport './YImg.scss';\n\nexport const pressYImgPropsOptions = propsFactory(\n {\n src: String as PropType<string>,\n crossorigin: String as PropType<ImgHTMLAttributes['crossorigin']>,\n referrerpolicy: String as PropType<ImgHTMLAttributes['referrerpolicy']>,\n ...pressPolyTransitionPropsOptions({\n transition: 'fade',\n }),\n objectFit: {\n type: String as PropType<\n Extract<\n CSSProperties['objectFit'],\n 'contain' | 'cover' | 'fill' | 'scale-down'\n >\n >,\n default: 'contain',\n },\n eager: Boolean,\n ...pressDimensionPropsOptions(),\n },\n 'YImg',\n);\n\nexport type YImgStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\nexport const YImg = defineComponent({\n name: 'YImg',\n props: {\n ...pressYImgPropsOptions(),\n },\n slots: Object as SlotsType<{\n placeholder: any;\n }>,\n emits: ['load', 'loaded', 'error'],\n setup(props, { slots, attrs, emit }) {\n const vm = getCurrentInstance()!;\n const image$ = ref<HTMLImageElement>();\n const status = shallowRef<YImgStatus>(props.eager ? 'loading' : 'idle');\n const imgSrc = shallowRef('');\n const naturalWidth = shallowRef<number>();\n const naturalHeight = shallowRef<number>();\n const { polyTransitionBindProps } = usePolyTransition(props);\n\n const srcMeta = computed(() => {\n const src = props.src;\n\n return {\n src,\n };\n });\n\n const imgClasses = computed(() => {\n return {\n 'y-img--cover': props.objectFit === 'cover',\n 'y-img--contain': props.objectFit === 'contain',\n 'y-img--fill': props.objectFit === 'fill',\n 'y-img--scale-down': props.objectFit === 'scale-down',\n };\n });\n\n function getImgSrc() {\n const imgEl = image$.value;\n if (imgEl) {\n imgSrc.value = imgEl.currentSrc || imgEl.src;\n }\n }\n\n function inspectImage(imgEl: HTMLImageElement) {\n if (imgEl.naturalWidth || imgEl.naturalHeight) {\n naturalWidth.value = imgEl.naturalWidth;\n naturalHeight.value = imgEl.naturalHeight;\n } else if (!imgEl.complete && status.value === 'loading') {\n return false;\n } else if (\n imgEl.currentSrc.endsWith('.svg') ||\n imgEl.currentSrc.startsWith('data:image/svg+xml')\n ) {\n naturalWidth.value = 1;\n naturalHeight.value = 1;\n }\n\n return true;\n }\n\n watch(\n () => props.src,\n () => {\n initIntersect();\n },\n );\n\n const _Placeholder = () => {\n if (!slots.placeholder) return null;\n return (\n <PolyTransition {...polyTransitionBindProps.value} appear>\n {(status.value === 'idle' || status.value === 'error') && (\n <div class=\"y-img__placeholder\">\n {slots.placeholder?.({ status: status.value })}\n </div>\n )}\n </PolyTransition>\n );\n };\n\n function onLoad() {\n if (vm.isUnmounted) return;\n status.value = 'loaded';\n }\n\n function onError(event?: Event) {\n if (vm.isUnmounted) return;\n status.value = 'error';\n emit('error', event);\n }\n\n const _Image = () => {\n const Img = (\n <img\n ref={image$}\n src={srcMeta.value.src}\n crossorigin={props.crossorigin}\n referrerpolicy={props.referrerpolicy}\n draggable={(attrs as ImgHTMLAttributes).draggable}\n alt={(attrs as ImgHTMLAttributes).alt}\n class={['y-img__img', imgClasses.value]}\n onLoad={onLoad}\n onError={onError}\n />\n );\n\n return (\n <PolyTransition {...polyTransitionBindProps.value} appear>\n {withDirectives(Img, [[vShow, status.value === 'loaded']])}\n </PolyTransition>\n );\n };\n\n let requestTimer = -1;\n\n /**\n *\n * @param imgEl\n * @param timeout null: once\n */\n function requestInspectImage(\n imgEl: HTMLImageElement,\n timeout: number | null = 100,\n ) {\n const _request = () => {\n clearTimeout(requestTimer);\n if (vm.isUnmounted) return;\n if (!inspectImage(imgEl) && timeout != null) {\n requestTimer = window.setTimeout(_request, timeout);\n }\n };\n\n _request();\n }\n\n function initIntersect(isIntersection?: boolean) {\n if (props.eager && isIntersection) return;\n if (\n Environments.canUseIntersectionObserver &&\n !isIntersection &&\n !props.eager\n )\n return;\n\n status.value = 'loading';\n\n if (!srcMeta.value.src) return;\n nextTick(() => {\n emit('load', image$.value?.currentSrc || srcMeta.value.src);\n setTimeout(() => {\n if (vm.isUnmounted) return;\n if (image$.value?.complete) {\n if (!image$.value?.naturalWidth) {\n onError();\n }\n if (status.value === 'error') return;\n requestInspectImage(image$.value, null);\n if (status.value === 'loading') onLoad();\n } else if (image$.value) {\n requestInspectImage(image$.value);\n getImgSrc();\n }\n });\n });\n }\n\n onBeforeMount(() => {\n initIntersect();\n });\n\n onBeforeUnmount(() => {\n clearTimeout(requestTimer);\n });\n\n useRender(() => {\n return (\n <div class={['y-img']}>\n <_Placeholder />\n <_Image />\n </div>\n );\n });\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ .y-img {
2
+ z-index: 0;
3
+
4
+ .y-img__img,
5
+ .y-img__placeholder {
6
+ z-index: -1;
7
+ position: absolute;
8
+ top: 0;
9
+ right: 0;
10
+ bottom: 0;
11
+ left: 0;
12
+ }
13
+
14
+ .y-img__img {
15
+ &--contain {
16
+ object-fit: contain;
17
+ }
18
+
19
+ &--cover {
20
+ object-fit: cover;
21
+ }
22
+
23
+ &--fill {
24
+ object-fit: fill;
25
+ }
26
+
27
+ &--scale-down {
28
+ object-fit: scale-down;
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/img/index.ts"],"sourcesContent":[""],"mappings":""}
@@ -7,7 +7,7 @@ import { pressDimensionPropsOptions, useDimension } from "../../composables/dime
7
7
  import { useLayerGroup } from "../../composables/layer-group.mjs";
8
8
  import { pressThemePropsOptions, useLocalTheme } from "../../composables/theme/index.mjs";
9
9
  import { useLazy } from "../../composables/timing.mjs";
10
- import { PolyTransition, polyTransitionPropOptions, usePolyTransition } from "../../composables/transition.mjs";
10
+ import { PolyTransition, pressPolyTransitionPropsOptions, usePolyTransition } from "../../composables/transition.mjs";
11
11
  import { ComplementClick } from "../../directives/complement-click/index.mjs";
12
12
  import { bindClasses, propsFactory } from "../../util/vue-component.mjs";
13
13
  import { pressBasePropsOptions, useBase } from "./base.mjs";
@@ -62,7 +62,7 @@ export const pressYLayerProps = propsFactory({
62
62
  },
63
63
  contained: Boolean,
64
64
  ...pressThemePropsOptions(),
65
- ...polyTransitionPropOptions,
65
+ ...pressPolyTransitionPropsOptions(),
66
66
  ...pressBasePropsOptions(),
67
67
  ...pressContentPropsOptions(),
68
68
  ...pressCoordinateProps(),
@@ -1 +1 @@
1
- {"version":3,"file":"YLayer.mjs","names":["Teleport","Transition","computed","defineComponent","getCurrentInstance","mergeProps","reactive","ref","shallowRef","toRef","useModelDuplex","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","polyTransitionPropOptions","usePolyTransition","ComplementClick","bindClasses","propsFactory","pressBasePropsOptions","useBase","pressContentPropsOptions","useContent","pressScrollStrategyProps","useScrollStrategies","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","openOnHover","openDelay","closeDelay","zIndex","contained","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","slots","setup","_ref","emit","expose","attrs","vm","scrim$","content$","root$","base","base$","baseEl","baseSlot","baseFromSlotEl","themeClasses","layerGroup","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","model","active","get","set","v","contentEvents","finish","hovered","lazyValue","onAfterUpdate","rendered","coordinateStyles","updateCoordinate","contentEl","root","onClickComplementLayer","target","closeConditional","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","onMouseenter","event","onMouseleave","computedStyle","toString","computedClass","boundClasses","computedContentClasses","isMe","vnode","slotBase","class","_createVNode","_Fragment","_mergeProps","_withDirectives","_vShow","_resolveDirective"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type {\n CSSProperties,\n ComponentInternalInstance,\n PropType,\n SlotsType,\n} from 'vue';\nimport {\n Teleport,\n Transition,\n computed,\n defineComponent,\n getCurrentInstance,\n mergeProps,\n reactive,\n ref,\n shallowRef,\n toRef,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport {\n pressCoordinateProps,\n useCoordinate,\n} from '../../composables/coordinate';\nimport {\n pressDimensionPropsOptions,\n useDimension,\n} from '../../composables/dimension';\nimport { useLayerGroup } from '../../composables/layer-group';\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\nimport { useLazy } from '../../composables/timing';\nimport {\n PolyTransition,\n polyTransitionPropOptions,\n usePolyTransition,\n} from '../../composables/transition';\nimport {\n ComplementClick,\n ComplementClickBindingOptions,\n} from '../../directives/complement-click';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { pressBasePropsOptions, useBase } from './base';\nimport { pressContentPropsOptions, useContent } from './content';\nimport {\n pressScrollStrategyProps,\n useScrollStrategies,\n} from './scroll-strategies';\n\nimport './YLayer.scss';\n\nexport const pressYLayerProps = propsFactory(\n {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n scrim: {\n type: Boolean as PropType<boolean>,\n },\n scrimOpacity: {\n type: Number as PropType<number>,\n },\n eager: {\n type: Boolean as PropType<boolean>,\n },\n classes: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n closeClickScrim: {\n type: Boolean as PropType<boolean>,\n },\n contentStyles: {\n type: Object as PropType<CSSProperties>,\n default: () => {},\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n closeDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n zIndex: {\n type: [Number, String] as PropType<number | string>,\n default: 2000,\n },\n contained: Boolean,\n ...pressThemePropsOptions(),\n ...polyTransitionPropOptions,\n ...pressBasePropsOptions(),\n ...pressContentPropsOptions(),\n ...pressCoordinateProps(),\n ...pressScrollStrategyProps(),\n ...pressDimensionPropsOptions(),\n },\n 'YLayer',\n);\n\nexport const YLayer = defineComponent({\n name: 'YLayer',\n inheritAttrs: false,\n components: {\n PolyTransition,\n },\n directives: {\n ComplementClick,\n },\n props: {\n modal: Boolean as PropType<boolean>,\n ...pressYLayerProps(),\n },\n emits: {\n 'update:modelValue': (value: boolean) => true,\n 'click:complement': (mouseEvent: MouseEvent) => true,\n afterLeave: () => true,\n },\n slots: Object as SlotsType<{\n base: any;\n default: any;\n }>,\n setup(props, { emit, expose, attrs, slots }) {\n const vm = getCurrentInstance();\n\n const scrim$ = ref<HTMLElement>();\n const content$ = ref<HTMLElement>();\n const root$ = ref<HTMLElement>();\n\n const { base, base$, baseEl, baseSlot, baseFromSlotEl } = useBase(props);\n\n const { themeClasses } = useLocalTheme(props);\n const { layerGroup, layerGroupState, getActiveLayers } = useLayerGroup();\n const { polyTransitionBindProps } = usePolyTransition(props);\n const { dimensionStyles } = useDimension(props);\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n const { contentEvents } = useContent(props, active);\n const finish = shallowRef(false);\n const hovered = ref(false);\n\n const disabled = toRef(props, 'disabled');\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\n const rendered = computed<boolean>(\n () => !disabled.value && (lazyValue.value || active.value),\n );\n\n const { coordinateStyles, updateCoordinate } = useCoordinate(props, {\n contentEl: content$,\n base,\n active,\n });\n useScrollStrategies(props, {\n root: root$,\n contentEl: content$,\n active,\n baseEl: base,\n updateCoordinate,\n });\n\n function onClickComplementLayer(mouseEvent: MouseEvent) {\n emit('click:complement', mouseEvent);\n if (!props.modal) {\n if (\n scrim$.value !== null &&\n scrim$.value === mouseEvent.target &&\n props.closeClickScrim\n ) {\n active.value = false;\n }\n } else {\n // TODO: shrug ani\n }\n }\n\n function closeConditional(): boolean {\n return (\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\n active.value &&\n finish.value\n ); // TODO: && groupTopLevel.value;\n }\n\n const complementClickOption = reactive<ComplementClickBindingOptions>({\n handler: onClickComplementLayer,\n determine: closeConditional,\n include: () => [baseEl.value],\n });\n\n function onAfterEnter() {\n finish.value = true;\n }\n\n function onAfterLeave() {\n onAfterUpdate();\n finish.value = false;\n emit('afterLeave');\n }\n\n function onClickScrim() {\n if (props.closeClickScrim) {\n active.value = false;\n }\n }\n\n function onMouseenter(event: Event) {\n hovered.value = true;\n }\n\n function onMouseleave(event: Event) {\n hovered.value = false;\n }\n\n const computedStyle = computed(() => {\n return {\n zIndex: (props.zIndex ?? '2000').toString(),\n };\n });\n\n const computedClass = computed<Record<string, boolean>>(() => {\n const { classes } = props;\n const boundClasses = bindClasses(classes);\n return {\n ...boundClasses,\n 'y-layer--active': !!active.value,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n };\n });\n\n expose({\n scrim$,\n base$,\n content$: computed(() => content$.value),\n baseEl,\n active,\n onAfterUpdate,\n updateCoordinate,\n hovered,\n finish,\n modal: computed(() => props.modal),\n getActiveLayers,\n isMe: (vnode: ComponentInternalInstance) => {\n return vnode === vm;\n },\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-layer-base': true,\n 'y-layer-base--active': active.value,\n },\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\n {rendered.value && (\n <div\n class={[\n {\n 'y-layer': true,\n 'y-layer--finish': finish.value,\n 'y-layer--contained': props.contained,\n ...computedClass.value,\n },\n themeClasses.value,\n ]}\n onMouseenter={onMouseenter}\n onMouseleave={onMouseleave}\n style={computedStyle.value}\n ref={ root$ }\n {...attrs}\n >\n <Transition name=\"fade\" appear>\n {active.value && props.scrim && (\n <div\n class=\"y-layer__scrim\"\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\n onClick={onClickScrim}\n ref=\"scrim$\"\n ></div>\n )}\n </Transition>\n <PolyTransition\n onAfterEnter={onAfterEnter}\n onAfterLeave={onAfterLeave}\n appear\n {...polyTransitionBindProps.value}\n >\n <div\n v-show={active.value}\n v-complement-click={{ ...complementClickOption }}\n class={{\n 'y-layer__content': true,\n ...computedContentClasses.value,\n }}\n style={[\n {\n ...dimensionStyles.value,\n ...coordinateStyles.value,\n ...props.contentStyles,\n },\n ]}\n {...contentEvents.value}\n ref={content$}\n >\n {slots.default?.({ active: active.value })}\n </div>\n </PolyTransition>\n </div>\n )}\n </Teleport>\n </>\n );\n });\n\n return {\n complementClickOption,\n layerGroup,\n active,\n finish,\n rendered,\n lazyValue,\n onAfterUpdate: onAfterUpdate as () => void,\n scrim$,\n content$,\n base$,\n baseEl,\n baseFromSlotEl,\n polyTransitionBindProps,\n coordinateStyles,\n layerGroupState,\n getActiveLayers,\n };\n },\n});\n\nexport type YLayer = InstanceType<typeof YLayer>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YLayer.mjs","names":["Teleport","Transition","computed","defineComponent","getCurrentInstance","mergeProps","reactive","ref","shallowRef","toRef","useModelDuplex","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","pressPolyTransitionPropsOptions","usePolyTransition","ComplementClick","bindClasses","propsFactory","pressBasePropsOptions","useBase","pressContentPropsOptions","useContent","pressScrollStrategyProps","useScrollStrategies","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","openOnHover","openDelay","closeDelay","zIndex","contained","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","slots","setup","_ref","emit","expose","attrs","vm","scrim$","content$","root$","base","base$","baseEl","baseSlot","baseFromSlotEl","themeClasses","layerGroup","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","model","active","get","set","v","contentEvents","finish","hovered","lazyValue","onAfterUpdate","rendered","coordinateStyles","updateCoordinate","contentEl","root","onClickComplementLayer","target","closeConditional","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","onMouseenter","event","onMouseleave","computedStyle","toString","computedClass","boundClasses","computedContentClasses","isMe","vnode","slotBase","class","_createVNode","_Fragment","_mergeProps","_withDirectives","_vShow","_resolveDirective"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type {\n CSSProperties,\n ComponentInternalInstance,\n PropType,\n SlotsType,\n} from 'vue';\nimport {\n Teleport,\n Transition,\n computed,\n defineComponent,\n getCurrentInstance,\n mergeProps,\n reactive,\n ref,\n shallowRef,\n toRef,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport {\n pressCoordinateProps,\n useCoordinate,\n} from '../../composables/coordinate';\nimport {\n pressDimensionPropsOptions,\n useDimension,\n} from '../../composables/dimension';\nimport { useLayerGroup } from '../../composables/layer-group';\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\nimport { useLazy } from '../../composables/timing';\nimport {\n PolyTransition,\n pressPolyTransitionPropsOptions,\n usePolyTransition,\n} from '../../composables/transition';\nimport {\n ComplementClick,\n ComplementClickBindingOptions,\n} from '../../directives/complement-click';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { pressBasePropsOptions, useBase } from './base';\nimport { pressContentPropsOptions, useContent } from './content';\nimport {\n pressScrollStrategyProps,\n useScrollStrategies,\n} from './scroll-strategies';\n\nimport './YLayer.scss';\n\nexport const pressYLayerProps = propsFactory(\n {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n scrim: {\n type: Boolean as PropType<boolean>,\n },\n scrimOpacity: {\n type: Number as PropType<number>,\n },\n eager: {\n type: Boolean as PropType<boolean>,\n },\n classes: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n closeClickScrim: {\n type: Boolean as PropType<boolean>,\n },\n contentStyles: {\n type: Object as PropType<CSSProperties>,\n default: () => {},\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n closeDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n zIndex: {\n type: [Number, String] as PropType<number | string>,\n default: 2000,\n },\n contained: Boolean,\n ...pressThemePropsOptions(),\n ...pressPolyTransitionPropsOptions(),\n ...pressBasePropsOptions(),\n ...pressContentPropsOptions(),\n ...pressCoordinateProps(),\n ...pressScrollStrategyProps(),\n ...pressDimensionPropsOptions(),\n },\n 'YLayer',\n);\n\nexport const YLayer = defineComponent({\n name: 'YLayer',\n inheritAttrs: false,\n components: {\n PolyTransition,\n },\n directives: {\n ComplementClick,\n },\n props: {\n modal: Boolean as PropType<boolean>,\n ...pressYLayerProps(),\n },\n emits: {\n 'update:modelValue': (value: boolean) => true,\n 'click:complement': (mouseEvent: MouseEvent) => true,\n afterLeave: () => true,\n },\n slots: Object as SlotsType<{\n base: any;\n default: any;\n }>,\n setup(props, { emit, expose, attrs, slots }) {\n const vm = getCurrentInstance();\n\n const scrim$ = ref<HTMLElement>();\n const content$ = ref<HTMLElement>();\n const root$ = ref<HTMLElement>();\n\n const { base, base$, baseEl, baseSlot, baseFromSlotEl } = useBase(props);\n\n const { themeClasses } = useLocalTheme(props);\n const { layerGroup, layerGroupState, getActiveLayers } = useLayerGroup();\n const { polyTransitionBindProps } = usePolyTransition(props);\n const { dimensionStyles } = useDimension(props);\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n const { contentEvents } = useContent(props, active);\n const finish = shallowRef(false);\n const hovered = ref(false);\n\n const disabled = toRef(props, 'disabled');\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\n const rendered = computed<boolean>(\n () => !disabled.value && (lazyValue.value || active.value),\n );\n\n const { coordinateStyles, updateCoordinate } = useCoordinate(props, {\n contentEl: content$,\n base,\n active,\n });\n useScrollStrategies(props, {\n root: root$,\n contentEl: content$,\n active,\n baseEl: base,\n updateCoordinate,\n });\n\n function onClickComplementLayer(mouseEvent: MouseEvent) {\n emit('click:complement', mouseEvent);\n if (!props.modal) {\n if (\n scrim$.value !== null &&\n scrim$.value === mouseEvent.target &&\n props.closeClickScrim\n ) {\n active.value = false;\n }\n } else {\n // TODO: shrug ani\n }\n }\n\n function closeConditional(): boolean {\n return (\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\n active.value &&\n finish.value\n ); // TODO: && groupTopLevel.value;\n }\n\n const complementClickOption = reactive<ComplementClickBindingOptions>({\n handler: onClickComplementLayer,\n determine: closeConditional,\n include: () => [baseEl.value],\n });\n\n function onAfterEnter() {\n finish.value = true;\n }\n\n function onAfterLeave() {\n onAfterUpdate();\n finish.value = false;\n emit('afterLeave');\n }\n\n function onClickScrim() {\n if (props.closeClickScrim) {\n active.value = false;\n }\n }\n\n function onMouseenter(event: Event) {\n hovered.value = true;\n }\n\n function onMouseleave(event: Event) {\n hovered.value = false;\n }\n\n const computedStyle = computed(() => {\n return {\n zIndex: (props.zIndex ?? '2000').toString(),\n };\n });\n\n const computedClass = computed<Record<string, boolean>>(() => {\n const { classes } = props;\n const boundClasses = bindClasses(classes);\n return {\n ...boundClasses,\n 'y-layer--active': !!active.value,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n };\n });\n\n expose({\n scrim$,\n base$,\n content$: computed(() => content$.value),\n baseEl,\n active,\n onAfterUpdate,\n updateCoordinate,\n hovered,\n finish,\n modal: computed(() => props.modal),\n getActiveLayers,\n isMe: (vnode: ComponentInternalInstance) => {\n return vnode === vm;\n },\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-layer-base': true,\n 'y-layer-base--active': active.value,\n },\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\n {rendered.value && (\n <div\n class={[\n {\n 'y-layer': true,\n 'y-layer--finish': finish.value,\n 'y-layer--contained': props.contained,\n ...computedClass.value,\n },\n themeClasses.value,\n ]}\n onMouseenter={onMouseenter}\n onMouseleave={onMouseleave}\n style={computedStyle.value}\n ref={ root$ }\n {...attrs}\n >\n <Transition name=\"fade\" appear>\n {active.value && props.scrim && (\n <div\n class=\"y-layer__scrim\"\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\n onClick={onClickScrim}\n ref=\"scrim$\"\n ></div>\n )}\n </Transition>\n <PolyTransition\n onAfterEnter={onAfterEnter}\n onAfterLeave={onAfterLeave}\n appear\n {...polyTransitionBindProps.value}\n >\n <div\n v-show={active.value}\n v-complement-click={{ ...complementClickOption }}\n class={{\n 'y-layer__content': true,\n ...computedContentClasses.value,\n }}\n style={[\n {\n ...dimensionStyles.value,\n ...coordinateStyles.value,\n ...props.contentStyles,\n },\n ]}\n {...contentEvents.value}\n ref={content$}\n >\n {slots.default?.({ active: active.value })}\n </div>\n </PolyTransition>\n </div>\n )}\n </Teleport>\n </>\n );\n });\n\n return {\n complementClickOption,\n layerGroup,\n active,\n finish,\n rendered,\n lazyValue,\n onAfterUpdate: onAfterUpdate as () => void,\n scrim$,\n content$,\n base$,\n baseEl,\n baseFromSlotEl,\n polyTransitionBindProps,\n coordinateStyles,\n layerGroupState,\n getActiveLayers,\n };\n },\n});\n\nexport type YLayer = InstanceType<typeof YLayer>;\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fr
2
2
  import { computed, defineComponent, ref, toRef, watch } from 'vue';
3
3
  import { useModelDuplex } from "../../composables/communication.mjs";
4
4
  import { useRender } from "../../composables/component.mjs";
5
- import { polyTransitionPropOptions } from "../../composables/transition.mjs";
5
+ import { pressPolyTransitionPropsOptions } from "../../composables/transition.mjs";
6
6
  import { hasElementMouseEvent } from "../../util/dom.mjs";
7
7
  import { toKebabCase } from "../../util/string.mjs";
8
8
  import { bindClasses, chooseProps } from "../../util/vue-component.mjs";
@@ -42,10 +42,9 @@ export const YMenu = defineComponent({
42
42
  name: NAME,
43
43
  props: {
44
44
  ...YMenuPropOptions,
45
- transition: {
46
- ...polyTransitionPropOptions.transition,
47
- default: 'fade'
48
- }
45
+ ...pressPolyTransitionPropsOptions({
46
+ transition: 'fade'
47
+ })
49
48
  },
50
49
  emits: ['update:modelValue', 'afterLeave', 'hoverContent'],
51
50
  slots: Object,
@@ -1 +1 @@
1
- {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","polyTransitionPropOptions","hasElementMouseEvent","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType, SlotsType } from 'vue';\r\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { polyTransitionPropOptions } from '../../composables/transition';\r\nimport { hasElementMouseEvent } from '../../util/dom';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses, chooseProps } from '../../util/vue-component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YMenu.scss';\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n transition: {\r\n ...polyTransitionPropOptions.transition,\r\n default: 'fade',\r\n },\r\n },\r\n emits: ['update:modelValue', 'afterLeave', 'hoverContent'],\r\n slots: Object as SlotsType<{\r\n default: any;\r\n base: any;\r\n }>,\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const active = useModelDuplex(props);\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const finish = computed(() => !!layer$.value?.finish);\r\n const { children, parent } = useActiveStack(\r\n layer$,\r\n active,\r\n toRef(props, 'preventCloseBubble'),\r\n );\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (\r\n !changeActive &&\r\n props.openOnHover &&\r\n !hovered.value &&\r\n children.value.length === 0\r\n ) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n emit('hoverContent', value);\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n if (props.openOnHover && finish.value && active.value) {\r\n return;\r\n }\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n return;\r\n }\r\n }\r\n if (active.value) {\r\n if ((!parent && children.value.length === 0) || parent) {\r\n active.value = false;\r\n }\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal &&\r\n !props.preventCloseBubble\r\n ) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return <>{slots.default?.(...args) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n children,\r\n parent,\r\n active,\r\n hovered,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","pressPolyTransitionPropsOptions","hasElementMouseEvent","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType, SlotsType } from 'vue';\r\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '../../composables/transition';\r\nimport { hasElementMouseEvent } from '../../util/dom';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses, chooseProps } from '../../util/vue-component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YMenu.scss';\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade'\r\n }),\r\n },\r\n emits: ['update:modelValue', 'afterLeave', 'hoverContent'],\r\n slots: Object as SlotsType<{\r\n default: any;\r\n base: any;\r\n }>,\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const active = useModelDuplex(props);\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const finish = computed(() => !!layer$.value?.finish);\r\n const { children, parent } = useActiveStack(\r\n layer$,\r\n active,\r\n toRef(props, 'preventCloseBubble'),\r\n );\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (\r\n !changeActive &&\r\n props.openOnHover &&\r\n !hovered.value &&\r\n children.value.length === 0\r\n ) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n emit('hoverContent', value);\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n if (props.openOnHover && finish.value && active.value) {\r\n return;\r\n }\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n return;\r\n }\r\n }\r\n if (active.value) {\r\n if ((!parent && children.value.length === 0) || parent) {\r\n active.value = false;\r\n }\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal &&\r\n !props.preventCloseBubble\r\n ) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return <>{slots.default?.(...args) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n children,\r\n parent,\r\n active,\r\n hovered,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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"}
@@ -45,7 +45,7 @@ export const YTextEllipsis = defineComponent({
45
45
  return _createVNode("span", {
46
46
  "title": title.value,
47
47
  "class": ['y-text-ellipsis', {
48
- overflowed: isOverflow
48
+ overflowed: isOverflow.value
49
49
  }]
50
50
  }, [_createVNode("span", {
51
51
  "ref": resizeObservedRef,
@@ -1 +1 @@
1
- {"version":3,"file":"YTextEllipsis.mjs","names":["computed","defineComponent","ref","watch","useRender","useResizeObserver","YTextEllipsis","name","props","text","type","String","default","setup","resizeObservedRef","contentRect","isOverflow","containerWidth","value","width","title","startText","length","Math","round","substring","endText","neo","scrollWidth","offsetWidth","_createVNode","overflowed"],"sources":["../../../src/components/text-ellipsis/YTextEllipsis.tsx"],"sourcesContent":["import { computed, defineComponent, ref, watch } from 'vue';\n\nimport { useRender, useResizeObserver } from '../../composables';\n\nimport './YTextEllipsis.scss';\n\nexport const YTextEllipsis = defineComponent({\n name: 'YTextEllipsis',\n props: {\n text: {\n type: String,\n default: '',\n },\n },\n setup(props) {\n const { resizeObservedRef, contentRect } = useResizeObserver();\n\n const isOverflow = ref(false);\n\n const containerWidth = computed(() => {\n return contentRect.value?.width;\n });\n\n const title = computed(() => {\n return props.text;\n });\n\n const startText = computed(() => {\n if (isOverflow.value) {\n const length = Math.round(props.text.length * 0.5);\n return props.text.substring(0, length);\n }\n return props.text;\n });\n\n const endText = computed(() => {\n if (isOverflow.value) {\n const length = Math.round(props.text.length * 0.5);\n return props.text.substring(length, props.text.length);\n }\n return props.text;\n });\n\n watch(containerWidth, (neo) => {\n if (resizeObservedRef.value && neo != null) {\n isOverflow.value =\n resizeObservedRef.value.scrollWidth >\n resizeObservedRef.value.offsetWidth;\n }\n });\n\n useRender(() => {\n return (\n <span\n title={title.value}\n class={['y-text-ellipsis', { overflowed: isOverflow }]}\n >\n <span ref={resizeObservedRef} class=\"y-text-ellipsis__origin\">\n {props.text}\n </span>\n {isOverflow.value && (\n <span class=\"y-text-ellipsis__start\">{startText.value}</span>\n )}\n\n {isOverflow.value && (\n <span class=\"y-text-ellipsis__end\">{endText.value}</span>\n )}\n </span>\n );\n });\n },\n});\n\nexport type YTextEllipsis = InstanceType<typeof YTextEllipsis>;\n"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,eAAe,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAEnDC,SAAS,EAAEC,iBAAiB;AAErC;AAEA,OAAO,MAAMC,aAAa,GAAGL,eAAe,CAAC;EAC3CM,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX;EACF,CAAC;EACDC,KAAKA,CAACL,KAAK,EAAE;IACX,MAAM;MAAEM,iBAAiB;MAAEC;IAAY,CAAC,GAAGV,iBAAiB,CAAC,CAAC;IAE9D,MAAMW,UAAU,GAAGd,GAAG,CAAC,KAAK,CAAC;IAE7B,MAAMe,cAAc,GAAGjB,QAAQ,CAAC,MAAM;MACpC,OAAOe,WAAW,CAACG,KAAK,EAAEC,KAAK;IACjC,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAGpB,QAAQ,CAAC,MAAM;MAC3B,OAAOQ,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEF,MAAMY,SAAS,GAAGrB,QAAQ,CAAC,MAAM;MAC/B,IAAIgB,UAAU,CAACE,KAAK,EAAE;QACpB,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAAChB,KAAK,CAACC,IAAI,CAACa,MAAM,GAAG,GAAG,CAAC;QAClD,OAAOd,KAAK,CAACC,IAAI,CAACgB,SAAS,CAAC,CAAC,EAAEH,MAAM,CAAC;MACxC;MACA,OAAOd,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEF,MAAMiB,OAAO,GAAG1B,QAAQ,CAAC,MAAM;MAC7B,IAAIgB,UAAU,CAACE,KAAK,EAAE;QACpB,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAAChB,KAAK,CAACC,IAAI,CAACa,MAAM,GAAG,GAAG,CAAC;QAClD,OAAOd,KAAK,CAACC,IAAI,CAACgB,SAAS,CAACH,MAAM,EAAEd,KAAK,CAACC,IAAI,CAACa,MAAM,CAAC;MACxD;MACA,OAAOd,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEFN,KAAK,CAACc,cAAc,EAAGU,GAAG,IAAK;MAC7B,IAAIb,iBAAiB,CAACI,KAAK,IAAIS,GAAG,IAAI,IAAI,EAAE;QAC1CX,UAAU,CAACE,KAAK,GACdJ,iBAAiB,CAACI,KAAK,CAACU,WAAW,GACnCd,iBAAiB,CAACI,KAAK,CAACW,WAAW;MACvC;IACF,CAAC,CAAC;IAEFzB,SAAS,CAAC,MAAM;MACd,OAAA0B,YAAA;QAAA,SAEWV,KAAK,CAACF,KAAK;QAAA,SACX,CAAC,iBAAiB,EAAE;UAAEa,UAAU,EAAEf;QAAW,CAAC;MAAC,IAAAc,YAAA;QAAA,OAE3ChB,iBAAiB;QAAA;MAAA,IACzBN,KAAK,CAACC,IAAI,IAEZO,UAAU,CAACE,KAAK,IAAAY,YAAA;QAAA;MAAA,IACuBT,SAAS,CAACH,KAAK,EACtD,EAEAF,UAAU,CAACE,KAAK,IAAAY,YAAA;QAAA;MAAA,IACqBJ,OAAO,CAACR,KAAK,EAClD;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YTextEllipsis.mjs","names":["computed","defineComponent","ref","watch","useRender","useResizeObserver","YTextEllipsis","name","props","text","type","String","default","setup","resizeObservedRef","contentRect","isOverflow","containerWidth","value","width","title","startText","length","Math","round","substring","endText","neo","scrollWidth","offsetWidth","_createVNode","overflowed"],"sources":["../../../src/components/text-ellipsis/YTextEllipsis.tsx"],"sourcesContent":["import { computed, defineComponent, ref, watch } from 'vue';\n\nimport { useRender, useResizeObserver } from '../../composables';\n\nimport './YTextEllipsis.scss';\n\nexport const YTextEllipsis = defineComponent({\n name: 'YTextEllipsis',\n props: {\n text: {\n type: String,\n default: '',\n },\n },\n setup(props) {\n const { resizeObservedRef, contentRect } = useResizeObserver();\n\n const isOverflow = ref(false);\n\n const containerWidth = computed(() => {\n return contentRect.value?.width;\n });\n\n const title = computed(() => {\n return props.text;\n });\n\n const startText = computed(() => {\n if (isOverflow.value) {\n const length = Math.round(props.text.length * 0.5);\n return props.text.substring(0, length);\n }\n return props.text;\n });\n\n const endText = computed(() => {\n if (isOverflow.value) {\n const length = Math.round(props.text.length * 0.5);\n return props.text.substring(length, props.text.length);\n }\n return props.text;\n });\n\n watch(containerWidth, (neo) => {\n if (resizeObservedRef.value && neo != null) {\n isOverflow.value =\n resizeObservedRef.value.scrollWidth >\n resizeObservedRef.value.offsetWidth;\n }\n });\n\n useRender(() => {\n return (\n <span\n title={title.value}\n class={['y-text-ellipsis', { overflowed: isOverflow.value }]}\n >\n <span ref={resizeObservedRef} class=\"y-text-ellipsis__origin\">\n {props.text}\n </span>\n {isOverflow.value && (\n <span class=\"y-text-ellipsis__start\">{startText.value}</span>\n )}\n\n {isOverflow.value && (\n <span class=\"y-text-ellipsis__end\">{endText.value}</span>\n )}\n </span>\n );\n });\n },\n});\n\nexport type YTextEllipsis = InstanceType<typeof YTextEllipsis>;\n"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,eAAe,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAEnDC,SAAS,EAAEC,iBAAiB;AAErC;AAEA,OAAO,MAAMC,aAAa,GAAGL,eAAe,CAAC;EAC3CM,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX;EACF,CAAC;EACDC,KAAKA,CAACL,KAAK,EAAE;IACX,MAAM;MAAEM,iBAAiB;MAAEC;IAAY,CAAC,GAAGV,iBAAiB,CAAC,CAAC;IAE9D,MAAMW,UAAU,GAAGd,GAAG,CAAC,KAAK,CAAC;IAE7B,MAAMe,cAAc,GAAGjB,QAAQ,CAAC,MAAM;MACpC,OAAOe,WAAW,CAACG,KAAK,EAAEC,KAAK;IACjC,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAGpB,QAAQ,CAAC,MAAM;MAC3B,OAAOQ,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEF,MAAMY,SAAS,GAAGrB,QAAQ,CAAC,MAAM;MAC/B,IAAIgB,UAAU,CAACE,KAAK,EAAE;QACpB,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAAChB,KAAK,CAACC,IAAI,CAACa,MAAM,GAAG,GAAG,CAAC;QAClD,OAAOd,KAAK,CAACC,IAAI,CAACgB,SAAS,CAAC,CAAC,EAAEH,MAAM,CAAC;MACxC;MACA,OAAOd,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEF,MAAMiB,OAAO,GAAG1B,QAAQ,CAAC,MAAM;MAC7B,IAAIgB,UAAU,CAACE,KAAK,EAAE;QACpB,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAAChB,KAAK,CAACC,IAAI,CAACa,MAAM,GAAG,GAAG,CAAC;QAClD,OAAOd,KAAK,CAACC,IAAI,CAACgB,SAAS,CAACH,MAAM,EAAEd,KAAK,CAACC,IAAI,CAACa,MAAM,CAAC;MACxD;MACA,OAAOd,KAAK,CAACC,IAAI;IACnB,CAAC,CAAC;IAEFN,KAAK,CAACc,cAAc,EAAGU,GAAG,IAAK;MAC7B,IAAIb,iBAAiB,CAACI,KAAK,IAAIS,GAAG,IAAI,IAAI,EAAE;QAC1CX,UAAU,CAACE,KAAK,GACdJ,iBAAiB,CAACI,KAAK,CAACU,WAAW,GACnCd,iBAAiB,CAACI,KAAK,CAACW,WAAW;MACvC;IACF,CAAC,CAAC;IAEFzB,SAAS,CAAC,MAAM;MACd,OAAA0B,YAAA;QAAA,SAEWV,KAAK,CAACF,KAAK;QAAA,SACX,CAAC,iBAAiB,EAAE;UAAEa,UAAU,EAAEf,UAAU,CAACE;QAAM,CAAC;MAAC,IAAAY,YAAA;QAAA,OAEjDhB,iBAAiB;QAAA;MAAA,IACzBN,KAAK,CAACC,IAAI,IAEZO,UAAU,CAACE,KAAK,IAAAY,YAAA;QAAA;MAAA,IACuBT,SAAS,CAACH,KAAK,EACtD,EAEAF,UAAU,CAACE,KAAK,IAAAY,YAAA;QAAA;MAAA,IACqBJ,OAAO,CAACR,KAAK,EAClD;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fr
2
2
  import { computed, defineComponent, nextTick, ref, watch } from 'vue';
3
3
  import { useModelDuplex } from "../../composables/communication.mjs";
4
4
  import { useRender } from "../../composables/component.mjs";
5
- import { polyTransitionPropOptions } from "../../composables/transition.mjs";
5
+ import { pressPolyTransitionPropsOptions } from "../../composables/transition.mjs";
6
6
  import { omit } from "../../util/index.mjs";
7
7
  import { bindClasses, chooseProps } from "../../util/vue-component.mjs";
8
8
  import { YLayer, pressYLayerProps } from "../layer/index.mjs";
@@ -34,10 +34,9 @@ export const YTooltip = defineComponent({
34
34
  align: 'center',
35
35
  offset: 8
36
36
  }),
37
- transition: {
38
- ...polyTransitionPropOptions.transition,
39
- default: 'fade'
40
- }
37
+ ...pressPolyTransitionPropsOptions({
38
+ transition: 'fade'
39
+ })
41
40
  },
42
41
  emits: ['update:modelValue'],
43
42
  setup(props, _ref) {