@teppen/react-ui 1.7.6 → 1.8.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 (200) hide show
  1. package/dist/cjs/node_modules/react-icons/bi/index.js +2 -0
  2. package/dist/cjs/node_modules/react-icons/bi/index.js.map +1 -0
  3. package/dist/cjs/node_modules/react-icons/ti/index.js +2 -0
  4. package/dist/cjs/node_modules/react-icons/ti/index.js.map +1 -0
  5. package/dist/cjs/src/search-bar/condition-search-bar/base.js +3 -0
  6. package/dist/cjs/src/search-bar/condition-search-bar/base.js.map +1 -0
  7. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/context.js +2 -0
  8. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/context.js.map +1 -0
  9. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/hook.js +2 -0
  10. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/hook.js.map +1 -0
  11. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/provider.js +2 -0
  12. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/provider.js.map +1 -0
  13. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/reducer.js +2 -0
  14. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/reducer.js.map +1 -0
  15. package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js +3 -0
  16. package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js.map +1 -0
  17. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +3 -0
  18. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js.map +1 -0
  19. package/dist/cjs/src/search-bar/id-generator/context.js +2 -0
  20. package/dist/cjs/src/search-bar/id-generator/context.js.map +1 -0
  21. package/dist/cjs/src/search-bar/id-generator/provider.js +3 -0
  22. package/dist/cjs/src/select-box/index.js +2 -1
  23. package/dist/cjs/src/select-box/index.js.map +1 -1
  24. package/dist/cjs/src/select-box/options-window/component.js +2 -0
  25. package/dist/cjs/src/select-box/options-window/component.js.map +1 -0
  26. package/dist/cjs/src/select-box/options-window/context.js +2 -0
  27. package/dist/cjs/src/select-box/options-window/context.js.map +1 -0
  28. package/dist/cjs/src/select-box/options-window/hook.js +2 -0
  29. package/dist/cjs/src/select-box/options-window/hook.js.map +1 -0
  30. package/dist/cjs/src/select-box/options-window/provider.js +2 -0
  31. package/dist/cjs/src/select-box/options-window/provider.js.map +1 -0
  32. package/dist/cjs/src/select-box/options-window/reducer.js +2 -0
  33. package/dist/cjs/src/select-box/options-window/reducer.js.map +1 -0
  34. package/dist/cjs/src/select-box/parts/frame.js +1 -1
  35. package/dist/cjs/src/select-box/parts/frame.js.map +1 -1
  36. package/dist/cjs/src/select-box/parts/input-area.js +1 -1
  37. package/dist/cjs/src/select-box/provider.js +3 -0
  38. package/dist/cjs/src/share/search-operator/constant.js +2 -0
  39. package/dist/cjs/src/share/search-operator/constant.js.map +1 -0
  40. package/dist/cjs/src/table/cell/hooks.js +1 -1
  41. package/dist/cjs/src/table/cell/hooks.js.map +1 -1
  42. package/dist/cjs/src/table/checkbox/components.js +1 -1
  43. package/dist/cjs/src/table/filter-v2/context.js +2 -0
  44. package/dist/cjs/src/table/filter-v2/context.js.map +1 -0
  45. package/dist/cjs/src/table/filter-v2/hook.js +2 -0
  46. package/dist/cjs/src/table/filter-v2/hook.js.map +1 -0
  47. package/dist/cjs/src/table/filter-v2/provider.js +2 -0
  48. package/dist/cjs/src/table/filter-v2/provider.js.map +1 -0
  49. package/dist/cjs/src/table/filter-v2/reducer.js +2 -0
  50. package/dist/cjs/src/table/filter-v2/reducer.js.map +1 -0
  51. package/dist/cjs/src/table/frame/frame.js +3 -0
  52. package/dist/cjs/src/table/frame/frame.js.map +1 -0
  53. package/dist/cjs/src/table/header/columns-width/context.js +2 -0
  54. package/dist/cjs/src/table/header/columns-width/context.js.map +1 -0
  55. package/dist/cjs/src/table/header/columns-width/provider.js +3 -0
  56. package/dist/cjs/src/table/header/columns-width/provider.js.map +1 -0
  57. package/dist/cjs/src/table/header/columns-width/reducer.js +2 -0
  58. package/dist/cjs/src/table/header/columns-width/reducer.js.map +1 -0
  59. package/dist/cjs/src/table/header/header-v2-hook.js +2 -0
  60. package/dist/cjs/src/table/header/header-v2-hook.js.map +1 -0
  61. package/dist/cjs/src/table/header/header-v2.js +2 -0
  62. package/dist/cjs/src/table/header/header-v2.js.map +1 -0
  63. package/dist/cjs/src/table/header/header.js +1 -1
  64. package/dist/cjs/src/table/header/x-scroll-position/context.js +2 -0
  65. package/dist/cjs/src/table/header/x-scroll-position/context.js.map +1 -0
  66. package/dist/cjs/src/table/header/x-scroll-position/provider.js +2 -0
  67. package/dist/cjs/src/table/header/x-scroll-position/provider.js.map +1 -0
  68. package/dist/cjs/src/table/header/x-scroll-position/reducer.js +2 -0
  69. package/dist/cjs/src/table/header/x-scroll-position/reducer.js.map +1 -0
  70. package/dist/cjs/src/table/id/id-generator.js +1 -1
  71. package/dist/cjs/src/table/id/id-generator.js.map +1 -1
  72. package/dist/cjs/src/table/range/provider.js +1 -1
  73. package/dist/cjs/src/table/range/provider.js.map +1 -1
  74. package/dist/cjs/src/table/sheet/components.js +1 -1
  75. package/dist/cjs/src/table/sheet/components.js.map +1 -1
  76. package/dist/cjs/src/table/table/base.js +1 -1
  77. package/dist/cjs/src/table/table/component-provider/provider.js +3 -0
  78. package/dist/cjs/src/table/table/component-provider/provider.js.map +1 -0
  79. package/dist/cjs/src/table/table/hook.js +1 -1
  80. package/dist/cjs/src/table/table/hook.js.map +1 -1
  81. package/dist/esm/node_modules/react-icons/bi/index.js +2 -0
  82. package/dist/esm/node_modules/react-icons/bi/index.js.map +1 -0
  83. package/dist/esm/node_modules/react-icons/ti/index.js +2 -0
  84. package/dist/esm/node_modules/react-icons/ti/index.js.map +1 -0
  85. package/dist/esm/src/search-bar/condition-search-bar/base.js +3 -0
  86. package/dist/esm/src/search-bar/condition-search-bar/base.js.map +1 -0
  87. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/context.js +2 -0
  88. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/context.js.map +1 -0
  89. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/hook.js +2 -0
  90. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/hook.js.map +1 -0
  91. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/provider.js +2 -0
  92. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/provider.js.map +1 -0
  93. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/reducer.js +2 -0
  94. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/reducer.js.map +1 -0
  95. package/dist/esm/src/search-bar/condition-search-bar/condition-list.js +3 -0
  96. package/dist/esm/src/search-bar/condition-search-bar/condition-list.js.map +1 -0
  97. package/dist/esm/src/search-bar/condition-search-bar/input-form.js +3 -0
  98. package/dist/esm/src/search-bar/condition-search-bar/input-form.js.map +1 -0
  99. package/dist/esm/src/search-bar/id-generator/context.js +2 -0
  100. package/dist/esm/src/search-bar/id-generator/context.js.map +1 -0
  101. package/dist/esm/src/search-bar/id-generator/provider.js +3 -0
  102. package/dist/esm/src/search-bar/id-generator/provider.js.map +1 -0
  103. package/dist/esm/src/select-box/index.js +2 -1
  104. package/dist/esm/src/select-box/index.js.map +1 -1
  105. package/dist/esm/src/select-box/options-window/component.js +2 -0
  106. package/dist/esm/src/select-box/options-window/component.js.map +1 -0
  107. package/dist/esm/src/select-box/options-window/context.js +2 -0
  108. package/dist/esm/src/select-box/options-window/context.js.map +1 -0
  109. package/dist/esm/src/select-box/options-window/hook.js +2 -0
  110. package/dist/esm/src/select-box/options-window/hook.js.map +1 -0
  111. package/dist/esm/src/select-box/options-window/provider.js +2 -0
  112. package/dist/esm/src/select-box/options-window/provider.js.map +1 -0
  113. package/dist/esm/src/select-box/options-window/reducer.js +2 -0
  114. package/dist/esm/src/select-box/options-window/reducer.js.map +1 -0
  115. package/dist/esm/src/select-box/parts/frame.js +1 -1
  116. package/dist/esm/src/select-box/parts/frame.js.map +1 -1
  117. package/dist/esm/src/select-box/parts/input-area.js +1 -1
  118. package/dist/esm/src/select-box/provider.js +3 -0
  119. package/dist/esm/src/select-box/provider.js.map +1 -0
  120. package/dist/esm/src/share/search-operator/constant.js +2 -0
  121. package/dist/esm/src/share/search-operator/constant.js.map +1 -0
  122. package/dist/esm/src/table/cell/hooks.js +1 -1
  123. package/dist/esm/src/table/cell/hooks.js.map +1 -1
  124. package/dist/esm/src/table/checkbox/components.js +1 -1
  125. package/dist/esm/src/table/filter-v2/context.js +2 -0
  126. package/dist/esm/src/table/filter-v2/context.js.map +1 -0
  127. package/dist/esm/src/table/filter-v2/hook.js +2 -0
  128. package/dist/esm/src/table/filter-v2/hook.js.map +1 -0
  129. package/dist/esm/src/table/filter-v2/provider.js +2 -0
  130. package/dist/esm/src/table/filter-v2/provider.js.map +1 -0
  131. package/dist/esm/src/table/filter-v2/reducer.js +2 -0
  132. package/dist/esm/src/table/filter-v2/reducer.js.map +1 -0
  133. package/dist/esm/src/table/frame/frame.js +3 -0
  134. package/dist/esm/src/table/frame/frame.js.map +1 -0
  135. package/dist/esm/src/table/header/columns-width/context.js +2 -0
  136. package/dist/esm/src/table/header/columns-width/context.js.map +1 -0
  137. package/dist/esm/src/table/header/columns-width/provider.js +3 -0
  138. package/dist/esm/src/table/header/columns-width/provider.js.map +1 -0
  139. package/dist/esm/src/table/header/columns-width/reducer.js +2 -0
  140. package/dist/esm/src/table/header/columns-width/reducer.js.map +1 -0
  141. package/dist/esm/src/table/header/header-v2-hook.js +2 -0
  142. package/dist/esm/src/table/header/header-v2-hook.js.map +1 -0
  143. package/dist/esm/src/table/header/header-v2.js +2 -0
  144. package/dist/esm/src/table/header/header-v2.js.map +1 -0
  145. package/dist/esm/src/table/header/header.js +1 -1
  146. package/dist/esm/src/table/header/x-scroll-position/context.js +2 -0
  147. package/dist/esm/src/table/header/x-scroll-position/context.js.map +1 -0
  148. package/dist/esm/src/table/header/x-scroll-position/provider.js +2 -0
  149. package/dist/esm/src/table/header/x-scroll-position/provider.js.map +1 -0
  150. package/dist/esm/src/table/header/x-scroll-position/reducer.js +2 -0
  151. package/dist/esm/src/table/header/x-scroll-position/reducer.js.map +1 -0
  152. package/dist/esm/src/table/id/id-generator.js +1 -1
  153. package/dist/esm/src/table/id/id-generator.js.map +1 -1
  154. package/dist/esm/src/table/range/provider.js +1 -1
  155. package/dist/esm/src/table/range/provider.js.map +1 -1
  156. package/dist/esm/src/table/sheet/components.js +1 -1
  157. package/dist/esm/src/table/sheet/components.js.map +1 -1
  158. package/dist/esm/src/table/table/base.js +1 -1
  159. package/dist/esm/src/table/table/component-provider/provider.js +3 -0
  160. package/dist/esm/src/table/table/component-provider/provider.js.map +1 -0
  161. package/dist/esm/src/table/table/hook.js +1 -1
  162. package/dist/esm/src/table/table/hook.js.map +1 -1
  163. package/dist/index.d.ts +28 -4
  164. package/package.json +1 -1
  165. package/dist/cjs/src/select-box/parts/options-area.js +0 -2
  166. package/dist/cjs/src/select-box/parts/options-area.js.map +0 -1
  167. package/dist/cjs/src/table/filter/components.js +0 -3
  168. package/dist/cjs/src/table/filter/components.js.map +0 -1
  169. package/dist/cjs/src/table/filter/constants.js +0 -2
  170. package/dist/cjs/src/table/filter/constants.js.map +0 -1
  171. package/dist/cjs/src/table/filter/filter-icon.js +0 -2
  172. package/dist/cjs/src/table/filter/filter-icon.js.map +0 -1
  173. package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/hooks.js +0 -2
  174. package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/hooks.js.map +0 -1
  175. package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/provider.js +0 -2
  176. package/dist/cjs/src/table/filter/hooks/selectedFilteringColumn/provider.js.map +0 -1
  177. package/dist/cjs/src/table/filter/hooks.js +0 -2
  178. package/dist/cjs/src/table/filter/hooks.js.map +0 -1
  179. package/dist/cjs/src/table/filter/provider.js +0 -3
  180. package/dist/cjs/src/table/header/resize-col-width-hook.js +0 -2
  181. package/dist/cjs/src/table/header/resize-col-width-hook.js.map +0 -1
  182. package/dist/esm/src/select-box/parts/options-area.js +0 -2
  183. package/dist/esm/src/select-box/parts/options-area.js.map +0 -1
  184. package/dist/esm/src/table/filter/components.js +0 -3
  185. package/dist/esm/src/table/filter/components.js.map +0 -1
  186. package/dist/esm/src/table/filter/constants.js +0 -2
  187. package/dist/esm/src/table/filter/constants.js.map +0 -1
  188. package/dist/esm/src/table/filter/filter-icon.js +0 -2
  189. package/dist/esm/src/table/filter/filter-icon.js.map +0 -1
  190. package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/hooks.js +0 -2
  191. package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/hooks.js.map +0 -1
  192. package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/provider.js +0 -2
  193. package/dist/esm/src/table/filter/hooks/selectedFilteringColumn/provider.js.map +0 -1
  194. package/dist/esm/src/table/filter/hooks.js +0 -2
  195. package/dist/esm/src/table/filter/hooks.js.map +0 -1
  196. package/dist/esm/src/table/filter/provider.js +0 -3
  197. package/dist/esm/src/table/header/resize-col-width-hook.js +0 -2
  198. package/dist/esm/src/table/header/resize-col-width-hook.js.map +0 -1
  199. /package/dist/cjs/src/{table/filter → search-bar/id-generator}/provider.js.map +0 -0
  200. /package/dist/{esm/src/table/filter → cjs/src/select-box}/provider.js.map +0 -0
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{memo as r,useRef as i,useEffect as n}from"react";import{SelectBoxProvider as o}from"../../select-box/provider.js";import"../id-generator/context.js";import{IdGeneratorProvider as s}from"../id-generator/provider.js";import{ConditionInputProvider as l}from"./condition-input-management/provider.js";import"./condition-input-management/context.js";import{ConditionList as a}from"./condition-list.js";import{SearchBarInputForm as c}from"./input-form.js";import{BiSearchAlt as d}from"../../../node_modules/react-icons/bi/index.js";var m=r((function(t){return e(o,{children:e(s,{id:t.id,children:e(l,{targets:t.targets,onChangeCondition:t.onChangeCondition,children:e(f,{size:t.size,conditions:t.conditions})})})})}));function f(r){var o=i(null);return n((function(){if(o.current){var e=o.current,t=function(t){0!==t.deltaY&&(t.preventDefault(),e.scrollLeft+=t.deltaY)};return e.addEventListener("wheel",t),function(){e.removeEventListener("wheel",t)}}}),[o]),t("div",{className:"flex items-center gap-1 w-full px-2 py-1 bg-white border border-slate-700 rounded-md text-gray-800 ".concat("small"===r.size?"text-sm":"large"===r.size?"text-lg":""),children:[e("div",{className:"px-2",children:e(d,{className:"text-slate-600"})}),t("div",{ref:o,className:"relative flex w-full items-center gap-1 overflow-x-auto no_scrollbar",children:[e(a,{conditions:r.conditions}),e("div",{className:"flex items-center min-w-64 w-full",children:e(c,{size:r.size})})]})]})}export{m as ConditionSearchBar,f as SearchBar};
3
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{createContext as n,useContext as t}from"react";var r=n(null),i=n(null);function o(){var n=t(r);if(!n)throw new Error("useConditionInputState must be used within a ConditionInputProvider");return n}function u(){var n=t(i);if(!n)throw new Error("useConditionInputAction must be used within a ConditionInputProvider");return n}export{i as ConditionInputActionContext,r as ConditionInputStateContext,u as useConditionInputAction,o as useConditionInputState};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../../../../src/search-bar/condition-search-bar/condition-input-management/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport {\n TConditionInputActionContext,\n TConditionInputStateContext,\n} from \"./type\";\n\nexport const ConditionInputStateContext =\n createContext<TConditionInputStateContext | null>(null);\n\nexport const ConditionInputActionContext =\n createContext<TConditionInputActionContext | null>(null);\n\nexport function useConditionInputState() {\n const context = useContext(ConditionInputStateContext);\n\n if (!context) {\n throw new Error(\n \"useConditionInputState must be used within a ConditionInputProvider\"\n );\n }\n\n return context;\n}\n\nexport function useConditionInputAction() {\n const context = useContext(ConditionInputActionContext);\n\n if (!context) {\n throw new Error(\n \"useConditionInputAction must be used within a ConditionInputProvider\"\n );\n }\n\n return context;\n}\n\nexport function useConditionInput() {\n return {\n state: useConditionInputState(),\n actions: useConditionInputAction(),\n };\n}\n"],"names":["ConditionInputStateContext","createContext","ConditionInputActionContext","useConditionInputState","context","useContext","Error","useConditionInputAction"],"mappings":"0DAMaA,EACXC,EAAkD,MAEvCC,EACXD,EAAmD,eAErCE,IACd,IAAMC,EAAUC,EAAWL,GAE3B,IAAKI,EACH,MAAM,IAAIE,MACR,uEAIJ,OAAOF,CACT,UAEgBG,IACd,IAAMH,EAAUC,EAAWH,GAE3B,IAAKE,EACH,MAAM,IAAIE,MACR,wEAIJ,OAAOF,CACT"}
@@ -0,0 +1,2 @@
1
+ import{useReducer as t,useMemo as e}from"react";import{conditionInputReducer as n}from"./reducer.js";var r=function(r,o){var a=t(n,{targets:r,onChangeCondition:o,status:"waiting for input"}),p=a[0],i=a[1],u=e((function(){return{inputTarget:function(t){i({type:"inputTarget",payload:{targetKey:t}})},inputOperator:function(t){i({type:"inputOperator",payload:{operatorKey:t}})},inputValue:function(t){i({type:"inputValue",payload:t})},deleteCondition:function(t){i({type:"deleteCondition",payload:{index:t}})},reset:function(){i({type:"reset"})},updateTargets:function(t){i({type:"updateTargets",payload:{targets:t}})},removeInputedTarget:function(){i({type:"removeInputedTarget"})},removeInputedOperator:function(){i({type:"removeInputedOperator"})}}}),[]);return{state:p,actions:u}};export{r as useConditionInputHook};
2
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sources":["../../../../../../src/search-bar/condition-search-bar/condition-input-management/hook.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { SearchInput, Target, TConditionInputHook } from \"./type\";\nimport { conditionInputReducer } from \"./reducer\";\n\nexport const useConditionInputHook: TConditionInputHook = (\n targets,\n onChangeCondition\n) => {\n const [state, dispatch] = useReducer(conditionInputReducer, {\n targets,\n onChangeCondition,\n status: \"waiting for input\",\n });\n\n const actions = useMemo(\n () => ({\n inputTarget: (targetKey: string) => {\n dispatch({ type: \"inputTarget\", payload: { targetKey } });\n },\n inputOperator: (operatorKey: string) => {\n dispatch({ type: \"inputOperator\", payload: { operatorKey } });\n },\n inputValue: (value: SearchInput) => {\n dispatch({ type: \"inputValue\", payload: value });\n },\n deleteCondition: (index: number) => {\n dispatch({ type: \"deleteCondition\", payload: { index } });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n updateTargets: (targets: Target[]) => {\n dispatch({ type: \"updateTargets\", payload: { targets } });\n },\n removeInputedTarget: () => {\n dispatch({ type: \"removeInputedTarget\" });\n },\n removeInputedOperator: () => {\n dispatch({ type: \"removeInputedOperator\" });\n },\n }),\n []\n );\n\n return {\n state,\n actions,\n };\n};\n"],"names":["useConditionInputHook","targets","onChangeCondition","_a","useReducer","conditionInputReducer","status","state","dispatch","actions","useMemo","inputTarget","targetKey","type","payload","inputOperator","operatorKey","inputValue","value","deleteCondition","index","reset","updateTargets","removeInputedTarget","removeInputedOperator"],"mappings":"qGAIa,IAAAA,EAA6C,SACxDC,EACAC,GAEM,IAAAC,EAAoBC,EAAWC,EAAuB,CAC1DJ,QAAOA,EACPC,kBAAiBA,EACjBI,OAAQ,sBAHHC,EAAKJ,EAAA,GAAEK,OAMRC,EAAUC,GACd,WAAM,MAAC,CACLC,YAAa,SAACC,GACZJ,EAAS,CAAEK,KAAM,cAAeC,QAAS,CAAEF,UAASA,IACrD,EACDG,cAAe,SAACC,GACdR,EAAS,CAAEK,KAAM,gBAAiBC,QAAS,CAAEE,YAAWA,IACzD,EACDC,WAAY,SAACC,GACXV,EAAS,CAAEK,KAAM,aAAcC,QAASI,GACzC,EACDC,gBAAiB,SAACC,GAChBZ,EAAS,CAAEK,KAAM,kBAAmBC,QAAS,CAAEM,MAAKA,IACrD,EACDC,MAAO,WACLb,EAAS,CAAEK,KAAM,SAClB,EACDS,cAAe,SAACrB,GACdO,EAAS,CAAEK,KAAM,gBAAiBC,QAAS,CAAEb,QAAOA,IACrD,EACDsB,oBAAqB,WACnBf,EAAS,CAAEK,KAAM,uBAClB,EACDW,sBAAuB,WACrBhB,EAAS,CAAEK,KAAM,yBAClB,EAxBG,GA0BN,IAGF,MAAO,CACLN,MAAKA,EACLE,QAAOA,EAEX"}
@@ -0,0 +1,2 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{ConditionInputStateContext as o,ConditionInputActionContext as t}from"./context.js";import{useConditionInputHook as e}from"./hook.js";function i(i){var n=e(i.targets,i.onChangeCondition),a=n.state,c=n.actions;return r(o.Provider,{value:a,children:r(t.Provider,{value:c,children:i.children})})}export{i as ConditionInputProvider};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":["../../../../../../src/search-bar/condition-search-bar/condition-input-management/provider.tsx"],"sourcesContent":["import {\n ConditionInputActionContext,\n ConditionInputStateContext,\n} from \"./context\";\nimport { useConditionInputHook } from \"./hook\";\nimport { Target, TConditionChangeAction } from \"./type\";\n\nexport function ConditionInputProvider(props: {\n children: React.ReactNode;\n targets: Target[];\n onChangeCondition: (action: TConditionChangeAction) => void;\n}) {\n const { state, actions } = useConditionInputHook(\n props.targets,\n props.onChangeCondition\n );\n\n return (\n <ConditionInputStateContext.Provider value={state}>\n <ConditionInputActionContext.Provider value={actions}>\n {props.children}\n </ConditionInputActionContext.Provider>\n </ConditionInputStateContext.Provider>\n );\n}\n"],"names":["ConditionInputProvider","props","_a","useConditionInputHook","targets","onChangeCondition","state","actions","_jsx","ConditionInputStateContext","Provider","value","children","ConditionInputActionContext"],"mappings":"qLAOM,SAAUA,EAAuBC,GAK/B,IAAAC,EAAqBC,EACzBF,EAAMG,QACNH,EAAMI,mBAFAC,UAAOC,YAKf,OACEC,EAACC,EAA2BC,UAASC,MAAOL,EAAKM,SAC/CJ,EAACK,EAA4BH,SAAQ,CAACC,MAAOJ,EAAOK,SACjDX,EAAMW,YAIf"}
@@ -0,0 +1,2 @@
1
+ import{DEFAULT_SEARCH_OPERATOR as t}from"../../../share/search-operator/constant.js";var n=function(n,e){switch(e.type){case"inputTarget":if("waiting for input"!==n.status)return n;var i=n.targets.find((function(t){return t.key===e.payload.targetKey}));return i?{targets:n.targets,onChangeCondition:n.onChangeCondition,status:"inputted target",inputtingCondition:{type:i.type,target:i},useableOperators:t.filter((function(t){return t.type===i.type}))}:n;case"inputOperator":if("inputted target"!==n.status)return n;var o=t.find((function(t){return t.key===e.payload.operatorKey}));return o?o.type!==n.inputtingCondition.target.type?n:"none"===o.inputType?(n.onChangeCondition({type:"add",payload:{condition:{target:n.inputtingCondition.target,operator:o,input:{type:"none"}}}}),{targets:n.targets,onChangeCondition:n.onChangeCondition,status:"waiting for input"}):{targets:n.targets,onChangeCondition:n.onChangeCondition,status:"inputted operator",inputtingCondition:{type:n.inputtingCondition.target.type,target:n.inputtingCondition.target,operator:o}}:n;case"inputValue":return"inputted operator"!==n.status?n:(n.onChangeCondition({type:"add",payload:{condition:{target:n.inputtingCondition.target,operator:n.inputtingCondition.operator,input:e.payload}}}),{targets:n.targets,onChangeCondition:n.onChangeCondition,status:"waiting for input"});case"deleteCondition":return n.onChangeCondition({type:"remove",payload:{index:e.payload.index}}),n;case"reset":return{targets:n.targets,onChangeCondition:n.onChangeCondition,status:"waiting for input"};case"updateTargets":return{targets:e.payload.targets,onChangeCondition:n.onChangeCondition,status:"waiting for input"};case"removeInputedTarget":return"inputted target"!=n.status&&"inputted operator"!=n.status?n:{targets:n.targets,onChangeCondition:n.onChangeCondition,status:"waiting for input"};case"removeInputedOperator":return"inputted operator"!==n.status?n:{targets:n.targets,onChangeCondition:n.onChangeCondition,status:"inputted target",inputtingCondition:{type:n.inputtingCondition.target.type,target:n.inputtingCondition.target},useableOperators:t.filter((function(t){return t.type===n.inputtingCondition.target.type}))}}};export{n as conditionInputReducer};
2
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sources":["../../../../../../src/search-bar/condition-search-bar/condition-input-management/reducer.ts"],"sourcesContent":["import { DEFAULT_SEARCH_OPERATOR } from \"../../../share/search-operator\";\nimport { TConditionInputReducer } from \"./type\";\n\nexport const conditionInputReducer: TConditionInputReducer = (\n state,\n action\n) => {\n switch (action.type) {\n case \"inputTarget\": {\n if (state.status !== \"waiting for input\") {\n return state;\n }\n\n const target = state.targets.find(\n (t) => t.key === action.payload.targetKey\n );\n\n if (!target) {\n return state;\n }\n\n return {\n targets: state.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"inputted target\",\n inputtingCondition: {\n type: target.type,\n target,\n },\n useableOperators: DEFAULT_SEARCH_OPERATOR.filter(\n (o) => o.type === target.type\n ),\n };\n }\n\n case \"inputOperator\": {\n if (state.status !== \"inputted target\") {\n return state;\n }\n\n const operator = DEFAULT_SEARCH_OPERATOR.find(\n (o) => o.key === action.payload.operatorKey\n );\n\n if (!operator) {\n return state;\n }\n\n if (operator.type !== state.inputtingCondition.target.type) {\n return state;\n }\n\n if (operator.inputType === \"none\") {\n state.onChangeCondition({\n type: \"add\",\n payload: {\n condition: {\n target: state.inputtingCondition.target,\n operator,\n input: {\n type: \"none\",\n },\n },\n },\n });\n\n return {\n targets: state.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"waiting for input\",\n };\n }\n\n return {\n targets: state.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"inputted operator\",\n inputtingCondition: {\n type: state.inputtingCondition.target.type,\n target: state.inputtingCondition.target,\n operator,\n },\n };\n }\n\n case \"inputValue\": {\n if (state.status !== \"inputted operator\") {\n return state;\n }\n\n state.onChangeCondition({\n type: \"add\",\n payload: {\n condition: {\n target: state.inputtingCondition.target,\n operator: state.inputtingCondition.operator,\n input: action.payload,\n },\n },\n });\n\n return {\n targets: state.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"waiting for input\",\n };\n }\n\n case \"deleteCondition\": {\n state.onChangeCondition({\n type: \"remove\",\n payload: {\n index: action.payload.index,\n },\n });\n\n return state;\n }\n\n case \"reset\": {\n return {\n targets: state.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"waiting for input\",\n };\n }\n\n case \"updateTargets\": {\n return {\n targets: action.payload.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"waiting for input\",\n };\n }\n\n case \"removeInputedTarget\": {\n if (\n !(\n state.status == \"inputted target\" ||\n state.status == \"inputted operator\"\n )\n ) {\n return state;\n }\n\n return {\n targets: state.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"waiting for input\",\n };\n }\n\n case \"removeInputedOperator\": {\n if (state.status !== \"inputted operator\") {\n return state;\n }\n\n return {\n targets: state.targets,\n onChangeCondition: state.onChangeCondition,\n status: \"inputted target\",\n inputtingCondition: {\n type: state.inputtingCondition.target.type,\n target: state.inputtingCondition.target,\n },\n useableOperators: DEFAULT_SEARCH_OPERATOR.filter(\n (o) => o.type === state.inputtingCondition.target.type\n ),\n };\n }\n }\n};\n"],"names":["conditionInputReducer","state","action","type","status","target_1","targets","find","t","key","payload","targetKey","onChangeCondition","inputtingCondition","target","useableOperators","DEFAULT_SEARCH_OPERATOR","filter","o","operator","operatorKey","inputType","condition","input","index"],"mappings":"qFAGa,IAAAA,EAAgD,SAC3DC,EACAC,GAEA,OAAQA,EAAOC,MACb,IAAK,cACH,GAAqB,sBAAjBF,EAAMG,OACR,OAAOH,EAGT,IAAMI,EAASJ,EAAMK,QAAQC,MAC3B,SAACC,GAAM,OAAAA,EAAEC,MAAQP,EAAOQ,QAAQC,SAAS,IAG3C,OAAKN,EAIE,CACLC,QAASL,EAAMK,QACfM,kBAAmBX,EAAMW,kBACzBR,OAAQ,kBACRS,mBAAoB,CAClBV,KAAME,EAAOF,KACbW,OAAMT,GAERU,iBAAkBC,EAAwBC,QACxC,SAACC,GAAM,OAAAA,EAAEf,OAASE,EAAOF,SAZpBF,EAiBX,IAAK,gBACH,GAAqB,oBAAjBA,EAAMG,OACR,OAAOH,EAGT,IAAMkB,EAAWH,EAAwBT,MACvC,SAACW,GAAM,OAAAA,EAAET,MAAQP,EAAOQ,QAAQU,WAAW,IAG7C,OAAKD,EAIDA,EAAShB,OAASF,EAAMY,mBAAmBC,OAAOX,KAC7CF,EAGkB,SAAvBkB,EAASE,WACXpB,EAAMW,kBAAkB,CACtBT,KAAM,MACNO,QAAS,CACPY,UAAW,CACTR,OAAQb,EAAMY,mBAAmBC,OACjCK,SAAQA,EACRI,MAAO,CACLpB,KAAM,YAMP,CACLG,QAASL,EAAMK,QACfM,kBAAmBX,EAAMW,kBACzBR,OAAQ,sBAIL,CACLE,QAASL,EAAMK,QACfM,kBAAmBX,EAAMW,kBACzBR,OAAQ,oBACRS,mBAAoB,CAClBV,KAAMF,EAAMY,mBAAmBC,OAAOX,KACtCW,OAAQb,EAAMY,mBAAmBC,OACjCK,SAAQA,IAnCHlB,EAwCX,IAAK,aACH,MAAqB,sBAAjBA,EAAMG,OACDH,GAGTA,EAAMW,kBAAkB,CACtBT,KAAM,MACNO,QAAS,CACPY,UAAW,CACTR,OAAQb,EAAMY,mBAAmBC,OACjCK,SAAUlB,EAAMY,mBAAmBM,SACnCI,MAAOrB,EAAOQ,YAKb,CACLJ,QAASL,EAAMK,QACfM,kBAAmBX,EAAMW,kBACzBR,OAAQ,sBAIZ,IAAK,kBAQH,OAPAH,EAAMW,kBAAkB,CACtBT,KAAM,SACNO,QAAS,CACPc,MAAOtB,EAAOQ,QAAQc,SAInBvB,EAGT,IAAK,QACH,MAAO,CACLK,QAASL,EAAMK,QACfM,kBAAmBX,EAAMW,kBACzBR,OAAQ,qBAIZ,IAAK,gBACH,MAAO,CACLE,QAASJ,EAAOQ,QAAQJ,QACxBM,kBAAmBX,EAAMW,kBACzBR,OAAQ,qBAIZ,IAAK,sBACH,MAEoB,mBAAhBH,EAAMG,QACU,qBAAhBH,EAAMG,OAGDH,EAGF,CACLK,QAASL,EAAMK,QACfM,kBAAmBX,EAAMW,kBACzBR,OAAQ,qBAIZ,IAAK,wBACH,MAAqB,sBAAjBH,EAAMG,OACDH,EAGF,CACLK,QAASL,EAAMK,QACfM,kBAAmBX,EAAMW,kBACzBR,OAAQ,kBACRS,mBAAoB,CAClBV,KAAMF,EAAMY,mBAAmBC,OAAOX,KACtCW,OAAQb,EAAMY,mBAAmBC,QAEnCC,iBAAkBC,EAAwBC,QACxC,SAACC,GAAM,OAAAA,EAAEf,OAASF,EAAMY,mBAAmBC,OAAOX,IAA3C,KAKjB"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useConditionInputAction as n}from"./condition-input-management/context.js";import"react";import{TiDeleteOutline as a}from"../../../node_modules/react-icons/ti/index.js";function r(t){return e("div",{className:"flex gap-1",children:t.conditions.map((function(t,n){return e(o,{index:n,condition:t},n)}))})}function o(r){var o=n().deleteCondition;return t("div",{className:"flex items-center gap-2 w-fit px-2 border-2 border-sky-600 rounded shadow",children:[e("p",{className:"whitespace-nowrap",children:c(r.condition)}),e("div",{children:e(a,{className:"bg-white hover:bg-slate-300 rounded-full cursor-pointer",onClick:function(){return o(r.index)}})})]})}function c(e){var t;switch(e.input.type){case"none":return"".concat(e.target.label," ").concat(e.operator.label);case"single string":case"single number":case"single date":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.value);case"range string":case"range number":case"range date":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.from," ~ ").concat(e.input.payload.to);case"select":if("select"!==e.target.type)throw new Error("type error");var n=e.input.payload.value;return"".concat(e.target.label," ").concat(e.operator.label," ").concat(null===(t=e.target.options.find((function(e){return e.value===n})))||void 0===t?void 0:t.label);case"multi select":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.value.join(", "))}}export{r as ConditionList};
3
+ //# sourceMappingURL=condition-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-list.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import{useState as i}from"react";import{SelectBox as o}from"../../select-box/index.js";import{useConditionInputState as r,useConditionInputAction as a}from"./condition-input-management/context.js";import{useIdGenerator as l}from"../id-generator/context.js";import{TiDeleteOutline as u}from"../../../node_modules/react-icons/ti/index.js";function p(t){switch(r().status){case"waiting for input":return e(c,{});case"inputted target":return e(s,{});case"inputted operator":return e(d,{size:t.size})}}function c(){var t=l().generateId,n=r().targets,i=a().inputTarget;return e(o,{id:t("TargetInput"),onSelect:function(e){i(e)},options:n.map((function(e){return{value:e.key,label:e.label}})),placeholder:"Select target",no_appearance:!0,no_icon:!0})}function s(){var i=l().generateId,u=r(),p=a(),c=p.inputOperator,s=p.removeInputedTarget;if("inputted target"!==u.status)return null;var d=u.inputtingCondition.target,g=u.useableOperators;return t(n,{children:[e(v,{label:d.label,onClickDelete:function(){s()}}),e("div",{className:"w-full min-w-64",children:e(o,{id:i("OperatorInput"),onSelect:function(e){c(e),setTimeout((function(){var e=document.getElementById(i("ValueInput"));e&&e.focus()}),10)},options:g.map((function(e){return{value:e.key,label:e.label}})),defaultIsOpen:!0,placeholder:"Select operator",no_appearance:!0,no_icon:!0})})]})}function d(i){var o=r(),l=a(),u=l.removeInputedOperator,p=l.removeInputedTarget;if("inputted operator"!==o.status)return null;var c=o.inputtingCondition.target,s=o.inputtingCondition.operator;return t(n,{children:[e(v,{label:c.label,onClickDelete:function(){p()}}),e(v,{label:s.label,onClickDelete:function(){u()}}),"single string"===o.inputtingCondition.operator.inputType?e(g,{inputType:"single string",size:i.size}):"single number"===o.inputtingCondition.operator.inputType?e(m,{inputType:"single number",size:i.size}):"select"===o.inputtingCondition.operator.inputType?e(f,{inputType:"select",options:"select"===o.inputtingCondition.target.type?o.inputtingCondition.target.options:[]}):console.error("Not implemented")]})}function g(t){var n=l().generateId,o=i(""),r=o[0],u=o[1],p=a().inputValue;return e("input",{id:n("ValueInput"),className:"no_appearance w-full min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===t.size?"text-sm":"large"===t.size?"text-lg":""),type:"text",placeholder:"Search text",value:r,onChange:function(e){u(e.target.value)},onKeyDown:function(e){"Enter"===e.key&&(p({type:t.inputType,payload:{value:r}}),u(""))}})}function m(t){var n=l().generateId,o=i(""),r=o[0],u=o[1],p=a().inputValue;return e("input",{id:n("ValueInput"),className:"no_appearance w-full min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===t.size?"text-sm":"large"===t.size?"text-lg":""),type:"text",placeholder:"Search text",value:r,onChange:function(e){u(e.target.value)},onKeyDown:function(e){"Enter"===e.key&&(p({type:t.inputType,payload:{value:Number(r)}}),u(""))}})}function f(t){var n=a().inputValue,i=l().generateId;return e("div",{className:"w-full min-w-64",children:e(o,{id:i("ValueInput"),onSelect:function(e){n({type:t.inputType,payload:{value:e}})},options:t.options,defaultIsOpen:!0,placeholder:"Select value",no_appearance:!0,no_icon:!0})})}function v(n){return t("div",{className:"flex items-center gap-2 w-fit px-2 border rounded bg-slate-100",children:[e("p",{className:"whitespace-nowrap",children:n.label}),n.onClickDelete&&e("div",{children:e(u,{className:"bg-white hover:bg-slate-300 rounded-full cursor-pointer",onClick:n.onClickDelete})})]})}export{p as SearchBarInputForm};
3
+ //# sourceMappingURL=input-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-form.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{createContext as r,useContext as e}from"react";var t=r(null);function o(){var r=e(t);if(!r)throw new Error("useIdGenerator must be used within a IdGeneratorProvider");return r}export{t as IdGeneratorContext,o as useIdGenerator};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../../../src/search-bar/id-generator/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TIdGeneratorContext } from \"./type\";\n\nexport const IdGeneratorContext = createContext<TIdGeneratorContext | null>(\n null\n);\n\nexport function useIdGenerator() {\n const context = useContext(IdGeneratorContext);\n\n if (!context) {\n throw new Error(\"useIdGenerator must be used within a IdGeneratorProvider\");\n }\n\n return context;\n}\n"],"names":["IdGeneratorContext","createContext","useIdGenerator","context","useContext","Error"],"mappings":"0DAGaA,EAAqBC,EAChC,eAGcC,IACd,IAAMC,EAAUC,EAAWJ,GAE3B,IAAKG,EACH,MAAM,IAAIE,MAAM,4DAGlB,OAAOF,CACT"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as r}from"react/jsx-runtime";import{useMemo as t}from"react";import{IdGeneratorContext as n}from"./context.js";function e(e){var o=t((function(){return{generateId:function(r){return"".concat(e.id,":").concat(r)}}}),[]);return r(n.Provider,{value:o,children:e.children})}export{e as IdGeneratorProvider};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,2 +1,3 @@
1
- import{jsx as e,jsxs as n}from"react/jsx-runtime";import{useState as t,useMemo as o,useEffect as r}from"react";import{InputArea as i}from"./parts/input-area.js";import{OptionsArea as u}from"./parts/options-area.js";import{SelectBoxFrame as a}from"./parts/frame.js";import{IdProvider as d}from"./id/provider.js";import{IdGenerator as l}from"./lib/id-generator.js";function c(c){var f,m,v,s,p=t(null!==(f=c.value)&&void 0!==f?f:""),g=p[0],y=p[1],w=t(null!==(m=c.defaultIsOpen)&&void 0!==m&&m),h=w[0],E=w[1],k=t(""),x=k[0],I=k[1],L=t(void 0),b=L[0],S=L[1],j=function(e){y(e),c.onSelect(e),I(""),E(!1)},B=null!==(s=null===(v=c.options.find((function(e){return e.value===g})))||void 0===v?void 0:v.label)&&void 0!==s?s:"",D=o((function(){return c.options.filter((function(e){return e.label.toLowerCase().includes(x.toLowerCase())}))}),[c.options,x]);r((function(){var e=function(e){var n=document.getElementById(l.generateIdSelectBoxFrame(c.id)),t=document.getElementById(l.generateIdSelectBoxOptionsArea(c.id)),o=e.target;o instanceof Node&&(null==n?void 0:n.contains(o))||o instanceof Node&&(null==t?void 0:t.contains(o))||(I(""),E(!1))};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[]),r((function(){if(h){var e=function(e){"ArrowDown"===e.key?(e.preventDefault(),S((function(e){return"number"==typeof e?Math.min(e+1,D.length-1):0}))):"ArrowUp"===e.key?(e.preventDefault(),S((function(e){return"number"==typeof e?Math.max(e-1,0):0}))):"Enter"===e.key&&(e.preventDefault(),"number"==typeof b&&j(D[b].value))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}S(void 0);var n=document.getElementById(l.generateIdSelectBoxInputArea(c.id));if(n){var t=function(e){"ArrowDown"===e.key&&(e.preventDefault(),E(!0))};return n.addEventListener("keydown",t),function(){n.removeEventListener("keydown",t)}}}),[h,D,b,S]);var A=0===D.length?void 0:"number"==typeof b&&b<D.length?D[b].value:void 0;return e(d,{id:c.id,children:n(a,{isOpen:h,onToggle:function(){return E((function(e){return!e}))},children:[e(i,{inputRef:c.inputRef,isSelecting:h,selectedValue:B,searchText:x,onChangeSearchText:I}),h&&e(u,{options:D,value:g,onSelect:j,selectingValue:A})]})})}export{c as SelectBox};
1
+ "use client";
2
+ import{__assign as o}from"../../node_modules/tslib/tslib.es6.js";import{jsx as e}from"react/jsx-runtime";import{InputArea as n}from"./parts/input-area.js";import{useCallback as i,useEffect as r}from"react";import{IdProvider as t}from"./id/provider.js";import{IdGenerator as p}from"./lib/id-generator.js";import{SelectBoxFrame as s}from"./parts/frame.js";import{useOptionsWindowActions as a}from"./options-window/context.js";import{SelectBoxProvider as c}from"./provider.js";function d(n){return e(c,{children:e(l,o({},n))})}function l(o){var c=a(),d=c.openOptionsWindow,l=c.closeOptionsWindow,m=i((function(){d(p.generateIdSelectBoxInputArea(o.id),o.options,o.onSelect)}),[o.id,o.options,o.onSelect]),f=i((function(){l()}),[]);return r((function(){o.defaultIsOpen&&m()}),[o.defaultIsOpen]),e(t,{id:o.id,children:e(s,{open:m,close:f,no_icon:o.no_icon,children:e(n,{id:o.id,value:o.value,open:m,close:f,inputRef:o.inputRef,options:o.options,no_appearance:o.no_appearance,placeholder:o.placeholder})})})}export{d as SelectBox};
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/select-box/index.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { InputArea, OptionsArea, SelectBoxFrame } from \"./parts\";\nimport { Options } from \"./types\";\nimport { IdProvider } from \"./id/provider\";\nimport { IdGenerator } from \"./lib\";\n\ninterface IPropsSelectBox {\n id: string;\n inputRef?: React.RefObject<HTMLInputElement>;\n defaultIsOpen?: boolean;\n options: Options[];\n value?: string;\n onSelect: (value: string) => void;\n}\n\nexport function SelectBox(props: IPropsSelectBox) {\n const [value, setValue] = useState(props.value ?? \"\");\n const [isOpen, setIsOpen] = useState(props.defaultIsOpen ?? false);\n const [searchText, setSearchText] = useState(\"\");\n const [selectingIndex, setSelectingIndex] = useState<number | undefined>(\n undefined\n );\n\n const handleSelect = (value: string) => {\n setValue(value);\n props.onSelect(value);\n setSearchText(\"\");\n setIsOpen(false);\n };\n\n const label =\n props.options.find((option) => option.value === value)?.label ?? \"\";\n\n const searchedOptions = useMemo(\n () =>\n props.options.filter((option) =>\n option.label.toLowerCase().includes(searchText.toLowerCase())\n ),\n [props.options, searchText]\n );\n\n useEffect(() => {\n const onClickOutOfSelectBox = (e: MouseEvent) => {\n // SelectBox関連の要素を取得\n const frameElement = document.getElementById(\n IdGenerator.generateIdSelectBoxFrame(props.id)\n );\n const optionsElement = document.getElementById(\n IdGenerator.generateIdSelectBoxOptionsArea(props.id)\n );\n\n // クリックされた要素を取得\n const ele = e.target;\n\n if (ele instanceof Node && frameElement?.contains(ele)) return;\n if (ele instanceof Node && optionsElement?.contains(ele)) return;\n\n setSearchText(\"\");\n setIsOpen(false);\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfSelectBox);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfSelectBox);\n };\n }, []);\n\n useEffect(() => {\n if (!isOpen) {\n setSelectingIndex(undefined);\n\n const inputElement = document.getElementById(\n IdGenerator.generateIdSelectBoxInputArea(props.id)\n );\n\n if (inputElement) {\n // inputElementにフォーカスされている場合、ArrowDownを押すとOptionsAreaが開く\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setIsOpen(true);\n }\n };\n inputElement.addEventListener(\"keydown\", handleKeydown);\n\n return () => {\n inputElement.removeEventListener(\"keydown\", handleKeydown);\n };\n }\n } else {\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\"\n ? Math.min(prev + 1, searchedOptions.length - 1)\n : 0\n );\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\" ? Math.max(prev - 1, 0) : 0\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (typeof selectingIndex === \"number\") {\n handleSelect(searchedOptions[selectingIndex].value);\n }\n }\n };\n document.addEventListener(\"keydown\", handleKeydown);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n };\n }\n }, [isOpen, searchedOptions, selectingIndex, setSelectingIndex]);\n\n const selectingValue =\n searchedOptions.length === 0\n ? undefined\n : typeof selectingIndex === \"number\" &&\n selectingIndex < searchedOptions.length\n ? searchedOptions[selectingIndex].value\n : undefined;\n\n return (\n <IdProvider id={props.id}>\n <SelectBoxFrame\n isOpen={isOpen}\n onToggle={() => setIsOpen((prev) => !prev)}\n >\n <InputArea\n inputRef={props.inputRef}\n isSelecting={isOpen}\n selectedValue={label}\n searchText={searchText}\n onChangeSearchText={setSearchText}\n />\n {isOpen && (\n <OptionsArea\n options={searchedOptions}\n value={value}\n onSelect={handleSelect}\n selectingValue={selectingValue}\n />\n )}\n </SelectBoxFrame>\n </IdProvider>\n );\n}\n"],"names":["SelectBox","props","_e","useState","_a","value","setValue","_f","_b","defaultIsOpen","isOpen","setIsOpen","_g","searchText","setSearchText","_h","undefined","selectingIndex","setSelectingIndex","handleSelect","onSelect","label","_d","_c","options","find","option","searchedOptions","useMemo","filter","toLowerCase","includes","useEffect","onClickOutOfSelectBox","e","frameElement","document","getElementById","IdGenerator","generateIdSelectBoxFrame","id","optionsElement","generateIdSelectBoxOptionsArea","ele","target","Node","contains","addEventListener","removeEventListener","handleKeydown_2","key","preventDefault","prev","Math","min","length","max","inputElement_1","generateIdSelectBoxInputArea","handleKeydown_1","selectingValue","_jsx","IdProvider","children","_jsxs","SelectBoxFrame","onToggle","InputArea","inputRef","isSelecting","selectedValue","onChangeSearchText","OptionsArea"],"mappings":"2WAeM,SAAUA,EAAUC,eAClBC,EAAoBC,EAAoB,QAAXC,EAAAH,EAAMI,aAAK,IAAAD,EAAAA,EAAI,IAA3CC,EAAKH,EAAA,GAAEI,OACRC,EAAsBJ,EAA4B,QAAnBK,EAAAP,EAAMQ,qBAAa,IAAAD,GAAAA,GAAjDE,EAAMH,EAAA,GAAEI,OACTC,EAA8BT,EAAS,IAAtCU,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAC1BG,EAAsCZ,OAC1Ca,GADKC,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GAIlCI,EAAe,SAACd,GACpBC,EAASD,GACTJ,EAAMmB,SAASf,GACfS,EAAc,IACdH,GAAU,EACZ,EAEMU,EAC6D,QAAjEC,EAAwD,QAAxDC,EAAAtB,EAAMuB,QAAQC,MAAK,SAACC,GAAW,OAAAA,EAAOrB,QAAUA,YAAQ,IAAAkB,OAAA,EAAAA,EAAAF,aAAS,IAAAC,EAAAA,EAAA,GAE7DK,EAAkBC,GACtB,WACE,OAAA3B,EAAMuB,QAAQK,QAAO,SAACH,GACpB,OAAAA,EAAOL,MAAMS,cAAcC,SAASlB,EAAWiB,cAA/C,GACD,GACH,CAAC7B,EAAMuB,QAASX,IAGlBmB,GAAU,WACR,IAAMC,EAAwB,SAACC,GAE7B,IAAMC,EAAeC,SAASC,eAC5BC,EAAYC,yBAAyBtC,EAAMuC,KAEvCC,EAAiBL,SAASC,eAC9BC,EAAYI,+BAA+BzC,EAAMuC,KAI7CG,EAAMT,EAAEU,OAEVD,aAAeE,OAAQV,aAAA,EAAAA,EAAcW,SAASH,KAC9CA,aAAeE,OAAQJ,aAAA,EAAAA,EAAgBK,SAASH,MAEpD7B,EAAc,IACdH,GAAU,GACZ,EAIA,OAFAyB,SAASW,iBAAiB,YAAad,GAEhC,WACLG,SAASY,oBAAoB,YAAaf,EAC5C,CACD,GAAE,IAEHD,GAAU,WACR,GAAKtB,EAqBE,CACL,IAAMuC,EAAgB,SAACf,GACP,cAAVA,EAAEgB,KACJhB,EAAEiB,iBACFjC,GAAkB,SAACkC,GACjB,MAAgB,iBAATA,EACHC,KAAKC,IAAIF,EAAO,EAAGzB,EAAgB4B,OAAS,GAC5C,CAFJ,KAIiB,YAAVrB,EAAEgB,KACXhB,EAAEiB,iBACFjC,GAAkB,SAACkC,GACjB,MAAgB,iBAATA,EAAoBC,KAAKG,IAAIJ,EAAO,EAAG,GAAK,CAAnD,KAEiB,UAAVlB,EAAEgB,MACXhB,EAAEiB,iBAC4B,iBAAnBlC,GACTE,EAAaQ,EAAgBV,GAAgBZ,OAGnD,EAGA,OAFA+B,SAASW,iBAAiB,UAAWE,GAE9B,WACLb,SAASY,oBAAoB,UAAWC,EAC1C,CACD,CA9CC/B,OAAkBF,GAElB,IAAMyC,EAAerB,SAASC,eAC5BC,EAAYoB,6BAA6BzD,EAAMuC,KAGjD,GAAIiB,EAAc,CAEhB,IAAME,EAAgB,SAACzB,GACP,cAAVA,EAAEgB,MACJhB,EAAEiB,iBACFxC,GAAU,GAEd,EAGA,OAFA8C,EAAaV,iBAAiB,UAAWY,GAElC,WACLF,EAAaT,oBAAoB,UAAWW,EAC9C,CACD,CA4BJ,GAAE,CAACjD,EAAQiB,EAAiBV,EAAgBC,IAE7C,IAAM0C,EACuB,IAA3BjC,EAAgB4B,YACZvC,EAC0B,iBAAnBC,GACPA,EAAiBU,EAAgB4B,OACjC5B,EAAgBV,GAAgBZ,WAChCW,EAEN,OACE6C,EAACC,GAAWtB,GAAIvC,EAAMuC,GACpBuB,SAAAC,EAACC,EACC,CAAAvD,OAAQA,EACRwD,SAAU,WAAM,OAAAvD,GAAU,SAACyC,GAAS,OAACA,IAAK,YAE1CS,EAACM,GACCC,SAAUnE,EAAMmE,SAChBC,YAAa3D,EACb4D,cAAejD,EACfR,WAAYA,EACZ0D,mBAAoBzD,IAErBJ,GACCmD,EAACW,EACC,CAAAhD,QAASG,EACTtB,MAAOA,EACPe,SAAUD,EACVyC,eAAgBA,QAM5B"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as o}from"react";import{useOptionsWindow as r}from"./context.js";import{useIdContext as i}from"../id/provider.js";import{IdGenerator as l}from"../lib/id-generator.js";function a(){var a=i(),u=r(),s=u.state,c=u.actions,p=n(""),d=p[0],f=p[1],v=n(void 0),m=v[0],g=v[1],h=s.isOpen?0===s.options.length?void 0:"number"==typeof m&&m<s.options.length&&m>=0?s.options[m].value:void 0:void 0;if(o((function(){if(s.isOpen){var e=document.getElementById(l.generateIdSelectBoxOption(a,null!=h?h:""));if(!e)return;e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}else g(void 0)}),[s]),o((function(){if(s.isOpen){var e=function(e){if("ArrowDown"===e.key)e.preventDefault(),g((function(e){return"number"==typeof e?Math.min(e+1,s.options.length-1):0}));else if("ArrowUp"===e.key)e.preventDefault(),g((function(e){return"number"==typeof e?Math.max(e-1,0):0}));else if("Enter"===e.key&&(e.preventDefault(),"number"==typeof m)){if(0===s.options.length||s.options.length<=m)return;var t=s.options[m].value;if(!t)return;f(t),s.onSelect(t),c.closeOptionsWindow()}};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}}),[s,m,g]),!s.isOpen)return e(t,{});var y=document.getElementById(s.selectBoxId);if(!y)return e(t,{});var b=y.getBoundingClientRect(),w=window.scrollY+b.top+b.height,x=window.scrollX+b.left;return e("div",{id:"ReactUI:SelectBox:OptionsArea",className:"absolute min-w-fit max-h-[40vh] overflow-auto border border-gray-300 z-10",style:{top:w,left:x},children:s.options.map((function(t){var n,o;return e("div",{id:l.generateIdSelectBoxOption(a,null!==(n=t.value)&&void 0!==n?n:""),className:"hover:bg-gray-200 px-2 py-1 ".concat("string"==typeof h?h===t.value?"bg-gray-100":"bg-white":d===t.value?"bg-gray-100":"bg-white"),onClick:function(){s.onSelect(t.value),c.closeOptionsWindow()},children:null!==(o=t.searchLabel)&&void 0!==o?o:t.label},t.value)}))})}export{a as OptionsArea};
2
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../../../src/select-box/options-window/component.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useOptionsWindow } from \"../options-window\";\nimport { useIdContext } from \"../id/provider\";\nimport { IdGenerator } from \"../lib\";\n\nexport function OptionsArea() {\n const id = useIdContext();\n const { state, actions } = useOptionsWindow();\n const [value, setValue] = useState(\"\");\n const [selectingIndex, setSelectingIndex] = useState<number | undefined>(\n undefined\n );\n\n const selectingValue = state.isOpen\n ? state.options.length === 0\n ? undefined\n : typeof selectingIndex === \"number\" &&\n selectingIndex < state.options.length &&\n selectingIndex >= 0\n ? state.options[selectingIndex].value\n : undefined\n : undefined;\n\n useEffect(() => {\n if (state.isOpen) {\n const optionElement = document.getElementById(\n IdGenerator.generateIdSelectBoxOption(id, selectingValue ?? \"\")\n );\n\n if (!optionElement) return;\n\n optionElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n } else {\n setSelectingIndex(undefined);\n }\n }, [state]);\n\n useEffect(() => {\n if (state.isOpen) {\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\"\n ? Math.min(prev + 1, state.options.length - 1)\n : 0\n );\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\" ? Math.max(prev - 1, 0) : 0\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (typeof selectingIndex === \"number\") {\n if (\n state.options.length === 0 ||\n state.options.length <= selectingIndex\n )\n return;\n\n const value = state.options[selectingIndex].value;\n\n if (!value) return;\n\n setValue(value);\n state.onSelect(value);\n actions.closeOptionsWindow();\n }\n }\n };\n\n document.addEventListener(\"keydown\", handleKeydown);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n };\n }\n }, [state, selectingIndex, setSelectingIndex]);\n\n if (!state.isOpen) return <></>;\n\n // state.selectBoxIdのElementの直下に表示する\n const selectBoxElement = document.getElementById(state.selectBoxId);\n\n if (!selectBoxElement) return <></>;\n\n const rect = selectBoxElement.getBoundingClientRect();\n let top = window.scrollY + rect.top + rect.height;\n let left = window.scrollX + rect.left;\n\n return (\n <div\n id={\"ReactUI:SelectBox:OptionsArea\"}\n className=\"absolute min-w-fit max-h-[40vh] overflow-auto border border-gray-300 z-10\"\n style={{ top, left }}\n >\n {state.options.map((option) => (\n <div\n id={IdGenerator.generateIdSelectBoxOption(id, option.value ?? \"\")}\n className={`hover:bg-gray-200 px-2 py-1 ${\n typeof selectingValue === \"string\"\n ? selectingValue === option.value\n ? \"bg-gray-100\"\n : \"bg-white\"\n : value === option.value\n ? \"bg-gray-100\"\n : \"bg-white\"\n }`}\n key={option.value}\n onClick={() => {\n state.onSelect(option.value);\n actions.closeOptionsWindow();\n }}\n >\n {option.searchLabel ?? option.label}\n </div>\n ))}\n </div>\n );\n}\n"],"names":["OptionsArea","id","useIdContext","_a","useOptionsWindow","state","actions","_b","useState","value","setValue","_c","undefined","selectingIndex","setSelectingIndex","selectingValue","isOpen","options","length","useEffect","optionElement","document","getElementById","IdGenerator","generateIdSelectBoxOption","scrollIntoView","behavior","block","inline","handleKeydown_1","e","key","preventDefault","prev","Math","min","max","value_1","onSelect","closeOptionsWindow","addEventListener","removeEventListener","_jsx","selectBoxElement","selectBoxId","rect","getBoundingClientRect","top","window","scrollY","height","left","scrollX","className","style","children","map","option","concat","onClick","searchLabel","label"],"mappings":"qQAKgBA,IACd,IAAMC,EAAKC,IACLC,EAAqBC,IAAnBC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAChBC,EAAoBC,EAAS,IAA5BC,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAChBI,EAAsCH,OAC1CI,GADKC,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GAIlCI,EAAiBV,EAAMW,OACA,IAAzBX,EAAMY,QAAQC,YACZN,EAC0B,iBAAnBC,GACPA,EAAiBR,EAAMY,QAAQC,QAC/BL,GAAkB,EAClBR,EAAMY,QAAQJ,GAAgBJ,WAC9BG,OACFA,EA+DJ,GA7DAO,GAAU,WACR,GAAId,EAAMW,OAAQ,CAChB,IAAMI,EAAgBC,SAASC,eAC7BC,EAAYC,0BAA0BvB,EAAIc,QAAAA,EAAkB,KAG9D,IAAKK,EAAe,OAEpBA,EAAcK,eAAe,CAC3BC,SAAU,SACVC,MAAO,UACPC,OAAQ,WAEX,MACCd,OAAkBF,EAEtB,GAAG,CAACP,IAEJc,GAAU,WACR,GAAId,EAAMW,OAAQ,CAChB,IAAMa,EAAgB,SAACC,GACrB,GAAc,cAAVA,EAAEC,IACJD,EAAEE,iBACFlB,GAAkB,SAACmB,GACjB,MAAgB,iBAATA,EACHC,KAAKC,IAAIF,EAAO,EAAG5B,EAAMY,QAAQC,OAAS,GAC1C,CAFJ,SAIG,GAAc,YAAVY,EAAEC,IACXD,EAAEE,iBACFlB,GAAkB,SAACmB,GACjB,MAAgB,iBAATA,EAAoBC,KAAKE,IAAIH,EAAO,EAAG,GAAK,CAAnD,SAEG,GAAc,UAAVH,EAAEC,MACXD,EAAEE,iBAC4B,iBAAnBnB,GAA6B,CACtC,GAC2B,IAAzBR,EAAMY,QAAQC,QACdb,EAAMY,QAAQC,QAAUL,EAExB,OAEF,IAAMwB,EAAQhC,EAAMY,QAAQJ,GAAgBJ,MAE5C,IAAK4B,EAAO,OAEZ3B,EAAS2B,GACThC,EAAMiC,SAASD,GACf/B,EAAQiC,oBACT,CAEL,EAIA,OAFAlB,SAASmB,iBAAiB,UAAWX,GAE9B,WACLR,SAASoB,oBAAoB,UAAWZ,EAC1C,CACD,CACF,GAAE,CAACxB,EAAOQ,EAAgBC,KAEtBT,EAAMW,OAAQ,OAAO0B,QAG1B,IAAMC,EAAmBtB,SAASC,eAAejB,EAAMuC,aAEvD,IAAKD,EAAkB,OAAOD,QAE9B,IAAMG,EAAOF,EAAiBG,wBAC1BC,EAAMC,OAAOC,QAAUJ,EAAKE,IAAMF,EAAKK,OACvCC,EAAOH,OAAOI,QAAUP,EAAKM,KAEjC,OACET,EACE,MAAA,CAAAzC,GAAI,gCACJoD,UAAU,4EACVC,MAAO,CAAEP,IAAGA,EAAEI,KAAIA,GAEjBI,SAAAlD,EAAMY,QAAQuC,KAAI,SAACC,WAAW,OAC7Bf,EACE,MAAA,CAAAzC,GAAIsB,EAAYC,0BAA0BvB,EAAgB,QAAZE,EAAAsD,EAAOhD,aAAK,IAAAN,EAAAA,EAAI,IAC9DkD,UAAW,+BACTK,OAA0B,iBAAnB3C,EACHA,IAAmB0C,EAAOhD,MACxB,cACA,WACFA,IAAUgD,EAAOhD,MACjB,cACA,YAGNkD,QAAS,WACPtD,EAAMiC,SAASmB,EAAOhD,OACtBH,EAAQiC,oBACV,EAECgB,SAAsB,QAAtBhD,EAAAkD,EAAOG,mBAAe,IAAArD,EAAAA,EAAAkD,EAAOI,OANzBJ,EAAOhD,MAQf,KAGP"}
@@ -0,0 +1,2 @@
1
+ import{createContext as n,useContext as t}from"react";var r=n(null),i=n(null),o=function(){var n=t(r);if(null===n)throw new Error("useOptionsWindowState must be used within a SelectOptionsWindowProvider");return n},e=function(){var n=t(i);if(null===n)throw new Error("useOptionsWindowActions must be used within a SelectOptionsWindowProvider");return n},u=function(){return{state:o(),actions:e()}};export{i as OptionsWindowActionContext,r as OptionsWindowStateContext,u as useOptionsWindow,e as useOptionsWindowActions,o as useOptionsWindowState};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../../../src/select-box/options-window/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport {\n TOptionsWindowActionContext,\n TOptionsWindowStateContext,\n} from \"./type\";\n\nexport const OptionsWindowStateContext =\n createContext<TOptionsWindowStateContext | null>(null);\n\nexport const OptionsWindowActionContext =\n createContext<TOptionsWindowActionContext | null>(null);\n\nexport const useOptionsWindowState = () => {\n const optionsState = useContext(OptionsWindowStateContext);\n\n if (optionsState === null) {\n throw new Error(\n \"useOptionsWindowState must be used within a SelectOptionsWindowProvider\"\n );\n }\n return optionsState;\n};\n\nexport const useOptionsWindowActions = () => {\n const optionsActions = useContext(OptionsWindowActionContext);\n\n if (optionsActions === null) {\n throw new Error(\n \"useOptionsWindowActions must be used within a SelectOptionsWindowProvider\"\n );\n }\n\n return optionsActions;\n};\n\nexport const useOptionsWindow = () => {\n return {\n state: useOptionsWindowState(),\n actions: useOptionsWindowActions(),\n };\n};\n"],"names":["OptionsWindowStateContext","createContext","OptionsWindowActionContext","useOptionsWindowState","optionsState","useContext","Error","useOptionsWindowActions","optionsActions","useOptionsWindow","state","actions"],"mappings":"0DAMaA,EACXC,EAAiD,MAEtCC,EACXD,EAAkD,MAEvCE,EAAwB,WACnC,IAAMC,EAAeC,EAAWL,GAEhC,GAAqB,OAAjBI,EACF,MAAM,IAAIE,MACR,2EAGJ,OAAOF,CACT,EAEaG,EAA0B,WACrC,IAAMC,EAAiBH,EAAWH,GAElC,GAAuB,OAAnBM,EACF,MAAM,IAAIF,MACR,6EAIJ,OAAOE,CACT,EAEaC,EAAmB,WAC9B,MAAO,CACLC,MAAOP,IACPQ,QAASJ,IAEb"}
@@ -0,0 +1,2 @@
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as t,useMemo as o}from"react";import{optionsWindowReducer as r}from"./reducer.js";var s=function(){var s=t(r,{isOpen:!1}),n=s[0],a=s[1];return{state:o((function(){return n.isOpen?e(e({},n),{options:n.options.filter((function(e){return e.searchText?e.searchText.toLowerCase().includes(n.searchText.toLowerCase()):e.searchLabel?e.searchLabel.toLowerCase().includes(n.searchText.toLowerCase()):e.label.toLowerCase().includes(n.searchText.toLowerCase())}))}):n}),[n]),actions:o((function(){return{openOptionsWindow:function(e,t,o,r){a({type:"open",payload:{selectBoxId:e,options:t,onSelect:o,searchText:null==r?void 0:r.searchText,defaultValue:null==r?void 0:r.defaultValue}})},setSearchText:function(e){a({type:"setSearchText",payload:{searchText:e}})},closeOptionsWindow:function(){a({type:"close"})}}}),[])}};export{s as useOptionsWindowHook};
2
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sources":["../../../../../src/select-box/options-window/hook.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { Options, TOptionsWindowHook } from \"./type\";\nimport { optionsWindowReducer } from \"./reducer\";\n\nexport const useOptionsWindowHook: TOptionsWindowHook = () => {\n const [state, dispatch] = useReducer(optionsWindowReducer, {\n isOpen: false,\n });\n\n const retrunState = useMemo(() => {\n if (!state.isOpen) {\n return state;\n } else {\n return {\n ...state,\n options: state.options.filter((option) => {\n if (option.searchText) {\n return option.searchText\n .toLowerCase()\n .includes(state.searchText.toLowerCase());\n } else if (option.searchLabel) {\n return option.searchLabel\n .toLowerCase()\n .includes(state.searchText.toLowerCase());\n } else {\n return option.label\n .toLowerCase()\n .includes(state.searchText.toLowerCase());\n }\n }),\n };\n }\n }, [state]);\n\n const returnActions = useMemo(\n () => ({\n openOptionsWindow: (\n selectBoxId: string,\n options: Options[],\n onSelect: (value: string) => void,\n option?: { defaultValue?: string; searchText?: string }\n ) => {\n dispatch({\n type: \"open\",\n payload: {\n selectBoxId,\n options,\n onSelect,\n searchText: option?.searchText,\n defaultValue: option?.defaultValue,\n },\n });\n },\n setSearchText: (searchText: string) => {\n dispatch({\n type: \"setSearchText\",\n payload: {\n searchText,\n },\n });\n },\n closeOptionsWindow: () => {\n dispatch({\n type: \"close\",\n });\n },\n }),\n []\n );\n\n return {\n state: retrunState,\n actions: returnActions,\n };\n};\n"],"names":["useOptionsWindowHook","_a","useReducer","optionsWindowReducer","isOpen","state","dispatch","useMemo","__assign","options","filter","option","searchText","toLowerCase","includes","searchLabel","label","actions","openOptionsWindow","selectBoxId","onSelect","type","payload","defaultValue","setSearchText","closeOptionsWindow"],"mappings":"wKAIa,IAAAA,EAA2C,WAChD,IAAAC,EAAoBC,EAAWC,EAAsB,CACzDC,QAAQ,IADHC,EAAKJ,EAAA,GAAEK,OAiEd,MAAO,CACLD,MA9DkBE,GAAQ,WAC1B,OAAKF,EAAMD,OAIJI,EAAAA,EAAA,CAAA,EAAAH,GACH,CAAAI,QAASJ,EAAMI,QAAQC,QAAO,SAACC,GAC7B,OAAIA,EAAOC,WACFD,EAAOC,WACXC,cACAC,SAAST,EAAMO,WAAWC,eACpBF,EAAOI,YACTJ,EAAOI,YACXF,cACAC,SAAST,EAAMO,WAAWC,eAEtBF,EAAOK,MACXH,cACAC,SAAST,EAAMO,WAAWC,cAEhC,MAlBIR,CAqBX,GAAG,CAACA,IAwCFY,QAtCoBV,GACpB,WAAM,MAAC,CACLW,kBAAmB,SACjBC,EACAV,EACAW,EACAT,GAEAL,EAAS,CACPe,KAAM,OACNC,QAAS,CACPH,YAAWA,EACXV,QAAOA,EACPW,SAAQA,EACRR,WAAYD,aAAA,EAAAA,EAAQC,WACpBW,aAAcZ,aAAA,EAAAA,EAAQY,eAG3B,EACDC,cAAe,SAACZ,GACdN,EAAS,CACPe,KAAM,gBACNC,QAAS,CACPV,WAAUA,IAGf,EACDa,mBAAoB,WAClBnB,EAAS,CACPe,KAAM,SAET,EA9BG,GAgCN,IAOJ"}
@@ -0,0 +1,2 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{OptionsWindowStateContext as o,OptionsWindowActionContext as e}from"./context.js";import{useOptionsWindowHook as t}from"./hook.js";function i(i){var n=t(),c=n.state,m=n.actions;return r(o.Provider,{value:c,children:r(e.Provider,{value:m,children:i.children})})}export{i as SelectOptionsWindowProvider};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/select-box/options-window/provider.tsx"],"sourcesContent":["import {\n OptionsWindowActionContext,\n OptionsWindowStateContext,\n} from \"./context\";\nimport { useOptionsWindowHook } from \"./hook\";\n\nexport function SelectOptionsWindowProvider(props: {\n children: React.ReactNode;\n}) {\n const { state, actions } = useOptionsWindowHook();\n\n return (\n <OptionsWindowStateContext.Provider value={state}>\n <OptionsWindowActionContext.Provider value={actions}>\n {props.children}\n </OptionsWindowActionContext.Provider>\n </OptionsWindowStateContext.Provider>\n );\n}\n"],"names":["SelectOptionsWindowProvider","props","_a","useOptionsWindowHook","state","actions","_jsx","OptionsWindowStateContext","Provider","value","children","OptionsWindowActionContext"],"mappings":"kLAMM,SAAUA,EAA4BC,GAGpC,IAAAC,EAAqBC,IAAnBC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEC,EAACC,EAA0BC,UAASC,MAAOL,EAAKM,SAC9CJ,EAACK,EAA2BH,SAAQ,CAACC,MAAOJ,EAAOK,SAChDT,EAAMS,YAIf"}
@@ -0,0 +1,2 @@
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";var a=function(a,s){switch(s.type){case"open":return{isOpen:!0,selectBoxId:s.payload.selectBoxId,options:s.payload.options,searchText:s.payload.searchText||"",onSelect:s.payload.onSelect,selectingValue:s.payload.defaultValue};case"setSearchText":return a.isOpen?a.searchText===s.payload.searchText?a:e(e({},a),{searchText:s.payload.searchText}):a;case"close":return a.isOpen?{isOpen:!1}:a}};export{a as optionsWindowReducer};
2
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sources":["../../../../../src/select-box/options-window/reducer.ts"],"sourcesContent":["import { TOptionsWindowReducer } from \"./type\";\n\nexport const optionsWindowReducer: TOptionsWindowReducer = (state, action) => {\n switch (action.type) {\n case \"open\":\n return {\n isOpen: true,\n selectBoxId: action.payload.selectBoxId,\n options: action.payload.options,\n searchText: action.payload.searchText || \"\",\n onSelect: action.payload.onSelect,\n selectingValue: action.payload.defaultValue,\n };\n case \"setSearchText\":\n if (!state.isOpen) return state;\n\n if (state.searchText === action.payload.searchText) return state;\n\n return {\n ...state,\n searchText: action.payload.searchText,\n };\n case \"close\":\n if (!state.isOpen) return state;\n\n return {\n isOpen: false,\n };\n }\n};\n"],"names":["optionsWindowReducer","state","action","type","isOpen","selectBoxId","payload","options","searchText","onSelect","selectingValue","defaultValue","__assign"],"mappings":"oEAEa,IAAAA,EAA8C,SAACC,EAAOC,GACjE,OAAQA,EAAOC,MACb,IAAK,OACH,MAAO,CACLC,QAAQ,EACRC,YAAaH,EAAOI,QAAQD,YAC5BE,QAASL,EAAOI,QAAQC,QACxBC,WAAYN,EAAOI,QAAQE,YAAc,GACzCC,SAAUP,EAAOI,QAAQG,SACzBC,eAAgBR,EAAOI,QAAQK,cAEnC,IAAK,gBACH,OAAKV,EAAMG,OAEPH,EAAMO,aAAeN,EAAOI,QAAQE,WAAmBP,EAGtDW,EAAAA,EAAA,CAAA,EAAAX,IACHO,WAAYN,EAAOI,QAAQE,aANHP,EAQ5B,IAAK,QACH,OAAKA,EAAMG,OAEJ,CACLA,QAAQ,GAHgBH,EAMhC"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as i}from"react/jsx-runtime";import{useIdContext as o}from"../id/provider.js";import{IdGenerator as r}from"../lib/id-generator.js";import{MdOutlineKeyboardArrowLeft as n}from"../../../node_modules/react-icons/md/index.js";function t(t){var l=o();return e("div",{id:r.generateIdSelectBoxFrame(l),className:"relative w-full",children:[i("div",{onClick:function(e){t.isOpen||t.onToggle()},children:t.children}),i("div",{className:"absolute grid place-items-center h-full right-1 top-0",onClick:function(e){e.stopPropagation(),t.onToggle()},children:i(n,{className:"duration-300 ".concat(t.isOpen?"-rotate-90":"")})})]})}export{t as SelectBoxFrame};
1
+ import{jsxs as e,jsx as o}from"react/jsx-runtime";import{useIdContext as i}from"../id/provider.js";import{IdGenerator as r}from"../lib/id-generator.js";import{MdOutlineKeyboardArrowLeft as t}from"../../../node_modules/react-icons/md/index.js";import{useOptionsWindow as n}from"../options-window/context.js";import"react";function c(c){var a=i(),s=n().state;return e("div",{id:r.generateIdSelectBoxFrame(a),className:"relative w-full",children:[o("div",{onClick:function(e){s.isOpen||c.open()},children:c.children}),!c.no_icon&&o("div",{className:"absolute grid place-items-center h-full right-1 top-0",onClick:function(e){e.stopPropagation(),s.isOpen?c.close():c.open()},children:o(t,{className:"duration-300 ".concat(s.isOpen?"-rotate-90":"")})})]})}export{c as SelectBoxFrame};
2
2
  //# sourceMappingURL=frame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame.js","sources":["../../../../../src/select-box/parts/frame.tsx"],"sourcesContent":["import { useIdContext } from \"../id/provider\";\nimport { IdGenerator } from \"../lib\";\nimport { MdOutlineKeyboardArrowLeft } from \"react-icons/md\";\n\ninterface IPropsSelectBoxFrame {\n onToggle: () => void;\n isOpen: boolean;\n children: React.ReactNode;\n}\n\nexport function SelectBoxFrame(props: IPropsSelectBoxFrame) {\n const id = useIdContext();\n\n return (\n <div\n id={IdGenerator.generateIdSelectBoxFrame(id)}\n className=\"relative w-full\"\n >\n <div\n onClick={(e) => {\n if (!props.isOpen) {\n props.onToggle();\n }\n }}\n >\n {props.children}\n </div>\n <div\n className=\"absolute grid place-items-center h-full right-1 top-0\"\n onClick={(e) => {\n e.stopPropagation();\n props.onToggle();\n }}\n >\n <MdOutlineKeyboardArrowLeft\n className={`duration-300 ${props.isOpen ? \"-rotate-90\" : \"\"}`}\n />\n </div>\n </div>\n );\n}\n"],"names":["SelectBoxFrame","props","id","useIdContext","_jsxs","IdGenerator","generateIdSelectBoxFrame","className","children","_jsx","onClick","e","isOpen","onToggle","stopPropagation","MdOutlineKeyboardArrowLeft","concat"],"mappings":"mPAUM,SAAUA,EAAeC,GAC7B,IAAMC,EAAKC,IAEX,OACEC,EACE,MAAA,CAAAF,GAAIG,EAAYC,yBAAyBJ,GACzCK,UAAU,kBAAiBC,SAAA,CAE3BC,SACEC,QAAS,SAACC,GACHV,EAAMW,QACTX,EAAMY,UAET,EAEAL,SAAAP,EAAMO,WAETC,EAAA,MAAA,CACEF,UAAU,wDACVG,QAAS,SAACC,GACRA,EAAEG,kBACFb,EAAMY,YACPL,SAEDC,EAACM,EAA0B,CACzBR,UAAW,gBAAAS,OAAgBf,EAAMW,OAAS,aAAe,UAKnE"}
1
+ {"version":3,"file":"frame.js","sources":["../../../../../src/select-box/parts/frame.tsx"],"sourcesContent":["import { useIdContext } from \"../id/provider\";\nimport { IdGenerator } from \"../lib\";\nimport { MdOutlineKeyboardArrowLeft } from \"react-icons/md\";\nimport { useOptionsWindow } from \"../options-window\";\n\ninterface IPropsSelectBoxFrame {\n open: () => void;\n close: () => void;\n children: React.ReactNode;\n no_icon?: boolean;\n}\n\nexport function SelectBoxFrame(props: IPropsSelectBoxFrame) {\n const id = useIdContext();\n const { state } = useOptionsWindow();\n\n return (\n <div\n id={IdGenerator.generateIdSelectBoxFrame(id)}\n className=\"relative w-full\"\n >\n <div\n onClick={(e) => {\n if (!state.isOpen) {\n props.open();\n }\n }}\n >\n {props.children}\n </div>\n {!props.no_icon && (\n <div\n className=\"absolute grid place-items-center h-full right-1 top-0\"\n onClick={(e) => {\n e.stopPropagation();\n if (state.isOpen) {\n props.close();\n } else {\n props.open();\n }\n }}\n >\n <MdOutlineKeyboardArrowLeft\n className={`duration-300 ${state.isOpen ? \"-rotate-90\" : \"\"}`}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["SelectBoxFrame","props","id","useIdContext","state","useOptionsWindow","_jsxs","IdGenerator","generateIdSelectBoxFrame","className","children","_jsx","onClick","e","isOpen","open","no_icon","stopPropagation","close","MdOutlineKeyboardArrowLeft","concat"],"mappings":"iUAYM,SAAUA,EAAeC,GAC7B,IAAMC,EAAKC,IACHC,EAAUC,UAElB,OACEC,EACE,MAAA,CAAAJ,GAAIK,EAAYC,yBAAyBN,GACzCO,UAAU,kBAAiBC,SAAA,CAE3BC,SACEC,QAAS,SAACC,GACHT,EAAMU,QACTb,EAAMc,MAET,EAAAL,SAEAT,EAAMS,YAEPT,EAAMe,SACNL,EAAA,MAAA,CACEF,UAAU,wDACVG,QAAS,SAACC,GACRA,EAAEI,kBACEb,EAAMU,OACRb,EAAMiB,QAENjB,EAAMc,QAETL,SAEDC,EAACQ,EACC,CAAAV,UAAW,gBAAgBW,OAAAhB,EAAMU,OAAS,aAAe,UAMrE"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e}from"react/jsx-runtime";import{useIdContext as r}from"../id/provider.js";import{IdGenerator as t}from"../lib/id-generator.js";function a(a){var l=r();return e("input",{id:t.generateIdSelectBoxInputArea(l),ref:a.inputRef,className:"border border-gray-300 px-2 py-1 w-full",type:"text",placeholder:""===a.selectedValue?"選択してください":a.selectedValue,value:a.isSelecting?a.searchText:a.selectedValue,onChange:function(e){e.preventDefault(),a.onChangeSearchText(e.target.value)}})}export{a as InputArea};
2
+ import{jsx as e}from"react/jsx-runtime";import{useState as n,useMemo as t,useEffect as o}from"react";import{useIdContext as r}from"../id/provider.js";import{IdGenerator as a}from"../lib/id-generator.js";import{useOptionsWindow as i}from"../options-window/context.js";function c(c){var u,s,l,d=r(),p=i(),f=p.state,v=p.actions,m=n(""),w=m[0],x=m[1],g=t((function(){return c.options.filter((function(e){return e.searchText?e.searchText.toLowerCase().includes(w.toLowerCase()):e.searchLabel?e.searchLabel.toLowerCase().includes(w.toLowerCase()):e.label.toLowerCase().includes(w.toLowerCase())}))}),[c.options,w]);o((function(){f.isOpen&&v.setSearchText(f.searchText)}),[f]),o((function(){var e=function(e){if(f.isOpen){var n=document.getElementById(a.generateIdSelectBoxFrame(c.id)),t=document.getElementById("ReactUI:SelectBox:OptionsArea"),o=e.target;o instanceof Node&&(null==n?void 0:n.contains(o))||o instanceof Node&&(null==t?void 0:t.contains(o))||(x(""),c.close())}};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[f]),o((function(){if(!f.isOpen){var e=document.getElementById(a.generateIdSelectBoxInputArea(c.id));if(e){var n=function(e){"ArrowDown"===e.key&&(e.preventDefault(),c.open())};return e.addEventListener("keydown",n),function(){e.removeEventListener("keydown",n)}}}}),[f,g]);var L=null!==(s=null===(u=c.options.find((function(e){return e.value===c.value})))||void 0===u?void 0:u.label)&&void 0!==s?s:"";return e("input",{id:a.generateIdSelectBoxInputArea(d),ref:c.inputRef,className:"px-2 py-1 ".concat(c.no_appearance?"no_appearance border-none focus:outline-none focus-visible:outline-none bg-transparent w-full":"border border-gray-300 w-full"),type:"text",placeholder:""===L?null!==(l=c.placeholder)&&void 0!==l?l:"選択してください":L,value:f.isOpen?f.searchText:L,onChange:function(e){e.preventDefault(),v.setSearchText(e.target.value)}})}export{c as InputArea};
3
3
  //# sourceMappingURL=input-area.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as r,Fragment as o,jsxs as i}from"react/jsx-runtime";import{createContext as n,useContext as t}from"react";import"./options-window/context.js";import{OptionsArea as e}from"./options-window/component.js";import{SelectOptionsWindowProvider as c}from"./options-window/provider.js";var m=n(!1),p=function(n){return d()?r(o,{children:n.children}):r(m.Provider,{value:!0,children:i(c,{children:[n.children,r(e,{})]})})},d=function(){return t(m)};export{p as SelectBoxProvider};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ var e="none",t="single string",n="single number",l="select",p=[{key:"string:eq",label:"=",type:"string",inputType:t},{key:"string:neq",label:"≠",type:"string",inputType:t},{key:"string:like",label:"like",type:"string",inputType:t},{key:"string:not_like",label:"not like",type:"string",inputType:t},{key:"string:is_null",label:"is empty",type:"string",inputType:e},{key:"string:is_not_null",label:"is not empty",type:"string",inputType:e},{key:"number:eq",label:"=",type:"number",inputType:n},{key:"number:neq",label:"≠",type:"number",inputType:n},{key:"number:gt",label:">",type:"number",inputType:n},{key:"number:lt",label:"<",type:"number",inputType:n},{key:"number:gte",label:"≧",type:"number",inputType:n},{key:"number:lte",label:"≦",type:"number",inputType:n},{key:"select:eq",label:"=",type:"select",inputType:l},{key:"select:neq",label:"≠",type:"select",inputType:l},{key:"select:is_null",label:"is empty",type:"select",inputType:e},{key:"select:is_not_null",label:"is not empty",type:"select",inputType:e}];export{p as DEFAULT_SEARCH_OPERATOR,e as NONE,l as SELECT,n as SINGLE_NUMBER,t as SINGLE_STRING};
2
+ //# sourceMappingURL=constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant.js","sources":["../../../../../src/share/search-operator/constant.ts"],"sourcesContent":["export const NONE = \"none\";\nexport const SINGLE_STRING = \"single string\";\nexport const SINGLE_NUMBER = \"single number\";\nexport const SINGLE_DATE = \"single date\";\nexport const RANGE_STRING = \"range string\";\nexport const RANGE_NUMBER = \"range number\";\nexport const RANGE_DATE = \"range date\";\nexport const SELECT = \"select\";\nexport const MULTI_SELECT = \"multi select\";\n\nexport const DEFAULT_SEARCH_OPERATOR = [\n {\n key: \"string:eq\",\n label: \"=\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:neq\",\n label: \"≠\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:like\",\n label: \"like\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:not_like\",\n label: \"not like\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n // { key: \"string:in\", label: \"in\", type: \"string\" },\n // { key: \"string:not_in\", label: \"not in\", type: \"string\" },\n {\n key: \"string:is_null\",\n label: \"is empty\",\n type: \"string\",\n inputType: NONE,\n },\n {\n key: \"string:is_not_null\",\n label: \"is not empty\",\n type: \"string\",\n inputType: NONE,\n },\n {\n key: \"number:eq\",\n label: \"=\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:neq\",\n label: \"≠\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:gt\",\n label: \">\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:lt\",\n label: \"<\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:gte\",\n label: \"≧\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:lte\",\n label: \"≦\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"select:eq\",\n label: \"=\",\n type: \"select\",\n inputType: SELECT,\n },\n {\n key: \"select:neq\",\n label: \"≠\",\n type: \"select\",\n inputType: SELECT,\n },\n {\n key: \"select:is_null\",\n label: \"is empty\",\n type: \"select\",\n inputType: NONE,\n },\n {\n key: \"select:is_not_null\",\n label: \"is not empty\",\n type: \"select\",\n inputType: NONE,\n },\n // { key: \"date:eq\", label: \"=\", type: \"date\" },\n // { key: \"date:neq\", label: \"≠\", type: \"date\" },\n // { key: \"date:gt\", label: \">\", type: \"date\" },\n // { key: \"date:lt\", label: \"<\", type: \"date\" },\n // { key: \"date:gte\", label: \">=\", type: \"date\" },\n // { key: \"date:lte\", label: \"<=\", type: \"date\" },\n // { key: \"date:is_null\", label: \"is null\", type: \"date\" },\n // { key: \"date:is_not_null\", label: \"is not null\", type: \"date\" },\n] as const;\n\nexport type T_DEFAULT_SEARCH_OPERATOR =\n (typeof DEFAULT_SEARCH_OPERATOR)[number];\n\nexport type T_SEARCH_INPUT_TYPE = T_DEFAULT_SEARCH_OPERATOR[\"inputType\"];\n"],"names":["NONE","SINGLE_STRING","SINGLE_NUMBER","SELECT","DEFAULT_SEARCH_OPERATOR","key","label","type","inputType"],"mappings":"AAAO,IAAMA,EAAO,OACPC,EAAgB,gBAChBC,EAAgB,gBAKhBC,EAAS,SAGTC,EAA0B,CACrC,CACEC,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWP,GAEb,CACEI,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWP,GAEb,CACEI,IAAK,cACLC,MAAO,OACPC,KAAM,SACNC,UAAWP,GAEb,CACEI,IAAK,kBACLC,MAAO,WACPC,KAAM,SACNC,UAAWP,GAIb,CACEI,IAAK,iBACLC,MAAO,WACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,qBACLC,MAAO,eACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWN,GAEb,CACEG,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWN,GAEb,CACEG,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWN,GAEb,CACEG,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWN,GAEb,CACEG,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWN,GAEb,CACEG,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWN,GAEb,CACEG,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWL,GAEb,CACEE,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWL,GAEb,CACEE,IAAK,iBACLC,MAAO,WACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,qBACLC,MAAO,eACPC,KAAM,SACNC,UAAWR"}
@@ -1,2 +1,2 @@
1
- import{useMemo as e}from"react";import{useEditActionContext as t}from"../edit/provider.js";import{useColumnsContext as o}from"../sheet/providers.js";import{useRangeActionContext as n}from"../range/provider.js";import{useTableIdGenerator as r}from"../id/provider.js";function i(i,d){var u,p,a=r(),l=n(),c=l.startSelectRange,m=l.moveSelectRange,s=l.endSelectRange,v=t().startEditing,f=a.extractCellIndexFromId(i),g=f[0],x=f[1],I=o()[x],b=d[I.key],D="select"===I.type?null===(p=null===(u=I.options)||void 0===u?void 0:u.find((function(e){return e.value===b})))||void 0===p?void 0:p.label:b,j=e((function(){return I.editable?D:I.render?I.render(b,d):D}),[I.editable,D,b,d]);return{type:!I.editable&&I.render?"component":I.type,component:j,onDoubleClick:function(e){e.preventDefault(),v()},onMouseDown:function(e){setTimeout((function(){c({rowIndex:g,colIndex:x});var e=function(t){t.preventDefault(),t.stopPropagation(),s(),document.removeEventListener("mouseup",e)};document.addEventListener("mouseup",e)}),0)},onMouseEnter:function(e){e.preventDefault(),e.stopPropagation(),m({rowIndex:g,colIndex:x})}}}export{i as useCell};
1
+ import{useMemo as e}from"react";import{useEditActionContext as t}from"../edit/provider.js";import{useColumnsContext as o}from"../sheet/providers.js";import{useRangeActionContext as n}from"../range/provider.js";import{useTableIdGenerator as r}from"../id/provider.js";function i(i,d){var u,p,l=r(),a=n(),c=a.startSelectRange,m=a.moveSelectRange,s=a.endSelectRange,v=t().startEditing,f=l.extractCellIndexFromId(i),g=f[0],I=f[1],x=o()[I],E=d[x.key],b="select"===x.type?null===(p=null===(u=x.options)||void 0===u?void 0:u.find((function(e){return e.value===E})))||void 0===p?void 0:p.label:E,y=e((function(){return x.editable?b:x.render?x.render(E,d):b}),[x.editable,b,E,d]);return{type:!x.editable&&x.render?"component":x.type,component:y,onDoubleClick:function(e){e.preventDefault(),v()},onMouseDown:function(e){document.getElementById(l.getEditorId())||setTimeout((function(){c({rowIndex:g,colIndex:I});var e=function(t){t.preventDefault(),t.stopPropagation(),s(),document.removeEventListener("mouseup",e)};document.addEventListener("mouseup",e)}),0)},onMouseEnter:function(e){e.preventDefault(),e.stopPropagation(),m({rowIndex:g,colIndex:I})}}}export{i as useCell};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const IdGenerator = useTableIdGenerator();\n const { startSelectRange, moveSelectRange, endSelectRange } =\n useRangeActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.extractCellIndexFromId(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n startEditing();\n };\n\n /**\n * onBlurよりも先に発火するため、onBlurでendEditingを呼ぶと\n * すぐにstartEditingが呼ばれてしまうため、setTimeoutで遅延させる\n * これにより、endEditingが先に呼ばれるようになる\n */\n const onMouseDown: React.MouseEventHandler<HTMLDivElement> = (e) => {\n setTimeout(() => {\n startSelectRange({ rowIndex, colIndex });\n\n const onMouseUp = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n endSelectRange();\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n document.addEventListener(\"mouseup\", onMouseUp);\n }, 0);\n };\n\n const onMouseEnter: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n moveSelectRange({ rowIndex, colIndex });\n };\n\n return {\n type,\n component,\n onDoubleClick,\n onMouseDown,\n onMouseEnter,\n };\n}\n"],"names":["useCell","id","row","IdGenerator","useTableIdGenerator","_c","useRangeActionContext","startSelectRange","moveSelectRange","endSelectRange","startEditing","useEditActionContext","_d","extractCellIndexFromId","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onDoubleClick","e","preventDefault","onMouseDown","setTimeout","onMouseUp","stopPropagation","document","removeEventListener","addEventListener","onMouseEnter"],"mappings":"0QAOgB,SAAAA,EAAQC,EAAYC,WAC5BC,EAAcC,IACdC,EACJC,IADMC,EAAgBF,EAAAE,iBAAEC,EAAeH,EAAAG,gBAAEC,EAAcJ,EAAAI,eAEjDC,EAAiBC,iBACnBC,EAAuBT,EAAYU,uBAAuBZ,GAAzDa,EAAQF,EAAA,GAAEG,OACXC,EAAMC,IAAoBF,GAC1BG,EAAQhB,EAAIc,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBhB,GAAOkB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOhB,IAoChC,MAAO,CACLmB,MAlCCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAmChDM,UAASA,EACTI,cAlC6D,SAACC,GAC9DA,EAAEC,iBACFvB,GACF,EAgCEwB,YAzB2D,SAACF,GAC5DG,YAAW,WACT5B,EAAiB,CAAEO,SAAQA,EAAEC,SAAQA,IAErC,IAAMqB,EAAY,SAACJ,GACjBA,EAAEC,iBACFD,EAAEK,kBACF5B,IACA6B,SAASC,oBAAoB,UAAWH,EAC1C,EAEAE,SAASE,iBAAiB,UAAWJ,EACtC,GAAE,EACL,EAaEK,aAX4D,SAACT,GAC7DA,EAAEC,iBACFD,EAAEK,kBACF7B,EAAgB,CAAEM,SAAQA,EAAEC,SAAQA,GACtC,EASF"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const IdGenerator = useTableIdGenerator();\n const { startSelectRange, moveSelectRange, endSelectRange } =\n useRangeActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.extractCellIndexFromId(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n startEditing();\n };\n\n /**\n * onBlurよりも先に発火するため、onBlurでendEditingを呼ぶと\n * すぐにstartEditingが呼ばれてしまうため、setTimeoutで遅延させる\n * これにより、endEditingが先に呼ばれるようになる\n */\n const onMouseDown: React.MouseEventHandler<HTMLDivElement> = (e) => {\n const element = document.getElementById(IdGenerator.getEditorId());\n\n if (!!element) {\n return;\n }\n\n setTimeout(() => {\n startSelectRange({ rowIndex, colIndex });\n\n const onMouseUp = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n endSelectRange();\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n document.addEventListener(\"mouseup\", onMouseUp);\n }, 0);\n };\n\n const onMouseEnter: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n moveSelectRange({ rowIndex, colIndex });\n };\n\n return {\n type,\n component,\n onDoubleClick,\n onMouseDown,\n onMouseEnter,\n };\n}\n"],"names":["useCell","id","row","IdGenerator","useTableIdGenerator","_c","useRangeActionContext","startSelectRange","moveSelectRange","endSelectRange","startEditing","useEditActionContext","_d","extractCellIndexFromId","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onDoubleClick","e","preventDefault","onMouseDown","document","getElementById","getEditorId","setTimeout","onMouseUp","stopPropagation","removeEventListener","addEventListener","onMouseEnter"],"mappings":"0QAOgB,SAAAA,EAAQC,EAAYC,WAC5BC,EAAcC,IACdC,EACJC,IADMC,EAAgBF,EAAAE,iBAAEC,EAAeH,EAAAG,gBAAEC,EAAcJ,EAAAI,eAEjDC,EAAiBC,iBACnBC,EAAuBT,EAAYU,uBAAuBZ,GAAzDa,EAAQF,EAAA,GAAEG,OACXC,EAAMC,IAAoBF,GAC1BG,EAAQhB,EAAIc,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBhB,GAAOkB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOhB,IA0ChC,MAAO,CACLmB,MAxCCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAyChDM,UAASA,EACTI,cAxC6D,SAACC,GAC9DA,EAAEC,iBACFvB,GACF,EAsCEwB,YA/B2D,SAACF,GAC5CG,SAASC,eAAejC,EAAYkC,gBAMpDC,YAAW,WACT/B,EAAiB,CAAEO,SAAQA,EAAEC,SAAQA,IAErC,IAAMwB,EAAY,SAACP,GACjBA,EAAEC,iBACFD,EAAEQ,kBACF/B,IACA0B,SAASM,oBAAoB,UAAWF,EAC1C,EAEAJ,SAASO,iBAAiB,UAAWH,EACtC,GAAE,EACL,EAaEI,aAX4D,SAACX,GAC7DA,EAAEC,iBACFD,EAAEQ,kBACFhC,EAAgB,CAAEM,SAAQA,EAAEC,SAAQA,GACtC,EASF"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e,Fragment as n}from"react/jsx-runtime";import{memo as t,useMemo as c,useRef as r,useEffect as o}from"react";import{useCheckboxContext as i,useCheckboxStatusContext as u}from"./provider.js";var a=t((function(t){var r=i(),o=u().checkboxStatusState,a=t.row,d=c((function(){return o.checkedRecords.map((function(e){return e.id}))}),[o.checkedRecords]);return r?e("div",{className:"flex justify-center gap-1 w-full items-center",children:e("input",{type:"checkbox",checked:d.includes(a.id),onChange:function(e){e.preventDefault(),e.target.checked?r.onChecked(a):r.onUnchecked(a)},onClick:function(e){e.preventDefault(),e.stopPropagation()}})}):e(n,{})})),d=t((function(t){var a=r(null),d=i(),f=u(),h=f.checkboxStatusState,l=f.existChecked,s=f.indeterminate,p=c((function(){return h.checkedRecords.map((function(e){return e.id}))}),[h.checkedRecords]),k=c((function(){return t.rows.filter((function(e){return!p.includes(e.id)}))}),[t.rows,p]);return o((function(){null!=a.current&&(a.current.indeterminate=!0===s)}),[s]),d?e("div",{className:"grid place-items-center w-full px-1",children:e("input",{ref:a,type:"checkbox",checked:l,onChange:function(e){e.preventDefault(),e.target.checked?k.forEach((function(e){d.onChecked(e)})):h.checkedRecords.forEach((function(e){d.onUnchecked(e)}))},onClick:function(e){e.preventDefault(),e.stopPropagation()}})}):e(n,{})}));export{d as AllCheckbox,a as Checkbox};
2
+ import{jsx as e,Fragment as n}from"react/jsx-runtime";import{memo as c,useMemo as t,useRef as r,useEffect as o}from"react";import{useCheckboxContext as i,useCheckboxStatusContext as u}from"./provider.js";var d=c((function(c){var r=i(),o=u().checkboxStatusState,d=c.row,a=t((function(){return o.checkedRecords.map((function(e){return e.id}))}),[o.checkedRecords]);return r?e("div",{className:"grid place-items-center w-full h-full px-1",children:e("input",{type:"checkbox",checked:a.includes(d.id),onChange:function(e){e.preventDefault(),e.target.checked?r.onChecked(d):r.onUnchecked(d)},onClick:function(e){e.preventDefault(),e.stopPropagation()}})}):e(n,{})})),a=c((function(c){var d=r(null),a=i(),f=u(),l=f.checkboxStatusState,h=f.existChecked,p=f.indeterminate,s=t((function(){return l.checkedRecords.map((function(e){return e.id}))}),[l.checkedRecords]),k=t((function(){return c.rows.filter((function(e){return!s.includes(e.id)}))}),[c.rows,s]);return o((function(){null!=d.current&&(d.current.indeterminate=!0===p)}),[p]),a?e("div",{className:"grid place-items-center w-full h-full px-1",children:e("input",{ref:d,type:"checkbox",checked:h,onChange:function(e){e.preventDefault(),e.target.checked?k.forEach((function(e){a.onChecked(e)})):l.checkedRecords.forEach((function(e){a.onUnchecked(e)}))},onClick:function(e){e.preventDefault(),e.stopPropagation()}})}):e(n,{})}));export{a as AllCheckbox,d as Checkbox};
3
3
  //# sourceMappingURL=components.js.map
@@ -0,0 +1,2 @@
1
+ import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{createContext as t,useContext as e}from"react";var i=t(null),n=t(null),o=t(null);function u(){var r=e(i);if(!r)throw new Error("useFilterState must be used within a FilterProvider");return r}function l(){var r=e(n);if(!r)throw new Error("useFilterAction must be used within a FilterProvider");return r}function s(){var r=e(o);if(!r)throw new Error("useFilterFunctions must be used within a FilterProvider");return r}function a(){return r(r(r({},u()),l()),s())}export{n as FilterActionContext,o as FilterFunctionContext,i as FilterStateContext,a as useFilter,l as useFilterAction,s as useFilterFunctions,u as useFilterState};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../../../src/table/filter-v2/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport {\n TFilterActionContext,\n TFilterFunctionContext,\n TFilterStateContext,\n} from \"./type\";\n\nexport const FilterStateContext = createContext<TFilterStateContext | null>(\n null\n);\nexport const FilterActionContext = createContext<TFilterActionContext | null>(\n null\n);\nexport const FilterFunctionContext =\n createContext<TFilterFunctionContext | null>(null);\n\nexport function useFilterState() {\n const context = useContext(FilterStateContext);\n\n if (!context) {\n throw new Error(\"useFilterState must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilterAction() {\n const context = useContext(FilterActionContext);\n\n if (!context) {\n throw new Error(\"useFilterAction must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilterFunctions() {\n const context = useContext(FilterFunctionContext);\n\n if (!context) {\n throw new Error(\"useFilterFunctions must be used within a FilterProvider\");\n }\n\n return context;\n}\n\nexport function useFilter() {\n return { ...useFilterState(), ...useFilterAction(), ...useFilterFunctions() };\n}\n"],"names":["FilterStateContext","createContext","FilterActionContext","FilterFunctionContext","useFilterState","context","useContext","Error","useFilterAction","useFilterFunctions","useFilter","__assign"],"mappings":"8HAOaA,EAAqBC,EAChC,MAEWC,EAAsBD,EACjC,MAEWE,EACXF,EAA6C,eAE/BG,IACd,IAAMC,EAAUC,EAAWN,GAE3B,IAAKK,EACH,MAAM,IAAIE,MAAM,uDAGlB,OAAOF,CACT,UAEgBG,IACd,IAAMH,EAAUC,EAAWJ,GAE3B,IAAKG,EACH,MAAM,IAAIE,MAAM,wDAGlB,OAAOF,CACT,UAEgBI,IACd,IAAMJ,EAAUC,EAAWH,GAE3B,IAAKE,EACH,MAAM,IAAIE,MAAM,2DAGlB,OAAOF,CACT,UAEgBK,IACd,OAAYC,EAAAA,EAAAA,EAAA,GAAAP,KAAqBI,KAAsBC,IACzD"}
@@ -0,0 +1,2 @@
1
+ import{useReducer as e,useMemo as t}from"react";import{filterReducer as r}from"./reducer.js";var n=function(n){var o=e(r,{conditions:n}),i=o[0],u=o[1],a=t((function(){return{addFilter:function(e){u({type:"add",payload:{condition:e}})},removeFilter:function(e){u({type:"remove",payload:{index:e}})},clearFilter:function(){u({type:"clear"})}}}),[i.conditions]),s=t((function(){return{filter:function(e){return e.filter((function(e){return i.conditions.every((function(t){return function(e,t,r){switch(e.operator.type){case"number":if("single number"===e.operator.inputType){if(r.type!==e.operator.inputType)throw new Error("input type is not match");var n=r.payload.value;switch(e.operator.key){case"number:eq":return t===n;case"number:gt":return t>n;case"number:gte":return t>=n;case"number:lt":return t<n;case"number:lte":return t<=n;case"number:neq":return t!==n}}case"string":switch(e.operator.inputType){case"none":if(r.type!==e.operator.inputType)throw new Error("input type is not match");switch(e.operator.key){case"string:is_not_null":return null!=t&&""!==t;case"string:is_null":return null==t||""===t}case"single string":if(r.type!==e.operator.inputType)throw new Error("input type is not match");var o=r.payload.value;switch(e.operator.key){case"string:eq":return t===o;case"string:like":return t.includes(o);case"string:neq":return t!==o;case"string:not_like":return!t.includes(o)}}case"select":switch(e.operator.inputType){case"select":if(r.type!==e.operator.inputType)throw new Error("input type is not match");o=r.payload.value;switch(e.operator.key){case"select:eq":return t===o;case"select:neq":return t!==o}case"none":if(r.type!==e.operator.inputType)throw new Error("input type is not match");switch(e.operator.key){case"select:is_null":return null==t||""===t;case"select:is_not_null":return null!=t||""!==t}}}}(t,e[t.target.key],t.input)}))}))}}}),[i.conditions]);return{state:i,actions:a,functions:s}};export{n as useFilterHook};
2
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sources":["../../../../../src/table/filter-v2/hook.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TFilterHook } from \"./type\";\nimport { filterReducer } from \"./reducer\";\nimport { Condition } from \"../../search-bar\";\nimport { DataObject, DataRecord } from \"../table/type\";\nimport { SearchInput } from \"../../search-bar/condition-search-bar/condition-input-management/type\";\n\nexport const useFilterHook: TFilterHook = (initialConditions) => {\n const [state, dispatch] = useReducer(filterReducer, {\n conditions: initialConditions,\n });\n\n const actions = useMemo(\n () => ({\n addFilter: (condition: Condition) => {\n dispatch({ type: \"add\", payload: { condition } });\n },\n removeFilter: (index: number) => {\n dispatch({ type: \"remove\", payload: { index } });\n },\n clearFilter: () => {\n dispatch({ type: \"clear\" });\n },\n }),\n [state.conditions]\n );\n\n const functions = useMemo(\n () => ({\n filter: <T extends DataRecord>(rows: DataObject<T>[]) => {\n return rows.filter((row) => {\n return state.conditions.every((condition) => {\n const value = row[condition.target.key];\n return isMatchCondition(condition, value, condition.input);\n });\n });\n },\n }),\n [state.conditions]\n );\n\n return {\n state,\n actions,\n functions,\n };\n};\n\nfunction isMatchCondition(\n condition: Condition,\n targetValue: any,\n input: SearchInput\n): boolean {\n switch (condition.operator.type) {\n // case \"date\":\n // switch (condition.operator.key) {\n // case \"date:eq\":\n // return false;\n // case \"date:gt\":\n // return false;\n // case \"date:gte\":\n // return false;\n // case \"date:lt\":\n // return false;\n // case \"date:lte\":\n // return false;\n // case \"date:neq\":\n // return false;\n // case \"date:is_not_null\":\n // return false;\n // case \"date:is_null\":\n // return false;\n // }\n case \"number\":\n switch (condition.operator.inputType) {\n case \"single number\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const numValue = input.payload.value;\n\n switch (condition.operator.key) {\n case \"number:eq\":\n return targetValue === numValue;\n case \"number:gt\":\n return targetValue > numValue;\n case \"number:gte\":\n return targetValue >= numValue;\n case \"number:lt\":\n return targetValue < numValue;\n case \"number:lte\":\n return targetValue <= numValue;\n case \"number:neq\":\n return targetValue !== numValue;\n }\n }\n\n case \"string\":\n switch (condition.operator.inputType) {\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"string:is_not_null\":\n return (\n targetValue !== null &&\n targetValue !== undefined &&\n targetValue !== \"\"\n );\n case \"string:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n }\n case \"single string\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const value = input.payload.value;\n\n switch (condition.operator.key) {\n case \"string:eq\":\n return targetValue === value;\n case \"string:like\":\n return targetValue.includes(value);\n case \"string:neq\":\n return targetValue !== value;\n case \"string:not_like\":\n return !targetValue.includes(value);\n }\n }\n\n case \"select\":\n switch (condition.operator.inputType) {\n case \"select\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n const value = input.payload.value;\n\n switch (condition.operator.key) {\n case \"select:eq\":\n return targetValue === value;\n case \"select:neq\":\n return targetValue !== value;\n }\n case \"none\":\n if (input.type !== condition.operator.inputType) {\n throw new Error(\"input type is not match\");\n }\n\n switch (condition.operator.key) {\n case \"select:is_null\":\n return (\n targetValue === null ||\n targetValue === undefined ||\n targetValue === \"\"\n );\n case \"select:is_not_null\":\n return (\n (targetValue !== null && targetValue !== undefined) ||\n targetValue !== \"\"\n );\n }\n }\n }\n}\n"],"names":["useFilterHook","initialConditions","_a","useReducer","filterReducer","conditions","state","dispatch","actions","useMemo","addFilter","condition","type","payload","removeFilter","index","clearFilter","functions","filter","rows","row","every","targetValue","input","operator","inputType","Error","numValue","value","key","includes","isMatchCondition","target"],"mappings":"6FAOO,IAAMA,EAA6B,SAACC,GACnC,IAAAC,EAAoBC,EAAWC,EAAe,CAClDC,WAAYJ,IADPK,EAAKJ,EAAA,GAAEK,OAIRC,EAAUC,GACd,WAAM,MAAC,CACLC,UAAW,SAACC,GACVJ,EAAS,CAAEK,KAAM,MAAOC,QAAS,CAAEF,UAASA,IAC7C,EACDG,aAAc,SAACC,GACbR,EAAS,CAAEK,KAAM,SAAUC,QAAS,CAAEE,MAAKA,IAC5C,EACDC,YAAa,WACXT,EAAS,CAAEK,KAAM,SAClB,KAEH,CAACN,EAAMD,aAGHY,EAAYR,GAChB,WAAM,MAAC,CACLS,OAAQ,SAAuBC,GAC7B,OAAOA,EAAKD,QAAO,SAACE,GAClB,OAAOd,EAAMD,WAAWgB,OAAM,SAACV,GAE7B,OAeZ,SACEA,EACAW,EACAC,GAEA,OAAQZ,EAAUa,SAASZ,MAoBzB,IAAK,SACH,GACO,kBADCD,EAAUa,SAASC,UACzB,CACE,GAAIF,EAAMX,OAASD,EAAUa,SAASC,UACpC,MAAM,IAAIC,MAAM,2BAGlB,IAAMC,EAAWJ,EAAMV,QAAQe,MAE/B,OAAQjB,EAAUa,SAASK,KACzB,IAAK,YACH,OAAOP,IAAgBK,EACzB,IAAK,YACH,OAAOL,EAAcK,EACvB,IAAK,aACH,OAAOL,GAAeK,EACxB,IAAK,YACH,OAAOL,EAAcK,EACvB,IAAK,aACH,OAAOL,GAAeK,EACxB,IAAK,aACH,OAAOL,IAAgBK,EAC1B,CAGP,IAAK,SACH,OAAQhB,EAAUa,SAASC,WACzB,IAAK,OACH,GAAIF,EAAMX,OAASD,EAAUa,SAASC,UACpC,MAAM,IAAIC,MAAM,2BAGlB,OAAQf,EAAUa,SAASK,KACzB,IAAK,qBACH,OACEP,SAEgB,KAAhBA,EAEJ,IAAK,iBACH,OACEA,SAEgB,KAAhBA,EAGR,IAAK,gBACH,GAAIC,EAAMX,OAASD,EAAUa,SAASC,UACpC,MAAM,IAAIC,MAAM,2BAGlB,IAAME,EAAQL,EAAMV,QAAQe,MAE5B,OAAQjB,EAAUa,SAASK,KACzB,IAAK,YACH,OAAOP,IAAgBM,EACzB,IAAK,cACH,OAAON,EAAYQ,SAASF,GAC9B,IAAK,aACH,OAAON,IAAgBM,EACzB,IAAK,kBACH,OAAQN,EAAYQ,SAASF,IAIvC,IAAK,SACH,OAAQjB,EAAUa,SAASC,WACzB,IAAK,SACH,GAAIF,EAAMX,OAASD,EAAUa,SAASC,UACpC,MAAM,IAAIC,MAAM,2BAGZE,EAAQL,EAAMV,QAAQe,MAE5B,OAAQjB,EAAUa,SAASK,KACzB,IAAK,YACH,OAAOP,IAAgBM,EACzB,IAAK,aACH,OAAON,IAAgBM,EAE7B,IAAK,OACH,GAAIL,EAAMX,OAASD,EAAUa,SAASC,UACpC,MAAM,IAAIC,MAAM,2BAGlB,OAAQf,EAAUa,SAASK,KACzB,IAAK,iBACH,OACEP,SAEgB,KAAhBA,EAEJ,IAAK,qBACH,OACE,MAACA,GACe,KAAhBA,IAKhB,CA5ImBS,CAAiBpB,EADVS,EAAIT,EAAUqB,OAAOH,KACOlB,EAAUY,MACtD,GACF,GACD,KAEH,CAACjB,EAAMD,aAGT,MAAO,CACLC,MAAKA,EACLE,QAAOA,EACPS,UAASA,EAEb"}
@@ -0,0 +1,2 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{FilterStateContext as i,FilterActionContext as o,FilterFunctionContext as e}from"./context.js";import{useFilterHook as t}from"./hook.js";function n(n){var c=t(n.initialConditions),a=c.state,d=c.actions,l=c.functions;return r(i.Provider,{value:a,children:r(o.Provider,{value:d,children:r(e.Provider,{value:l,children:n.children})})})}export{n as FilterProvider};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/table/filter-v2/provider.tsx"],"sourcesContent":["import { Condition } from \"../../search-bar\";\nimport {\n FilterActionContext,\n FilterFunctionContext,\n FilterStateContext,\n} from \"./context\";\nimport { useFilterHook } from \"./hook\";\n\nexport function FilterProvider(props: {\n children: React.ReactNode;\n initialConditions: Condition[];\n}) {\n const { state, actions, functions } = useFilterHook(props.initialConditions);\n\n return (\n <FilterStateContext.Provider value={state}>\n <FilterActionContext.Provider value={actions}>\n <FilterFunctionContext.Provider value={functions}>\n {props.children}\n </FilterFunctionContext.Provider>\n </FilterActionContext.Provider>\n </FilterStateContext.Provider>\n );\n}\n"],"names":["FilterProvider","props","_a","useFilterHook","initialConditions","state","actions","functions","_jsx","FilterStateContext","Provider","value","FilterActionContext","children","FilterFunctionContext"],"mappings":"wLAQM,SAAUA,EAAeC,GAIvB,IAAAC,EAAgCC,EAAcF,EAAMG,mBAAlDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,cAExB,OACEC,EAACC,EAAmBC,SAAS,CAAAC,MAAON,WAClCG,EAACI,EAAoBF,UAASC,MAAOL,EAAOO,SAC1CL,EAACM,EAAsBJ,SAAQ,CAACC,MAAOJ,EACpCM,SAAAZ,EAAMY,cAKjB"}
@@ -0,0 +1,2 @@
1
+ import{__spreadArray as n}from"../../../node_modules/tslib/tslib.es6.js";var o=function(o,i){switch(i.type){case"add":return{conditions:n(n([],o.conditions,!0),[i.payload.condition],!1)};case"remove":return{conditions:o.conditions.filter((function(n,o){return o!==i.payload.index}))};case"clear":return{conditions:[]}}};export{o as filterReducer};
2
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sources":["../../../../../src/table/filter-v2/reducer.ts"],"sourcesContent":["import { TFilterReducer } from \"./type\";\n\nexport const filterReducer: TFilterReducer = (state, action) => {\n switch (action.type) {\n case \"add\":\n return {\n conditions: [...state.conditions, action.payload.condition],\n };\n case \"remove\":\n return {\n conditions: state.conditions.filter(\n (_, index) => index !== action.payload.index\n ),\n };\n case \"clear\":\n return {\n conditions: [],\n };\n }\n};\n"],"names":["filterReducer","state","action","type","conditions","__spreadArray","payload","condition","filter","_","index"],"mappings":"yEAEa,IAAAA,EAAgC,SAACC,EAAOC,GACnD,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,WAAUC,EAAAA,EAAA,GAAMJ,EAAMG,YAAU,GAAA,CAAEF,EAAOI,QAAQC,YAAU,IAE/D,IAAK,SACH,MAAO,CACLH,WAAYH,EAAMG,WAAWI,QAC3B,SAACC,EAAGC,GAAU,OAAAA,IAAUR,EAAOI,QAAQI,KAAzB,KAGpB,IAAK,QACH,MAAO,CACLN,WAAY,IAGpB"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsxs as e,jsx as t,Fragment as r}from"react/jsx-runtime";import{useRef as o,useState as n,useEffect as l}from"react";import{useColumnsWidthState as c}from"../header/columns-width/context.js";import"../../../node_modules/tslib/tslib.es6.js";import{useScrollXPosition as i}from"../header/x-scroll-position/context.js";function s(s){var u=i(),a=u.x,d=u.setScrollX,m=o(null),v=n({scrollX:0,scrollY:0,barYHeight:0,barXWidth:0}),h=v[0],f=v[1],b=c();return l((function(){var e=function(){if(m.current){d(m.current.scrollLeft);var e=m.current.scrollLeft/m.current.scrollWidth*100,t=m.current.scrollTop/m.current.scrollHeight*100,r=m.current.clientHeight/m.current.scrollHeight*100,o=m.current.clientWidth/m.current.scrollWidth*100;f({scrollX:e>100?100:e,scrollY:t>100?100:t,barYHeight:r>100?100:r,barXWidth:o>100?100:o})}};return e(),m.current&&m.current.addEventListener("scroll",e),function(){m.current&&m.current.removeEventListener("scroll",e)}}),[d,b]),l((function(){m.current&&(m.current.scrollLeft=a)}),[a]),e("div",{className:"relative",style:{maxHeight:s.maxHeight,maxWidth:s.maxWidth},children:[t("div",{ref:m,id:s.id,className:"relative w-full h-full border border-gray-200 bg-white rounded-b-md overflow-auto ".concat(s.displayScroll?"":"no_scrollbar"),style:{maxHeight:s.maxHeight,maxWidth:s.maxWidth},children:s.children}),h.barYHeight<100&&e(r,{children:[t("div",{className:"absolute top-0 right-0 h-full w-2 bg-slate-200 opacity-30 pointer-events-none"}),t("div",{className:"absolute right-0 w-2 bg-slate-500 rounded-full cursor-grab active:cursor-grabbing",style:{top:"".concat(h.scrollY,"%"),height:"".concat(h.barYHeight,"%")},onMouseDown:function(e){var t,r=e.clientY,o=(null===(t=m.current)||void 0===t?void 0:t.scrollTop)||0,n=function(e){if(m.current){var t=(e.clientY-r)/h.barYHeight*100;m.current.scrollTop=o+t}},l=function(){document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",l)};document.addEventListener("mousemove",n),document.addEventListener("mouseup",l)}})]}),h.barXWidth<100&&e(r,{children:[t("div",{className:"absolute bottom-0 left-0 w-full h-2 bg-slate-200 opacity-30 pointer-events-none"}),t("div",{className:"absolute bottom-0 h-2 bg-slate-500 rounded-full cursor-grab active:cursor-grabbing",style:{left:"".concat(h.scrollX,"%"),width:"".concat(h.barXWidth,"%")},onMouseDown:function(e){var t;e.preventDefault(),e.stopPropagation();var r=e.clientX,o=(null===(t=m.current)||void 0===t?void 0:t.scrollLeft)||0,n=function(t){if(m.current){e.preventDefault(),e.stopPropagation();var n=(t.clientX-r)/h.barXWidth*100;m.current.scrollLeft=o+n}},l=function(){document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",l)};document.addEventListener("mousemove",n),document.addEventListener("mouseup",l)}})]})]})}export{s as Frame};
3
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{__assign as r}from"../../../../node_modules/tslib/tslib.es6.js";import{createContext as t,useContext as n}from"react";var o=t(null),u=t(null);function i(){var r=n(o);if(null===r)throw new Error("useColumnsWidthState must be used within a ColumnsWidthProvider");return r}function e(){var r=n(u);if(null===r)throw new Error("useColumnsWidthAction must be used within a ColumnsWidthProvider");return r}function l(){return r(r({},i()),e())}export{u as ColumnsWidthActionContext,o as ColumnsWidthStateContext,l as useColumnsWidth,e as useColumnsWidthAction,i as useColumnsWidthState};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sources":["../../../../../../src/table/header/columns-width/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TColumnsWidthActionContext, TColumnsWidthStateContext } from \"./type\";\n\nexport const ColumnsWidthStateContext =\n createContext<TColumnsWidthStateContext | null>(null);\n\nexport const ColumnsWidthActionContext =\n createContext<TColumnsWidthActionContext | null>(null);\n\nexport function useColumnsWidthState() {\n const context = useContext(ColumnsWidthStateContext);\n\n if (context === null) {\n throw new Error(\n \"useColumnsWidthState must be used within a ColumnsWidthProvider\"\n );\n }\n\n return context;\n}\n\nexport function useColumnsWidthAction() {\n const context = useContext(ColumnsWidthActionContext);\n\n if (context === null) {\n throw new Error(\n \"useColumnsWidthAction must be used within a ColumnsWidthProvider\"\n );\n }\n\n return context;\n}\n\nexport function useColumnsWidth() {\n return { ...useColumnsWidthState(), ...useColumnsWidthAction() };\n}\n"],"names":["ColumnsWidthStateContext","createContext","ColumnsWidthActionContext","useColumnsWidthState","context","useContext","Error","useColumnsWidthAction","useColumnsWidth","__assign"],"mappings":"iIAGaA,EACXC,EAAgD,MAErCC,EACXD,EAAiD,eAEnCE,IACd,IAAMC,EAAUC,EAAWL,GAE3B,GAAgB,OAAZI,EACF,MAAM,IAAIE,MACR,mEAIJ,OAAOF,CACT,UAEgBG,IACd,IAAMH,EAAUC,EAAWH,GAE3B,GAAgB,OAAZE,EACF,MAAM,IAAIE,MACR,oEAIJ,OAAOF,CACT,UAEgBI,IACd,OAAAC,EAAAA,EAAA,CAAA,EAAYN,KAA2BI,IACzC"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as r}from"react/jsx-runtime";import{DEFAULT_COL_WIDTH as t,DEFAULT_MIN_COL_WIDTH as i}from"../../constant.js";import{ColumnsWidthStateContext as e,ColumnsWidthActionContext as n}from"./context.js";import{useColumnsWidthReducer as o}from"./reducer.js";function c(t){var i=o(a(t.initialState)),c=i.state,d=i.action;return r(e.Provider,{value:c,children:r(n.Provider,{value:d,children:t.children})})}var a=function(r){return r.reduce((function(r,e){return r[e.key]={colWidth:e.initialWidth||t,minWidth:e.minWidth||i},r}),{})};export{c as ColumnsWidthProvider};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{__assign as t}from"../../../../node_modules/tslib/tslib.es6.js";import{useReducer as n,useMemo as o}from"react";import{DEFAULT_COL_WIDTH as e,DEFAULT_MIN_COL_WIDTH as a}from"../../constant.js";var i=function(n,o){var e,a;switch(o.type){case"init":return o.payload.columnsWidth;case"setMinWidth":return t(t({},n),((e={})[o.payload.key]=t(t({},n[o.payload.key]),{minWidth:o.payload.minWidth}),e));case"set":return t(t({},n),((a={})[o.payload.key]=t(t({},n[o.payload.key]),{colWidth:o.payload.colWidth}),a));default:return n}},r=function(t){var r=n(i,t),d=r[0],c=r[1];return{state:o((function(){return{getColumnWidth:function(t){var n=d[t];return n?n.colWidth:(console.warn("Column width state not found: ".concat(t)),e)},getColumnMinWidth:function(t){var n=d[t];return n?n.minWidth:(console.warn("Column width state not found: ".concat(t)),a)}}}),[d]),action:o((function(){return{setColWidth:function(t,n){c({type:"set",payload:{key:t,colWidth:n}})}}}),[])}};export{i as columnsWidthReducer,r as useColumnsWidthReducer};
2
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sources":["../../../../../../src/table/header/columns-width/reducer.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\nimport { TColumnsWidthHook, TColumnsWidthReducer } from \"./type\";\nimport { DEFAULT_COL_WIDTH, DEFAULT_MIN_COL_WIDTH } from \"../../constant\";\n\nexport const columnsWidthReducer: TColumnsWidthReducer = (state, action) => {\n switch (action.type) {\n case \"init\":\n return action.payload.columnsWidth;\n case \"setMinWidth\":\n return {\n ...state,\n [action.payload.key]: {\n ...state[action.payload.key],\n minWidth: action.payload.minWidth,\n },\n };\n case \"set\":\n return {\n ...state,\n [action.payload.key]: {\n ...state[action.payload.key],\n colWidth: action.payload.colWidth,\n },\n };\n default:\n return state;\n }\n};\n\nexport const useColumnsWidthReducer: TColumnsWidthHook = (initialState) => {\n const [state, dispatch] = useReducer(columnsWidthReducer, initialState);\n\n const stateActions = useMemo(\n () => ({\n getColumnWidth: (key: string) => {\n const s = state[key];\n\n if (!s) {\n console.warn(`Column width state not found: ${key}`);\n return DEFAULT_COL_WIDTH;\n }\n\n return s.colWidth;\n },\n getColumnMinWidth: (key: string) => {\n const s = state[key];\n\n if (!s) {\n console.warn(`Column width state not found: ${key}`);\n return DEFAULT_MIN_COL_WIDTH;\n }\n\n return s.minWidth;\n },\n }),\n [state]\n );\n\n const action = useMemo(\n () => ({\n setColWidth: (key: string, colWidth: number) => {\n dispatch({ type: \"set\", payload: { key, colWidth } });\n },\n }),\n []\n );\n\n return { state: stateActions, action };\n};\n"],"names":["columnsWidthReducer","state","action","type","payload","columnsWidth","__assign","_a","key","minWidth","_b","colWidth","useColumnsWidthReducer","initialState","useReducer","dispatch","useMemo","getColumnWidth","s","console","warn","DEFAULT_COL_WIDTH","getColumnMinWidth","DEFAULT_MIN_COL_WIDTH","setColWidth"],"mappings":"wMAIa,IAAAA,EAA4C,SAACC,EAAOC,WAC/D,OAAQA,EAAOC,MACb,IAAK,OACH,OAAOD,EAAOE,QAAQC,aACxB,IAAK,cACH,OACKC,EAAAA,EAAA,GAAAL,KACFM,EAAA,IAAAL,EAAOE,QAAQI,KAAGF,EAAAA,EAAA,CAAA,EACdL,EAAMC,EAAOE,QAAQI,MAAI,CAC5BC,SAAUP,EAAOE,QAAQK,WAE3BF,IACJ,IAAK,MACH,OACKD,EAAAA,EAAA,GAAAL,KACFS,EAAA,IAAAR,EAAOE,QAAQI,KAAGF,EAAAA,EAAA,CAAA,EACdL,EAAMC,EAAOE,QAAQI,MAAI,CAC5BG,SAAUT,EAAOE,QAAQO,WAE3BD,IACJ,QACE,OAAOT,EAEb,EAEaW,EAA4C,SAACC,GAClD,IAAAN,EAAoBO,EAAWd,EAAqBa,GAAnDZ,EAAKM,EAAA,GAAEQ,OAqCd,MAAO,CAAEd,MAnCYe,GACnB,WAAM,MAAC,CACLC,eAAgB,SAACT,GACf,IAAMU,EAAIjB,EAAMO,GAEhB,OAAKU,EAKEA,EAAEP,UAJPQ,QAAQC,KAAK,wCAAiCZ,IACvCa,EAIV,EACDC,kBAAmB,SAACd,GAClB,IAAMU,EAAIjB,EAAMO,GAEhB,OAAKU,EAKEA,EAAET,UAJPU,QAAQC,KAAK,wCAAiCZ,IACvCe,EAIV,EACD,GACF,CAACtB,IAY2BC,OATfc,GACb,WAAM,MAAC,CACLQ,YAAa,SAAChB,EAAaG,GACzBI,EAAS,CAAEZ,KAAM,MAAOC,QAAS,CAAEI,MAAKG,aACzC,EAHG,GAKN,IAIJ"}
@@ -0,0 +1,2 @@
1
+ import{useState as e,useCallback as t,useRef as n,useEffect as o}from"react";import{useColumnsWidth as r}from"./columns-width/context.js";import"react/jsx-runtime";import"../../../node_modules/tslib/tslib.es6.js";import{useScrollXPosition as u}from"./x-scroll-position/context.js";function c(n){var o=r(),u=o.getColumnWidth,c=o.getColumnMinWidth,s=o.setColWidth,i=e(!1),l=i[0],m=i[1],d=u(n),v=c(n);return{onMouseDownResizeWidth:t((function(e){if(!l){var t=e.clientX,o=d;document.body.style.cursor="col-resize",document.body.style.userSelect="none";var r=function(e){m(!0);var r=o+(e.clientX-t);s(n,r>v?r:v)},u=function(){m(!1),document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",u),document.body.style.cursor="default",document.body.style.userSelect="auto"};document.addEventListener("mousemove",r),document.addEventListener("mouseup",u)}}),[l,v])}}function s(){var e=u(),t=e.x,r=e.setScrollX,c=n(null);return o((function(){var e=function(){c.current&&r(c.current.scrollLeft)};return c.current&&c.current.addEventListener("scroll",e),function(){c.current&&c.current.removeEventListener("scroll",e)}}),[]),o((function(){c.current&&(c.current.scrollLeft=t)}),[t]),c}export{c as useResizeColWidthHook,s as useScrollXRef};
2
+ //# sourceMappingURL=header-v2-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-v2-hook.js","sources":["../../../../../src/table/header/header-v2-hook.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useColumnsWidth } from \"./columns-width\";\nimport { useScrollXPosition } from \"./x-scroll-position\";\n\nexport function useResizeColWidthHook(keyName: string) {\n const { getColumnWidth, getColumnMinWidth, setColWidth } = useColumnsWidth();\n const [isDragging, setIsDragging] = useState(false);\n\n const colWidth = getColumnWidth(keyName);\n const minWidth = getColumnMinWidth(keyName);\n\n const cursorStyle = \"col-resize\";\n\n const onMouseDownResizeWidth: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n if (isDragging) return;\n\n const startX = e.clientX;\n const startWidth = colWidth;\n\n document.body.style.cursor = cursorStyle;\n document.body.style.userSelect = \"none\";\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n setIsDragging(true);\n const newWidth = startWidth + (moveEvent.clientX - startX);\n setColWidth(keyName, newWidth > minWidth ? newWidth : minWidth);\n };\n\n const onMouseUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.body.style.cursor = \"default\";\n document.body.style.userSelect = \"auto\";\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n },\n [isDragging, minWidth]\n );\n\n return {\n onMouseDownResizeWidth,\n };\n}\n\nexport function useScrollXRef() {\n const { x, setScrollX } = useScrollXPosition();\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleHeaderScroll = () => {\n if (ref.current) {\n setScrollX(ref.current.scrollLeft);\n }\n };\n\n if (ref.current) {\n ref.current.addEventListener(\"scroll\", handleHeaderScroll);\n }\n\n return () => {\n if (ref.current) {\n ref.current.removeEventListener(\"scroll\", handleHeaderScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.scrollLeft = x;\n }\n }, [x]);\n\n return ref;\n}\n"],"names":["useResizeColWidthHook","keyName","_a","useColumnsWidth","getColumnWidth","getColumnMinWidth","setColWidth","_b","useState","isDragging","setIsDragging","colWidth","minWidth","onMouseDownResizeWidth","useCallback","e","startX","clientX","startWidth","document","body","style","cursor","userSelect","onMouseMove","moveEvent","newWidth","onMouseUp","removeEventListener","addEventListener","useScrollXRef","useScrollXPosition","x","setScrollX","ref","useRef","useEffect","handleHeaderScroll","current","scrollLeft"],"mappings":"yRAIM,SAAUA,EAAsBC,GAC9B,IAAAC,EAAqDC,IAAnDC,EAAcF,EAAAE,eAAEC,EAAiBH,EAAAG,kBAAEC,EAAWJ,EAAAI,YAChDC,EAA8BC,GAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAE1BI,EAAWP,EAAeH,GAC1BW,EAAWP,EAAkBJ,GAmCnC,MAAO,CACLY,uBA/BAC,GACE,SAACC,GACC,IAAIN,EAAJ,CAEA,IAAMO,EAASD,EAAEE,QACXC,EAAaP,EAEnBQ,SAASC,KAAKC,MAAMC,OAVN,aAWdH,SAASC,KAAKC,MAAME,WAAa,OAEjC,IAAMC,EAAc,SAACC,GACnBf,GAAc,GACd,IAAMgB,EAAWR,GAAcO,EAAUR,QAAUD,GACnDV,EAAYL,EAASyB,EAAWd,EAAWc,EAAWd,EACxD,EAEMe,EAAY,WAChBjB,GAAc,GACdS,SAASS,oBAAoB,YAAaJ,GAC1CL,SAASS,oBAAoB,UAAWD,GACxCR,SAASC,KAAKC,MAAMC,OAAS,UAC7BH,SAASC,KAAKC,MAAME,WAAa,MACnC,EAEAJ,SAASU,iBAAiB,YAAaL,GACvCL,SAASU,iBAAiB,UAAWF,EAvBd,CAwBzB,GACA,CAAClB,EAAYG,IAMnB,UAEgBkB,IACR,IAAA5B,EAAoB6B,IAAlBC,EAAC9B,EAAA8B,EAAEC,EAAU/B,EAAA+B,WACfC,EAAMC,EAAuB,MA0BnC,OAxBAC,GAAU,WACR,IAAMC,EAAqB,WACrBH,EAAII,SACNL,EAAWC,EAAII,QAAQC,WAE3B,EAMA,OAJIL,EAAII,SACNJ,EAAII,QAAQT,iBAAiB,SAAUQ,GAGlC,WACDH,EAAII,SACNJ,EAAII,QAAQV,oBAAoB,SAAUS,EAE9C,CACD,GAAE,IAEHD,GAAU,WACJF,EAAII,UACNJ,EAAII,QAAQC,WAAaP,EAE7B,GAAG,CAACA,IAEGE,CACT"}
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{memo as r,useRef as i,useEffect as o,useCallback as l,useMemo as n}from"react";import{useColumnsWidthState as a}from"./columns-width/context.js";import"../../../node_modules/tslib/tslib.es6.js";import{useResizeColWidthHook as s,useScrollXRef as c}from"./header-v2-hook.js";import{AllCheckbox as d}from"../checkbox/components.js";import{ConditionSearchBar as m}from"../../search-bar/condition-search-bar/base.js";import{useTableIdGenerator as h}from"../id/provider.js";import{useFilter as u}from"../filter-v2/context.js";function p(r){var i=h(),s=a().getColumnWidth,p=u(),b=p.conditions,y=p.addFilter,v=p.removeFilter,x=c();o((function(){if(x.current){var e=x.current,t=function(t){0!==t.deltaY&&(t.preventDefault(),e.scrollLeft+=t.deltaY)};return e.addEventListener("wheel",t),function(){e.removeEventListener("wheel",t)}}}),[x]);var g=l((function(e){switch(e.type){case"add":y(e.payload.condition);break;case"remove":v(e.payload.index)}}),[]),w=n((function(){return r.cols.filter((function(e){return!!e.label&&(e.editable||!e.editable&&!e.render)})).map((function(e){switch(e.type){case"string":case"number":return{key:e.key.toString(),label:e.label,type:e.type};case"select":return{key:e.key.toString(),label:e.label,type:e.type,options:e.options}}}))}),[r.cols]);return e("div",{className:"border-gray-200 bg-gray-200 text-gray-600 rounded-t-md",style:{maxWidth:r.maxWidth},children:[t("div",{className:"py-2 px-2",children:t(m,{id:i.getTableHeaderId(),targets:w,conditions:b,onChangeCondition:g,size:"small"})}),t("div",{ref:x,className:"relative max-w-full overflow-x-auto no_scrollbar",children:e("div",{className:"flex h-[32px]",children:[r.checkbox&&t("th",{className:"w-8 h-full",children:t(d,{rows:r.rows})}),r.cols.map((function(e){return t(f,{keyName:e.key.toString(),label:e.label,colWidth:s(e.key),disableSort:e.disableSort||!e.editable&&!!e.render,generateSortButton:r.generateSortButton},e.key.toString())}))]})})]})}var f=r((function(r){var o=i(null),l=s(r.keyName).onMouseDownResizeWidth,n=o.current?r.colWidth-o.current.clientWidth:r.colWidth;return e("div",{className:"relative",style:{width:r.colWidth,maxWidth:r.colWidth,minWidth:r.colWidth},children:[e("div",{className:"flex justify-between items-center bg-gray-200 text-gray-600 h-[32px]",children:[t("div",{className:"px-2",style:{maxWidth:n},children:r.label&&t("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis",children:r.label})}),t("div",{ref:o,className:"flex items-center w-fit shrink-0 gap-1 px-1",children:!r.disableSort&&r.generateSortButton&&r.generateSortButton(r.keyName)})]}),t("div",{className:"absolute top-0 right-0 grid place-items-end py-1 w-[4px] h-full cursor-col-resize",onMouseDown:l,children:t("div",{className:"w-[1px] h-full bg-white"})})]})}));export{p as TableHeader};
2
+ //# sourceMappingURL=header-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-v2.js","sources":["../../../../../src/table/header/header-v2.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { DataObject, DataRecord, TTableColumn } from \"../table/type\";\nimport { useColumnsWidthState } from \"./columns-width\";\nimport { useResizeColWidthHook, useScrollXRef } from \"./header-v2-hook\";\nimport { AllCheckbox } from \"../checkbox/components\";\nimport { ConditionSearchBar } from \"../../search-bar\";\nimport { useTableIdGenerator } from \"../id\";\nimport { useFilter } from \"../filter-v2\";\nimport { TConditionChangeAction } from \"../../search-bar/condition-search-bar/condition-input-management/type\";\n\ninterface IPropsTableHeader<T extends DataRecord> {\n cols: TTableColumn<T>[];\n checkbox?: boolean;\n rows: DataObject<T>[];\n maxWidth?: string;\n generateSortButton?: (columnKey: string) => React.ReactNode;\n}\n\nexport function TableHeader<T extends DataRecord>(props: IPropsTableHeader<T>) {\n const idGenerator = useTableIdGenerator();\n const { getColumnWidth } = useColumnsWidthState();\n const { conditions, addFilter, removeFilter } = useFilter();\n const ref = useScrollXRef();\n\n useEffect(() => {\n if (ref.current) {\n const element = ref.current;\n\n const scrollX = (e: WheelEvent) => {\n if (e.deltaY === 0) return;\n\n e.preventDefault();\n element.scrollLeft += e.deltaY;\n };\n\n element.addEventListener(\"wheel\", scrollX);\n\n return () => {\n element.removeEventListener(\"wheel\", scrollX);\n };\n }\n }, [ref]);\n\n const onChangeCondition = useCallback((action: TConditionChangeAction) => {\n switch (action.type) {\n case \"add\":\n addFilter(action.payload.condition);\n break;\n case \"remove\":\n removeFilter(action.payload.index);\n break;\n }\n }, []);\n\n const targets = useMemo(() => {\n return props.cols\n .filter(\n (col) => !!col.label && (col.editable || (!col.editable && !col.render))\n )\n .map((col) => {\n switch (col.type) {\n case \"string\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n };\n case \"number\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n };\n case \"select\":\n return {\n key: col.key.toString(),\n label: col.label as string,\n type: col.type,\n options: col.options,\n };\n }\n });\n }, [props.cols]);\n\n return (\n <div\n className=\"border-gray-200 bg-gray-200 text-gray-600 rounded-t-md\"\n style={{ maxWidth: props.maxWidth }}\n >\n <div className=\"py-2 px-2\">\n <ConditionSearchBar\n id={idGenerator.getTableHeaderId()}\n targets={targets}\n conditions={conditions}\n onChangeCondition={onChangeCondition}\n size=\"small\"\n />\n </div>\n\n <div\n ref={ref}\n className=\"relative max-w-full overflow-x-auto no_scrollbar\"\n >\n <div className=\"flex h-[32px]\">\n {props.checkbox && (\n <th className=\"w-8 h-full\">\n <AllCheckbox rows={props.rows} />\n </th>\n )}\n {props.cols.map((col) => {\n return (\n <HeaderElement\n key={col.key.toString()}\n keyName={col.key.toString()}\n label={col.label}\n colWidth={getColumnWidth(col.key as string)}\n disableSort={col.disableSort || (!col.editable && !!col.render)}\n generateSortButton={props.generateSortButton}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\ninterface IPropsHeaderElement {\n keyName: string;\n label?: string;\n colWidth: number;\n disableSort?: boolean;\n generateSortButton?: (columnKey: string) => React.ReactNode;\n}\n\nconst HeaderElement = memo(function HE(props: IPropsHeaderElement) {\n const ref = useRef<HTMLDivElement>(null);\n const { onMouseDownResizeWidth } = useResizeColWidthHook(props.keyName);\n\n const maxWidthLabel = ref.current\n ? props.colWidth - ref.current.clientWidth\n : props.colWidth;\n\n return (\n <div\n className=\"relative\"\n style={{\n width: props.colWidth,\n maxWidth: props.colWidth,\n minWidth: props.colWidth,\n }}\n >\n <div\n className={`flex justify-between items-center bg-gray-200 text-gray-600 h-[32px]`}\n >\n <div className=\"px-2\" style={{ maxWidth: maxWidthLabel }}>\n {props.label && (\n <p\n className={`text-left font-bold text-nowrap overflow-hidden text-ellipsis`}\n >\n {props.label}\n </p>\n )}\n </div>\n\n <div ref={ref} className=\"flex items-center w-fit shrink-0 gap-1 px-1\">\n {!props.disableSort &&\n props.generateSortButton &&\n props.generateSortButton(props.keyName)}\n </div>\n </div>\n <div\n className=\"absolute top-0 right-0 grid place-items-end py-1 w-[4px] h-full cursor-col-resize\"\n onMouseDown={onMouseDownResizeWidth}\n >\n <div className={`w-[1px] h-full bg-white`} />\n </div>\n </div>\n );\n});\n"],"names":["TableHeader","props","idGenerator","useTableIdGenerator","getColumnWidth","useColumnsWidthState","_a","useFilter","conditions","addFilter","removeFilter","ref","useScrollXRef","useEffect","current","element_1","scrollX_1","e","deltaY","preventDefault","scrollLeft","addEventListener","removeEventListener","onChangeCondition","useCallback","action","type","payload","condition","index","targets","useMemo","cols","filter","col","label","editable","render","map","key","toString","options","_jsxs","className","style","maxWidth","children","_jsx","ConditionSearchBar","id","getTableHeaderId","size","checkbox","AllCheckbox","rows","HeaderElement","keyName","colWidth","disableSort","generateSortButton","memo","useRef","onMouseDownResizeWidth","useResizeColWidthHook","maxWidthLabel","clientWidth","width","minWidth","onMouseDown"],"mappings":"ikBAkBM,SAAUA,EAAkCC,GAChD,IAAMC,EAAcC,IACZC,EAAmBC,mBACrBC,EAA0CC,IAAxCC,EAAUF,EAAAE,WAAEC,EAASH,EAAAG,UAAEC,EAAYJ,EAAAI,aACrCC,EAAMC,IAEZC,GAAU,WACR,GAAIF,EAAIG,QAAS,CACf,IAAMC,EAAUJ,EAAIG,QAEdE,EAAU,SAACC,GACE,IAAbA,EAAEC,SAEND,EAAEE,iBACFJ,EAAQK,YAAcH,EAAEC,OAC1B,EAIA,OAFAH,EAAQM,iBAAiB,QAASL,GAE3B,WACLD,EAAQO,oBAAoB,QAASN,EACvC,CACD,CACH,GAAG,CAACL,IAEJ,IAAMY,EAAoBC,GAAY,SAACC,GACrC,OAAQA,EAAOC,MACb,IAAK,MACHjB,EAAUgB,EAAOE,QAAQC,WACzB,MACF,IAAK,SACHlB,EAAae,EAAOE,QAAQE,OAGjC,GAAE,IAEGC,EAAUC,GAAQ,WACtB,OAAO9B,EAAM+B,KACVC,QACC,SAACC,GAAQ,QAAEA,EAAIC,QAAUD,EAAIE,WAAcF,EAAIE,WAAaF,EAAIG,WAEjEC,KAAI,SAACJ,GACJ,OAAQA,EAAIR,MACV,IAAK,SAML,IAAK,SACH,MAAO,CACLa,IAAKL,EAAIK,IAAIC,WACbL,MAAOD,EAAIC,MACXT,KAAMQ,EAAIR,MAEd,IAAK,SACH,MAAO,CACLa,IAAKL,EAAIK,IAAIC,WACbL,MAAOD,EAAIC,MACXT,KAAMQ,EAAIR,KACVe,QAASP,EAAIO,SAGrB,GACJ,GAAG,CAACxC,EAAM+B,OAEV,OACEU,SACEC,UAAU,yDACVC,MAAO,CAAEC,SAAU5C,EAAM4C,UAAUC,SAAA,CAEnCC,SAAKJ,UAAU,YACbG,SAAAC,EAACC,EACC,CAAAC,GAAI/C,EAAYgD,mBAChBpB,QAASA,EACTtB,WAAYA,EACZe,kBAAmBA,EACnB4B,KAAK,YAITJ,SACEpC,IAAKA,EACLgC,UAAU,mDAAkDG,SAE5DJ,SAAKC,UAAU,gBACZG,SAAA,CAAA7C,EAAMmD,UACLL,EAAI,KAAA,CAAAJ,UAAU,aAAYG,SACxBC,EAACM,EAAW,CAACC,KAAMrD,EAAMqD,SAG5BrD,EAAM+B,KAAKM,KAAI,SAACJ,GACf,OACEa,EAACQ,EAAa,CAEZC,QAAStB,EAAIK,IAAIC,WACjBL,MAAOD,EAAIC,MACXsB,SAAUrD,EAAe8B,EAAIK,KAC7BmB,YAAaxB,EAAIwB,cAAiBxB,EAAIE,YAAcF,EAAIG,OACxDsB,mBAAoB1D,EAAM0D,oBALrBzB,EAAIK,IAAIC,WAQlB,WAKX,CAUA,IAAMe,EAAgBK,GAAK,SAAY3D,GACrC,IAAMU,EAAMkD,EAAuB,MAC3BC,EAA2BC,EAAsB9D,EAAMuD,SAAQM,uBAEjEE,EAAgBrD,EAAIG,QACtBb,EAAMwD,SAAW9C,EAAIG,QAAQmD,YAC7BhE,EAAMwD,SAEV,OACEf,EACE,MAAA,CAAAC,UAAU,WACVC,MAAO,CACLsB,MAAOjE,EAAMwD,SACbZ,SAAU5C,EAAMwD,SAChBU,SAAUlE,EAAMwD,UAGlBX,SAAA,CAAAJ,EAAA,MAAA,CACEC,UAAW,iFAEXI,EAAK,MAAA,CAAAJ,UAAU,OAAOC,MAAO,CAAEC,SAAUmB,GACtClB,SAAA7C,EAAMkC,OACLY,OACEJ,UAAW,gEAEVG,SAAA7C,EAAMkC,UAKbY,EAAA,MAAA,CAAKpC,IAAKA,EAAKgC,UAAU,8CACtBG,UAAC7C,EAAMyD,aACNzD,EAAM0D,oBACN1D,EAAM0D,mBAAmB1D,EAAMuD,cAGrCT,EAAA,MAAA,CACEJ,UAAU,oFACVyB,YAAaN,EAAsBhB,SAEnCC,EAAK,MAAA,CAAAJ,UAAW,gCAIxB"}